Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 May 2001 22:48:42 -0400
From:      Doug Lee <dgl@visi.com>
To:        Chuck Rouillard <chuckr@opus.sandiegoca.ncr.com>
Cc:        Jason Borkowsky <jcborkow@tcpns.com>, questions@FreeBSD.ORG
Subject:   Re: DHCP and IPFW
Message-ID:  <20010530224842.B33752@kirk.sector14.net>
In-Reply-To: <Pine.BSF.4.31.0105301604250.40943-100000@opus.sandiegoca.ncr.com>; from chuckr@opus.sandiegoca.ncr.com on Wed, May 30, 2001 at 04:27:40PM -0700
References:  <Pine.BSF.4.21.0105301411440.44433-100000@bemused.tcpns.com> <Pine.BSF.4.31.0105301604250.40943-100000@opus.sandiegoca.ncr.com>

next in thread | previous in thread | raw e-mail | index | archive | help
FWIW, I use the following code at the top of my equivalent of
/etc/rc.firewall.  The point is to automate the retrieval of as much
info as possible.  When this block is done, $iif/$oif (manually set)
are the interfaces, $iip/$oip the ips, and $imask/$omask the netmasks,
per usual.  $inet/$onet are the full net specs (basically $inet/$onet
from rc.firewall plus $imask/$omask as appropriate).  $iIsNotSubnet
and $oIsNotSubnet indicate whether the internal/external interfaces
are single ips or subnets.  Finally, $oif can be specified on the
command line of the shell script from which I'm drawing this code, in
which case all the $o... variables come from that interface.  This
lets me do something like

sh /etc/rc.firewall tun0

to quickly realign the firewall around a PPP link, say, when my
high-speed link goes down.

# Suck in the configuration variables (this block is straight from rc.firewall).
if [ -r /etc/defaults/rc.conf ]; then
	. /etc/defaults/rc.conf
	source_rc_confs
elif [ -r /etc/rc.conf ]; then
	. /etc/rc.conf
fi

# Get the specs on the inside interface.
iif=dc0
iip=`ifconfig $iif inet |awk '/inet/ {print $2;}'`
iIsNotSubnet=
if [ "`ifconfig $iif |grep TOPOINT`" ]; then
  iIsNotSubnet=1
fi
if [ "$iIsNotSubnet" ]; then
  imask=255.255.255.255
  inet=${iip}
else
  imask=`ifconfig $iif inet |awk '/inet/ {print $4;}'`
  inet=${iip}:${imask}
fi

# Get the specs on the external interface.
# The interface name can be passed to this script; useful for ppp links.
if [ "x$1" != "x" ]; then
  oif=$1
else
  oif=ed0
fi
oip=`ifconfig $oif inet |awk '/inet/ {print $2;}'`
oIsNotSubnet=1   # NOTE: explicitly set as single ip
if [ "`ifconfig $oif |grep TOPOINT`" ]; then
  oIsNotSubnet=1
fi
if [ "$oIsNotSubnet" ]; then
  omask=255.255.255.255
  onet=${oip}
else
  omask=`ifconfig $oif inet |awk '/inet/ {print $4;}'`
  onet=${oip}:${omask}
fi


On Wed, May 30, 2001 at 04:27:40PM -0700, Chuck Rouillard wrote:
> 
> 
> [snip]
> 
> I'm guessing IP changes are central to this question.
> If so, configure your ruleset(s) using variables. For
> example:
> 
> oif="ed0"
> iif="ed1"
> dns0="xxx.xxx.xxx.xxx"
> dns1="yyy.yyy.yyy.yyy"
> 
> and possibly:
> 
> dhcp0="zzz.zzz.zzz.zzz"
> ...
> 
> Then, specify interfaces and IPs like ${oif}, ${iif},
> and ${dns0} in your ruleset(s).
> 
> 
> .cr
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-questions" in the body of the message

-- 
Doug Lee           dgl@visi.com        http://www.visi.com/~dgl
Bartimaeus Group   doug@bartsite.com   http://www.bartsite.com
"I before E, except after C, or when sounded like A, as in neighbor
and weigh, except for when weird foreign concierges seize neither
leisure nor science from the height of society."

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010530224842.B33752>