ipfw - natd - squid - 3 Nic's - 1 FBSD 5.1 server and routing question

Matthew Seaman m.seaman at infracaninophile.co.uk
Mon Aug 4 07:47:46 PDT 2003

On Mon, Aug 04, 2003 at 06:24:42AM -0700, fbsdquestions at worldinternet.org wrote:
> I could sure use an idea for solving the following.  We have a perfectly
> functional but saturated ds0 with our telco that is very expensive.  We
> have squid running with transparent proxy for our LAN that consists of
> about 10-15 users.  [ fwd,3128 tcp from to any 80 ]
> It works fine but still not enough bandwidth so we contracted a connection
> with a cable company that we plan to use for all outgoing requests for
> port 80 from squid.  The problem is that I can't get the outgoing requests
> from squid to use the nic that is connected to the cable company.
> Squid is setup to use the Cable companies IP
>   tcp_outgoing_address
> but since the default gateway is to the telco interface, the request is sent
> to the telco.
> I'm not sure how to make this work.  Our three nic's are set up as follows
> rl1
>   ---
> Internal Network     \
>                       \        rl0 [TelCo]
>                        ------  200.79.x.0/28    --- INTERNET
>                       /        natd-ipfw-squid
> rl2                  /         routing: default 200.79.x.1
> ---
> Cable Network
> Our firewall configuration has been reduced to the following until we can
> get this to work.
> 00100 allow ip from any to any via lo0
> 00200 deny ip from any to
> 00300 deny ip from to any
> 00400 fwd,3128 tcp from to any 80
> 65100 divert 8668 ip from any to any via rl0
> 65500 allow ip from any to any
> 65535 allow ip from any to any
> Everything works great with rl1 -> rl0 but rl2 is basically useless.
> I have tried many different approaches and none have worked.  I'm probably
> complicating it too much.
> Any help or suggestions will be appreciated.

This sounds to me like a policy based routing problem -- googling for
"policy based routing FreeBSD" in Google Groups should prove

However, the mechanism is basically the same as you've used to
implement your transparent proxy.  All you need to do is insert
another rule to trap the port 80 traffic coming out of Squid and send
the packets to the next-hop gateway on your rl2 interface.  That
presumably has it's default route set via the cable network.

Something like:

    00500 fwd tcp from me to any 80

(assuming that is the router address in the cable
companies' network.)  Since your Squid is already using a Cable
Co. address as the source address on any outgoing packets this should
cause all in- and out-going HTTP traffic to pass via the Cable
Co. network.



Dr Matthew J Seaman MA, D.Phil.                       26 The Paddocks
                                                      Savill Way
PGP: http://www.infracaninophile.co.uk/pgpkey         Marlow
Tel: +44 1628 476614                                  Bucks., SL7 1TH UK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20030804/f5bc7e6d/attachment.bin

More information about the freebsd-questions mailing list