Success! (was Transparent Firewalling)

Nathan Le Nevez psyex at webone.com.au
Tue Jan 15 08:39:05 EST 2002


Guys,

Thanks for all your help. I did manage to get it working perfectly. For those
of you who wanted to know how to do it, here is my version:

I have a BSD Gauntlet firewall (which is our gateway machine) sitting on 10.2.1.1,
with the LAN on 10.2.1.x (netmask of 255.255.255.0). 

I built a new linux box with two ethernet cards, and connected eth0 to the 10.2.1.x
network. I disconnected the gateway machine and ran a cross over cable from
it, into eth1 on our new box. 

The next step, was to do the Proxy ARP stuff:

echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward

I then have to trick the network into thinking its directly connected to the
gateway, by spoofing the ARP request:

/sbin/arp -i eth0 -Ds 10.2.1.1 eth0 netmask 255.255.255.255 pub

This works in two directions, so I needed to trick the gateway machine into
thinking its directly connected to the LAN:

/sbin/arp -i eth1 -Ds 10.2.1.2 eth1 netmask 255.255.255.255 pub
/sbin/arp -i eth1 -Ds 10.2.1.3 eth1 netmask 255.255.255.255 pub
/sbin/arp -i eth1 -Ds 10.2.1.4 eth1 netmask 255.255.255.255 pub
/sbin/arp -i eth1 -Ds 10.2.1.5 eth1 netmask 255.255.255.255 pub
..

(I needed to add one for each machine, because apparently you cant use a proper
netmask with ARP)

Now to get it all working, I needed to flush the ARP caches on all your machines
(this will happen automatically after a few minutes).

I can now ping 10.2.1.1 from any 10.2.1.x machine, and 10.2.1.1 can ping any
other machine. 

I didnt need to add any firewalling rules, just some Accounting rules so I can
count bytes going in and out, so I added some IPTables rules like so:

iptables -N 10.2.1.8
iptables -A FORWARD -s 10.2.1.8 -d 0/0 -j 10.2.1.8
iptables -A FORWARD -s 0/0 -d 10.2.1.8 -j 10.2.1.8
iptables -A 10.2.1.8 -i eth0 -o eth1
iptables -A 10.2.1.8 -i eth1 -o eth0

To view the packet counters:

iptables -nL -v -x

Thanks to everyone who provided help!

Cheers,

Nathan





More information about the linux mailing list