/etc/rc.d/ipfw can't deal with firewall_type?
KIRIYAMA Kazuhiko
kiri at pis.elm.toba-cmt.ac.jp
Wed May 4 01:40:15 UTC 2011
At Wed, 4 May 2011 03:47:02 +1000 (EST),
Ian Smith wrote:
>
> On Wed, 4 May 2011, KIRIYAMA Kazuhiko wrote:
> > Hi all,
> > Recently I upgraded to 8.2-STABLE and reconfigured natd + jailed box, but
> > all packets could not over nat box. I've researched and found
> > /etc/rc.firewall does not recieve argument of firewall_type. So ipfw does
> > not divert and natd could not be performed. The reason is /etc/rc.d/ipfw
> > incorrect. I think an patch below should be applyed to /etc/rc.d/ipfw. Is
> > there any problem to do this?
>
> Yes. Assuming using the default firewall_script="/etc/rc.firewall",
> then as it says early in /etc/rc.firewall, you just needed to:
>
> # Define the firewall type in /etc/rc.conf. Valid values are:
> [..]
>
> Sure, /etc/rc.firewall can set firewall_type to a parameter if you pass
> it one, but otherwise uses whatever $firewall_type is set to when you
> start ipfw. I guess the code below allows you to use syntax like:
>
> # /etc/rc.d/ipfw start client
I missed it intended to use in commandline but usually /etc/rc.d/* script
uses at startup rc. If /etc/rc.d/ipfw must be 2 arguments,firewall_type
always undefined at startup nevertheless it specified in /etc/rc.conf. It
is the very serious problem isn't it?
> to override the $firewall_type set in /etc/rc.conf, but it's not the
> common usage, nor is it how ipfw is started normally by rc.
>
> So just set firewall_type in rc.conf and you should be fine .. unless
> you meant that you're trying to run ipfw & natd INSIDE a jail?
The network being configure is as follows:
xxxx.xxxx.xxxx.xxxx/27
-------------------------+----------------------------------------
|53
+----------------------+---------------------------------------+
| bge0 jailed natd box |
| t2.st.foo (ipfw `OPEN') |
| +--------+--------+--------+--------+--------+--------+
|firewall| ns | ldap |diskless| mail | web | ftp |
| bge1 | bge1 | bge1 | bge1 | bge1 | bge1 | bge1 |
+----+---+----+---+----+---+----+---+----+---+----+---+----+---+
254| 1| 2| 3| 4| 5| 6|
-------+--------+--------+--------+--------+--------+--------+----
192.168.2.0/24
> cheers, Ian
>
> > --- /etc/rc.d/ipfw.org 2011-05-03 18:19:28.000000000 +0900
> > +++ /etc/rc.d/ipfw 2011-05-03 22:08:14.000000000 +0900
> > @@ -35,15 +35,11 @@
> >
> > ipfw_start()
> > {
> > - local _firewall_type
> > -
> > - _firewall_type=$1
> > -
> > # set the firewall rules script if none was specified
> > [ -z "${firewall_script}" ] && firewall_script=/etc/rc.firewall
> >
> > if [ -r "${firewall_script}" ]; then
> > - /bin/sh "${firewall_script}" "${_firewall_type}"
> > + /bin/sh "${firewall_script}" "${firewall_type}"
> > echo 'Firewall rules loaded.'
> > elif [ "`ipfw list 65535`" = "65535 deny ip from any to any" ]; then
> > echo 'Warning: kernel has firewall functionality, but' \
For the case of commandline usage, above patch should be modified as
follows:
--- /etc/rc.d/ipfw.org 2011-05-03 18:19:28.000000000 +0900
+++ /etc/rc.d/ipfw 2011-05-04 09:31:09.000000000 +0900
@@ -37,7 +37,11 @@
{
local _firewall_type
- _firewall_type=$1
+ if [ -n "${1}" ]; then
+ _firewall_type=$1
+ elif [ -n "${firewall_type}" ]
+ _firewall_type=${firewall_type}
+ fi
# set the firewall rules script if none was specified
[ -z "${firewall_script}" ] && firewall_script=/etc/rc.firewall
More information about the freebsd-stable
mailing list