kern/132554: [ipl] There is no ippool start script/ipfilter magic to load them

Jason Loretz jl at coastallighthouse.com
Sat Dec 5 04:40:03 UTC 2009


The following reply was made to PR kern/132554; it has been noted by GNATS.

From: Jason Loretz <jl at coastallighthouse.com>
To: bug-followup at FreeBSD.org, axel at axel.truedestiny.net
Cc:  
Subject: Re: kern/132554: [ipl] There is no ippool start script/ipfilter magic to load them
Date: Fri, 4 Dec 2009 23:10:12 -0500

 The ippools feature is quite useful and would be nice to have automatically start with the IPF startup script (as part of FreeBSD rather than a system administrator insert/tweek). The actual functionality already exists in the current 7.1 release and just needs hooks to properly startup and reload/flush configurations in sync with ipfilter. This functionality appears that it should reside in the ipfilter rc.d script since ippools will not work until "ipf -E" has been executed but also needs to be configure d previous to the "ipf -f" commands. Therefore I submit these diffs as a possible solution, which will provide the appropriate rc.conf options and modifications to rc.d/ipfilter to make it load and flush in the correct places during the ipf configuration. I took a stab, but needs work, at modifications to the firewall handbook page to include information on ippools. This no doubt will need some work if it can be included.
 
 Thanks, Jason
 
 --- rc.conf.diff begins here ---
 --- /usr/src/etc/defaults/rc.conf	2008-11-24 21:59:29.000000000 -0500
 +++ /etc/defaults/rc.conf	2009-11-30 20:43:10.000000000 -0500
 @@ -152,6 +152,12 @@
  ipfilter_rules="/etc/ipf.rules"	# rules definition file for ipfilter, see
  				# /usr/src/contrib/ipfilter/rules for examples
  ipfilter_flags=""		# additional flags for ipfilter
 +ipfilter_ippool_enable="NO"	# Set to YES to enable ippool functionality
 +ippool_program="/sbin/ippool"	# where the ippool program lives
 +ippool_rules="/etc/ippool.conf"	# rules definition file for ippool, see     
 +				# /usr/src/contrib/ipfilter/rules/pool.conf
 +				# for example
 +ippool_flags=""			# additional flags for ippool
  ipnat_enable="NO"		# Set to YES to enable ipnat functionality
  ipnat_program="/sbin/ipnat"	# where the ipnat program lives
  ipnat_rules="/etc/ipnat.rules"	# rules definition file for ipnat
 --- rc.conf.diff ends here ---
 
 --- ipfilter.diff begins here --- 
 --- /usr/src/etc/rc.d/ipfilter	2008-11-24 21:59:29.000000000 -0500
 +++ /etc/rc.d/ipfilter	2009-12-01 09:19:43.000000000 -0500
 @@ -33,6 +33,14 @@
  	if [ `sysctl -n net.inet.ipf.fr_running` -le 0 ]; then
  		${ipfilter_program:-/sbin/ipf} -E
  	fi
 +	if checkyesno ipfilter_ippool_enable; then
 +		if [ -r "${ippool_rules}" ]; then
 +			echo "Loading ippool rules."
 +			${ippool_program:-/sbin/ippool} \
 +			    -f "${ippool_rules}" ${ippool_flags}
 +		fi
 +	fi
 +	echo "Loading ipfilter rules."
  	${ipfilter_program:-/sbin/ipf} -Fa
  	if [ -r "${ipfilter_rules}" ]; then
  		${ipfilter_program:-/sbin/ipf} \
 @@ -58,8 +66,16 @@
  
  ipfilter_reload()
  {
 -	echo "Reloading ipfilter rules."
 +	if checkyesno ipfilter_ippool_enable; then
 +		if [ -r "${ippool_rules}" ]; then
 +			echo "Reloading ippool rules."
 +			${ippool_program:-/sbin/ippool} -F
 +			${ippool_program:-/sbin/ippool} \
 +			    -f "${ippool_rules}" ${ippool_flags}
 +		fi
 +	fi
  
 +	echo "Reloading ipfilter rules."
  	${ipfilter_program:-/sbin/ipf} -I -Fa
  	if [ -r "${ipfilter_rules}" ]; then
  		${ipfilter_program:-/sbin/ipf} -I \
 --- ipfilter.diff ends here ---
 
 --- chapter.sgml.diff begins here ---
 --- /usr/doc/en_US.ISO8859-1/books/handbook/firewalls/chapter.sgml	2009-11-27 12:11:33.000000000 -0500
 +++ /tmp/chapter.sgml	2009-12-04 20:19:23.000000000 -0500
 @@ -653,6 +653,16 @@
                                    # v = log tcp window, ack, seq
                                    # n = map IP &amp; port to names</programlisting>
  
 +      <para>If the use of ippools is desired, the following lines need to be
 +        added to enable the ippool functionality:</para>
 +
 +      <programlisting>ipfilter_ippool_enable="NO"     # Set to YES to enable ippool functionality
 +ippool_program="/sbin/ippool"   # where the ippool program lives
 +ippool_rules="/etc/ippool.conf" # rules definition file for ippool, see     
 +                                # /usr/src/contrib/ipfilter/rules/pool.conf
 +                                # for example
 +ippool_flags=""                 # additional flags for ippool</programlisting>
 +
        <para>If there is a LAN behind this firewall that uses the
  	reserved private IP address ranges, the following lines will have to
  	be added to enable <acronym>NAT</acronym>
 @@ -701,6 +711,26 @@
      </sect2>
  
      <sect2>
 +      <title>IPPOOL</title>
 +
 +      <indexterm><primary><command>ippool</command></primary></indexterm>
 +
 +      <para>The &man.ippool.8; command is used to load your ippool
 +        configuration file. The following commands can be used to flush
 +        the loaded pools from the kernel and then load a pool configuration
 +        from a file:</para>
 +
 +      <screen>&prompt.root; <userinput>ippool -F</userinput>
 +        &prompt.root; <userinput>ippool -f /etc/ippool.conf</userinput></screen>
 +
 +      <para>See the &man.ippool.8; manual page for details on the other
 +        flags available with this command.</para>
 +
 +      <para>The &man.ippool.8; command expects the configuration file to be a
 +        standard text file.</para>
 +    </sect2>
 +
 +    <sect2>
        <title>IPFSTAT</title>
  
        <indexterm><primary><command>ipfstat</command></primary></indexterm>
 --- chapter.sgml.diff ends here ---


More information about the freebsd-net mailing list