LINUX.ORG.RU
ФорумAdmin

DNAT в iptables


0

0

Мне нужно настроить DNAT для подключения к внутреннеме серверу из интернета. Делаю: iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 21 -j DNAT --to-destination 10.12.0.201:21 Ничего не работает.

Вот вывод service iptables status:

Table: nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:21 to:10.12.0.201:21 DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:7777 to:10.12.0.250 DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:7100 to:10.12.0.254 DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:6000 to:10.12.0.254 DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:4899 to:10.12.0.253:4899

Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 0.0.0.0/0 0.0.0.0/0 to:217.66.85.26

Chain OUTPUT (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 $INET_IP tcp dpt:21 to:10.12.0.201:21

Table: filter Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 ACCEPT tcp -- 0.0.0.0/0 127.0.0.1 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 10.12.0.250 tcp dpt:80

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Вывод route(если поможет):

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface $INET_NET * 255.255.255.252 U 0 0 0 eth1 169.254.0.0 * 255.255.0.0 U 0 0 0 eth1 10.12.0.0 * 255.255.0.0 U 0 0 0 eth0 default $INET_GW 0.0.0.0 UG 0 0 0 eth1

PS. Когда я перенаправляю соединения на эту же машину(на внутренний интерфейс) то все работает.

anonymous

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

>Посмотри http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET, там надо 3 правила.

Два других правила нужны для того чтобы соединятся с сервером из локальной сети и самого шлюза. Сюдя по туториалу достаточчно ль того правила которое я происал (пробывал с тремя - таже история).

>Как проверял? Какой программой? Что пишет?

Проверял телнетом и ftp клиентом с удаленного шела. Пишет чтото вроде unable to connect.. С шелла шлюз виден (я подключася к нему по ssh).

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

На 10.12.0.201 default router указан? или хотя бы route к 217.66.85.26 ?

Дампи пакеты... "tcpdump -n -nn -i eth0 port 21"

Второе, у тебя стоит SNAT для всех пакетов и DNAT для все пакетов... ИМХО, надо бы добавить в эти правила интерфейс...

Попробуй

iptables -t nat -A PREROUTING -i eth1 --dst $INET_IP -p tcp --dport 21 -j DNAT --to-destination 10.12.0.201:21

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

Разрешен ли форвардинг пакетов между интерфейсами?
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

На 10.12.0.201 прописан раутинг наружу через сервер с адресом $INET_IP?

З.Ы. ftp-протокол не самый приятный. Попробуй на время тестов форвардить ssh/http/telnet/...

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

>На 10.12.0.201 default router указан? или хотя бы route к 217.66.85.26 ? Не понял. Можно ли полностью команды для добавления маршрутов. >iptables -t nat -A PREROUTING -i eth1 --dst $INET_IP -p tcp --dport 21 -j DNAT --to-destination 10.12.0.201:21 Так проблвал. Все также

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

>З.Ы. ftp-протокол не самый приятный. Попробуй на время тестов форвардить ssh/http/telnet/...

Попробовал на http. Долго коннектится, но так ничего и не выдает (даже ошибки).

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

Думаю проблема в этом:
SNAT all -- 0.0.0.0/0 0.0.0.0/0 to:217.66.85.26

Для проверки
iptables -t nat -I POSTROUTING -d 10.12.0.201 -j ACCEPT

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

SNAT all -- 0.0.0.0/0 0.0.0.0/0 to:217.66.85.26 поменял на SNAT tcp -- 10.12.0./16 0.0.0.0/0 to:217.66.85.26

Добавил iptables -t nat -I POSTROUTING -d 10.12.0.201 -j ACCEPT не решило проблему

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

Я всетаки думаю, что дело в маршрутах. Я запустил web сервер на внутреннем интерфейсе шлюза (10.12.0.250) и все работает.

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

Уффф. Разобрался. Нужно было добавит правило: iptables -t nat -A POSTROUTING -d 10.12.0.201 -o eth0 -p tcp --dport 80 -j SNAT --to-source 10.12.0.250 Всем спасибо

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