LINUX.ORG.RU
решено ФорумAdmin

Настроить iptables DNAT в Ubuntu 12.04 server при выключенном UFW

 , , ,


0

1

Iptables не пробрасывает запросы с порта на порт:

# cat /proc/sys/net/ipv4/ip_forward
1
# iptables -L -v --line-numbers -t nat
Chain PREROUTING (policy ACCEPT 2 packets, 458 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 DNAT       tcp  --  any    any     anywhere             192.168.0.180        tcp dpt:8000 to:192.168.3.100:22

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 2 packets, 144 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 2 packets, 144 bytes)
num   pkts bytes target     prot opt in     out     source               destination
# service ufw status
ufw start/running
# ufw status
Status: inactive

Напрямую SSH с 192.168.0.180 на 192.168.3.100 работает. Сквозь 192.168.0.180:8000 не хочет.

Где косяк? Или теперь без UFW ничего не форфардится?


а SNAT для него прописывать разве не надо?
лучше покажи
iptables-save

kam ★★ ()

кто такие 0.180 и 3.100? Может, у тебя дальше блокируется?

1) есть ли маршрут до 192.168.3.0 на шлюзе, откуда привел правила? 2) не блокируется ли 8000 порт на клиенте?

и вообще да, проводи лучше вывод iptables-save, по всем таблицам.

leader32 ()

ну и попутно запускай tcpdump на наличие ответных пакетов, скорее всего, как советует kam, нужно делать SNAT

leader32 ()

Я более подробно опишу, что я хочу.

Есть сеть 169.254.0.0 В нем есть хост 169.254.0.2, Но у него нет GATEWAY, то есть не может он выйти за пределы своей сети.

Есть другая сеть 192.168.0.0, где сижу я.

Есть хост с линуксом и двумя eth eth0 = 192.168.0.180 eth0:0 = 169.254.0.1

Напрямую зайти по SSH на 169.254.0.2 я не могу - нет роутинга. Но можно настроить DNAT на 192.168.0.180:8000, чтоб он пересылал мои SSH запросы на 169.254.0.2:22.

# iptables-save --table mangle
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# iptables-save --table filter
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# iptables-save --table nat
*nat
:PREROUTING ACCEPT [1514:230422]
:INPUT ACCEPT [379:75327]
:OUTPUT ACCEPT [8:568]
:POSTROUTING ACCEPT [8:568]
-A PREROUTING -d 192.168.0.180/32 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 169.254.0.2:22
-A POSTROUTING -d 169.254.0.2/32 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.0.180
COMMIT

tcpdump на 169.254.0.2 показывает входящие пакеты от 192.168.0.180:xxxx до 169.254.0.2:22.

SSH отваливается по таймауту:

# ssh 169.254.0.2 -v
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 169.254.0.2 [169.254.0.2] port 22.
debug1: connect to address 169.254.0.2 port 22: Connection timed out
ssh: connect to host 169.254.0.2 port 22: Connection timed out

Проблема походу в том, что нужно DNA-тить и обратные пакеты. Только порт исходящего SSH случаен, и мой IP тоже не постоянен.

XTerm ()
Ответ на: комментарий от XTerm
-A POSTROUTING -d 169.254.0.2/32 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.0.180

SNAT - это подмена адреса источника. Замени 192.168.0.180 на 169.254.0.1, чтобы ssh-сервер знал, куда обратно пакеты посылать.

И DNAT'ить в обратную сторону не нужно, за тебя это будет делать connection tracking

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

Черт. Действительно, прописал источник не того порта :(. Спасибо всем за подмогу. Теперь все работает идеально.

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

НЕ могли бы вы сейчас написать правила которые работают? такая же проблема появилась...

anonymous ()
Ответ на: комментарий от anonymous
iptables -t nat -A PREROUTING -p tcp -d 10.20.8.179 --dport 8888 -j DNAT --to-destination 192.168.0.2:80

iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.2 --dport 80 -j SNAT --to-source 192.168.0.1
XTerm ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.