On Tue, 2007-03-27 at 17:32 +0200, Pierre JUHEN wrote: > Suggested reading : http://www.ssi.bg/~ja/nano.txt > > It explains how the routing is done. > > Using the ROUTE patch, you force the routing outside the > routing table. > > When a packet comes back on an established connection, > the kernel lookup in the cache, with the input interface > as part of the matching. > > Since in the cache, you have the other interface (ISP1) > for this connection, it doesn't route the packet. > > You should use something else than the ROUTE target, for example > what is explained in nano.txt. > > Hi I tried both methods - iptables using the ROUTE target as well as using iptables to mark the packets, then using iproute2 to lookup and route using a table with an ip fwmark rule. In both cases, the traffic is routed out and return traffic comes back in the correct interface, but it does not get NATed backed to the client. iptables -A FORWARD -i eth0 -p tcp --dport 80 -s 10.0.0.3 -j ACCEPT iptables -A FORWARD -i eth4 -p tcp --sport 80 -d 10.0.0.3 -j ACCEPT iptables -A FORWARD -t mangle -p tcp --dport 80 -s 10.0.0.3 -j MARK --set-mark 0x4 iptables -A POSTROUTING -t nat -o eth4 -p tcp --dport 80 -s 10.0.0.3 -j SNAT --to 10.1.0.2 ip rule del fwmark 4 table 4 priority 32000 ip route flush table 4 ip route add table 4 default via 10.1.0.1 ip rule add fwmark 4 table 4 priority 32000 ip route flush cache What am I doing wrong? Looking in /proc/net/ip_conntrack I can find an entry for http traffic from machine at ip 10.0.0.3 created by the SNAT rule above. When the traffic returns back in eth4 it seems to disappear on the firewall ... Regards Ray > > > Message du 27/03/07 14:54 > > De : "Ray Leach" <spoons@xxxxxxxxxx> > > A : "Netfilter" <netfilter@xxxxxxxxxxxxxxxxxxx> > > Copie à : > > Objet : Multi ISP router/firewall ... > > > > Hi All > > > > I've been trying to configure a router/firewall with 5 zones (2 of which > > are ISP links) unsuccessfully. > > > > So far I've managed to patch the kernel with the ROUTE target, and I've > > got rules as follows: > > > > FORWARD chain filter table: > > ACCEPT 0 -- ethxx0 eth4 10.0.0.0/24 0.0.0.0/0 > > ACCEPT 0 -- eth4 ethxx0 0.0.0.0/0 10.0.0.0/24 > > > > FORWARD chain mangle table: > > ROUTE tcp -- * * 10.0.0.67 !192.168.1.0/24 tcp > > dpts:80:90 ROUTE oif:eth4 continue > > > > > > POSTROUTING chain nat table: > > SNAT 0 -- * eth4 0.0.0.0/0 0.0.0.0/0 to:10.1.0.2 > > > > > > ethxx0 is my internal LAN > > eth4 is my 2nd ISP connection > > 10.0.0.67 is my workstation > > 10.1.0.2 is the ip bound to eth4 > > > > The other ISP link is working, we host around 12 websites on servers in > > our DMZ, we have outgoing web browsing, email, MSN, etc. using various > > nat rules for that interface, they all work. > > > > I can see using tcpdump that the packets are leaving my workstation, > > being mangles to change the route, going out the 2nd ISP link, coming > > back into the 2nd ISP link, but then they disappear. > > > > My forwarding rules as shown above do not show any traffic. > > > > This has me stumped. > > > > As I've stated, I have nat (both SNAT and DNAT) working on the other ISP > > interface on the same machine. > > > > Where should I start looking? > > > > Regards > > > > Ray > > -- > > Raymond Leach > > RCHQ Hobbies (http://www.rchq.co.za/) > > (T)+27-82-575-6975 (F)+27-86-652-2773 > > > > > > > > > > > -- Raymond Leach RCHQ Hobbies (http://www.rchq.co.za/) (T)+27-82-575-6975 (F)+27-86-652-2773