On Tue, 5 Aug 2008 20:34:09 -0600
Duncan Patton a Campbell <[EMAIL PROTECTED]> wrote:
> Howdy List?
>
> As some of you may have gathered from previous posts, I have been
> working on a pf configuration that will allow a gateway firewall
> machine to talk to two or more ISP services and allow for the
> differential routing of data connections from client's services
> both behind the firewall and on it (e.g. a TOR, HTTP server or other proxy).
>
> An additional complexity is introduced in that most prospective
> users of such a configuration are small to medium businessess that
> engage only DHCP services from ISPs. This means the IP address,
> default route and name servers associated with a particular service
> provider can (and do) change over the period the firewall gate
> is up for, moreover the lease times granted can change from time
> to time. Also, nameservers for most ISP are configured to only
> answer queries from the ISP's subnet(s) and the standard dhclient-
> script does not accomodate this.
>
> In order to make such a configuration work, I introduce some hacks
> into the dhclient-script such that when the dhclient processess
> associated with a particular interface are triggered to renew
> a lease, a piece of prolog code is called that touches the following
> configs:
>
> file data mod
>
> /etc/pf.conf gatewayIP
> /etc/resolv.conf nameservers (for default route)
> /etc/dhclient.conf nameservers (for dhclient routes)
This should NOT state dhclient.conf. It is, in fact dhcpd.conf that
is modified with the nameservers for dhclients on the internal net.
Dhu
> [routetable] default route for firewall
>
> To do this, I create a directory, /etc/pf, containing the following files:
>
> file purpose
>
> dhclient-script dhclient-script modified to call
> replall from
> add_new_routes() subroutine, and stub
> add_new_resolv_conf() as resolv.conf must
> only reference nameservers for the default
> route;
> slink'd to /sbin/dhclient-script.
> dhcpd.cnf.[interface] one for each internal interface
> to provision dhcpd services
> droute.IF define the firewall's default route interface
> pf.cnf template pf ruleset into which the
> specific
> interface gateways are inserted (replall looks
> for lines begining with ext_gw_{IFN} ).
> replall slink to compiled gprolog code hooked
> from
> dhclient-script that does the various
> manipulations.
> gplg/Makefile make for gprolog code
> gplg/dlib.pl prolog support code -- dlib==duncan's lib;)
> gplg/replall gprolog executable
> gplg/replall.pl gprolog source
>
>
> A completed working instance of this scheme can be found at:
>
> http://neotext.ca/RefR/pf.dhcp/
>
> It has been tested on a machine with 1 static and 1 DHCP gateway as
> well as on a machine with 2 DHCP gateways.
>
> And yes, I know that most of you will think I'm daft to use prolog for
> a task that could be done in sh/perl/python. It's really just a matter
> of what you are most comfortable with... if a good reason comes up I might
> recode it in C.
>
> Dhu