Три интерфейса:
eth0 - локальная сеть, IP:192.168.0.2;
eth1 - ISP1, IP:82.207.101.26, GW: GW_eth1;
eth2 - ISP2, IP:192.168.1.101, GW: GW_eth2.
Посоветовали сделать так:
Пометить пакеты:
# iptables -A PREROUTING -t mangle -i eth0 -p tcp -m multiport --dport 53,80,443 -j MARK --set-mark 2
За-SNAT-ить, чтобы пакеты на след. маршрутизаторе прошли
# iptables -t nat -A POSTROUTING -s $LAN -p tcp -m multiport --dport 53,80,443 -j SNAT --to-source 192.168.1.101
Задать им маршрут:
# echo 200 eth2-out >> /etc/iproute2/rt_tables
# ip rule add fwmark 2 table eth2-out
# ip route add default via GW_eth2 dev eth2 table eth2-out
# ip route add default via GW_eth1 dev eth1
# ip route flush cache
Итог -- пакеты идут от клиента в internet, а обратно доходят до сервера и... всё.
# tcpdump port 80 -i eth2
Код: Выделить всё
15:03:08.264934 IP 192.168.1.101.1749 > 91.203.4.17.www: S 798220991:798220991(0) win 64240 <mss 1360,nop,wscale 0,nop,nop,sackOK>
15:03:08.343839 IP 91.203.4.17.www > 192.168.1.101.1749: S 1038145225:1038145225(0) ack 798220992 win 65535 <mss 1360,nop,wscale 3,sackOK,eol>
15:03:11.353925 IP 91.203.4.17.www > 192.168.1.101.1749: S 1038145225:1038145225(0) ack 798220992 win 65535 <mss 1360,nop,wscale 3,sackOK,eol>
15:03:11.446478 IP 192.168.1.101.1749 > 91.203.4.17.www: S 798220991:798220991(0) win 64240 <mss 1360,nop,wscale 0,nop,nop,sackOK>
15:03:11.532261 IP 91.203.4.17.www > 192.168.1.101.1749: S 1038145225:1038145225(0) ack 798220992 win 65535 <mss 1360,nop,wscale 3,sackOK,eol>
15:03:14.534287 IP 91.203.4.17.www > 192.168.1.101.1749: S 1038145225:1038145225(0) ack 798220992 win 65535 <mss 1360,nop,wscale 3,sackOK,eol>
# ip ro sh
...
10.0.1.113 dev ppp17 proto kernel scope link src 10.0.0.3
10.0.1.76 dev ppp31 proto kernel scope link src 10.0.0.3
10.0.1.70 dev ppp10 proto kernel scope link src 10.0.0.3
10.0.1.91 dev ppp7 proto kernel scope link src 10.0.0.3
10.0.1.86 dev ppp53 proto kernel scope link src 10.0.0.3
10.0.1.81 dev ppp16 proto kernel scope link src 10.0.0.3
82.207.101.24/30 dev eth0 proto kernel scope link src 82.207.101.26
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.101
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
default via 82.207.101.25 dev eth1 metric 100
# ip ru sh
0: from all lookup local
32765: from all fwmark 0x2 lookup eth2-out
32766: from all lookup main
32767: from all lookup default
# ip ro sh table eth2-out
default via 192.168.1.1 dev eth2
Как сделать чтоб пакеты шли к клиенту, а не останавливались на сервере?