LINUX.ORG.RU
ФорумAdmin

IPtables: не работает DNAT


0

1

Политика по умолчанию - ACCEPT во всех цепочках.

Включаю sysctl net.ipv4.ip_forward=1 и добавляю одно-единственное правило:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination 127.0.0.1:22

Локально соединяюсь с портом 22 - открыт. С другой машины соединяюсь с портом 1234 - ответ не приходит.

Вывод iptables-save:

# Generated by iptables-save v1.4.8 on Mon Aug 23 22:22:27 2010
*filter
:INPUT ACCEPT [4582:8743735]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1694:17100939]
COMMIT
# Completed on Mon Aug 23 22:22:27 2010
# Generated by iptables-save v1.4.8 on Mon Aug 23 22:22:27 2010
*nat
:PREROUTING ACCEPT [17:1851]
:POSTROUTING ACCEPT [12:1005]
:OUTPUT ACCEPT [12:1005]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 127.0.0.1:22
COMMIT
# Completed on Mon Aug 23 22:22:27 2010

Вывод /proc/sys/net/ipv4/ip_forward :

1

Трафик с машины, на которой NAT:

$ sudo tcpdump -i eth0 tcp and port 1234 -vvn
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:25:24.118464 IP (tos 0x10, ttl 64, id 29200, offset 0, flags [DF], proto TCP (6), length 60)
    10.2.9.65.54322 > 10.2.9.5.1234: Flags [S], cksum 0x7f36 (correct), seq 638609563, win 5840, options [mss 1460,sackOK,TS val 158734987 ecr 0,nop,wscale 6], length 0
22:25:27.119549 IP (tos 0x10, ttl 64, id 29201, offset 0, flags [DF], proto TCP (6), length 60)
    10.2.9.65.54322 > 10.2.9.5.1234: Flags [S], cksum 0x7c48 (correct), seq 638609563, win 5840, options [mss 1460,sackOK,TS val 158735737 ecr 0,nop,wscale 6], length 0
22:25:33.114375 IP (tos 0x10, ttl 64, id 29202, offset 0, flags [DF], proto TCP (6), length 60)
    10.2.9.65.54322 > 10.2.9.5.1234: Flags [S], cksum 0x766c (correct), seq 638609563, win 5840, options [mss 1460,sackOK,TS val 158737237 ecr 0,nop,wscale 6], length 0
22:25:45.116010 IP (tos 0x10, ttl 64, id 29203, offset 0, flags [DF], proto TCP (6), length 60)
    10.2.9.65.54322 > 10.2.9.5.1234: Flags [S], cksum 0x6ab4 (correct), seq 638609563, win 5840, options [mss 1460,sackOK,TS val 158740237 ecr 0,nop,wscale 6], length 0

Трафик с машины, на которой telnet:

$ sudo tcpdump -i eth2 tcp and port 1234 -vvn
tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 96 bytes
22:13:52.061540 IP (tos 0x10, ttl 64, id 29200, offset 0, flags [DF], proto TCP (6), length 60) 10.2.9.65.54322 > 10.2.9.5.1234: S, cksum 0x7f36 (correct), 638609563:638609563(0) win 5840 <mss 1460,sackOK,timestamp 158734987 0,nop,wscale 6>
22:13:55.063150 IP (tos 0x10, ttl 64, id 29201, offset 0, flags [DF], proto TCP (6), length 60) 10.2.9.65.54322 > 10.2.9.5.1234: S, cksum 0x7c48 (correct), 638609563:638609563(0) win 5840 <mss 1460,sackOK,timestamp 158735737 0,nop,wscale 6>
22:14:01.059150 IP (tos 0x10, ttl 64, id 29202, offset 0, flags [DF], proto TCP (6), length 60) 10.2.9.65.54322 > 10.2.9.5.1234: S, cksum 0x766c (correct), 638609563:638609563(0) win 5840 <mss 1460,sackOK,timestamp 158737237 0,nop,wscale 6>
22:14:13.063149 IP (tos 0x10, ttl 64, id 29203, offset 0, flags [DF], proto TCP (6), length 60) 10.2.9.65.54322 > 10.2.9.5.1234: S, cksum 0x6ab4 (correct), 638609563:638609563(0) win 5840 <mss 1460,sackOK,timestamp 158740237 0,nop,wscale 6>

Видно, что ходят только SYN-пакеты. Не могу понять, где я накосячил.

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 1234 -j REDIRECT --to-port 22

После того, как пакет приходит с интерфейса eth0 и проходит цепочку PREROUTING, netfilter изменяет IP-адрес получателя на 127.0.0.1.

Но ядро отбрасывает этот пакет, т.к. с внешнего интерфейса (не lo) такой пакет придти не может.

http://en.wikipedia.org/wiki/Martian_packet

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

Я пытался выести наружу порт 3389 для rdesktop-а одной из виртуальных машин, работающих под qemu. Виртуальная машина использовала виртуальную же TUN/TAP-сетевушку, а тут redirect уже не поможет. Я не знал, в чём у конкретно у меня проблема и пытался свести задачу к максимально простой, чтобы задать вопрос по ней в форуме. Я, кстати, так и не понял, почему, но у меня вдруг всё заработало.

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