LINUX.ORG.RU
ФорумAdmin

Проблемы с двумя аплинками и НАТом


0

0

Настроил роутинг по этой статье: http://opennet.ru/docs/RUS/LARTC/x348.html

IP1="77.108.65.92" IF1="eth0" P1="77.108.65.1" P1_NET="77.108.65.0/24"

IP2="10.0.5.2" IF2="eth1" P2="10.0.5.1" P2_NET="10.0.5.0/30"

ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2

ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2

ip route add default via $P2

ip rule add from $IP1 table T1 ip rule add from $IP2 table T2

ip route add $P0_NET dev $IF0 table T1 ip route add $P2_NET dev $IF2 table T1 ip route add 127.0.0.0/8 dev lo table T1

ip route add $P0_NET dev $IF0 table T2 ip route add $P1_NET dev $IF1 table T2 ip route add 127.0.0.0/8 dev lo table T2

решил значит добавить NAT: iptables -A PREROUTING -t nat -d 77.108.65.92 -p tcp --dport 1234 -j DNAT --to-destination 10.0.1.2 iptables -A PREROUTING -t nat -d 10.0.5.2 -p tcp --dport 1234 -j DNAT --to-destination 10.0.1.2 iptables -A POSTROUTING -t nat -o eth0 -j SNAT --to-source 77.108.65.92 iptables -A POSTROUTING -t nat -o eth1 -j SNAT --to-source 10.0.5.2

iptables -A PREROUTING -t mangle -d 77.108.65.92 -j MARK --set-mark 0x1 #все входящие пакеты на линке eth0 маркировать 0x1 iptables -A PREROUTING -t mangle -d 10.0.5.2 -j MARK --set-mark 0x2 #.. eth1 маркировать 0x2

##маркированные пакеты пускать по соот. ей таблице ip rule add fwmark 0x1 table T1 ip rule add fwmark 0x2 table T2

Запускаю на машине 10.0.1.2 netcat: nc -l -p 1234 И с пытаюсь подключилтся к своему роутер с машины, которая подключена через GPRS: nc 95.72.54.205(10.0.5.2) 1234 <<< "test" -- работает, а вот: nc 77.108.65.92 1234 <<< "test" -- уже нет.

router ~ # tcpdump -n -i eth0 'port 1234' listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 21:15:12.298335 IP 209.250.241.104.60980 > 77.108.65.92.1234: S 3520313975:35203 13975(0) win 5840 <mss 1460,sackOK,timestamp 2826884265 0,nop,wscale 4>

router iptables # tcpdump -n -i eth1 'port 1234' listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 21:15:12.298988 IP 77.108.65.92.1234 > 209.250.241.104.60980: R 0:0(0) ack 3520313976 win 0

немного странно получается: пакет приходит с eth0, а уходит с eth1

А теперь ключевой вопрос: чего я сделал не так, уважаемые линуксойды ?

Честно говоря я не стал подробно вчитываться в ваш пост, при отправлении подобного текста нужно выбирать режим "Preformated text" и использовать кнопочку "предпросмотр", чтобы убедиться в корректном отображении.

Но, "PREROUTING -t mangle -d 10.0.5.2 -j MARK --set-mark 0x2" это не пакеты, пришедшие с eth2, с eth2 приходят пакеты "-i eth2".

Далее, вы маркируете пришедший пакет. А уходящий в ответ пакет --- это другой пакет. Да эти пакеты связаны тем, что относятся к одному соединению, но это разные пакеты. Чтобы промаркировать эти пакеты есть в iptables цель "-j CONNMARK", погуглите и найдете как её исползовать.

mky ★★★★★
()
Ответ на: комментарий от mky

Совершенно верно.

Решил данную проблему с помощью CONNMARK:
iptables -t mangle -A PREROUTING -p icmp -j CONNMARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i eth0 -j CONNMARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i eth1 -j CONNMARK --set-mark 0x2
iptables -t mangle -A PREROUTING -i eth2.+ -p tcp -m multiport --dports 22,23,25,53,1et-mark 0x1
iptables -t mangle -A PREROUTING -i eth2.+ -j CONNMARK --restore-mark

hairyraven
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.