Назад | Перейти на главную страницу

перенаправление портов iptables на debian

Я пытаюсь настроить простой брандмауэр с переадресацией портов и не могу заставить работать базовую конфигурацию без брандмауэра. Я настроил сценарий iptables следующим образом

#!/bin/sh

# interfaces
LAN="eth1"
WAN="eth0"

# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# delete all existing rules to start from scratch
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# accept everything
iptables -A INPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -A OUTPUT -j ACCEPT

# port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT --to 192.168.1.96

# masquerade
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE

Этот сценарий не будет использовать брандмауэр, но он должен перенаправить порт 80 на машине шлюза на мою внутреннюю машину 192.168.1.96. Это не работает. Проблема в том, что я не могу попасть снаружи внутрь машины. Даже не знаю, как начать отладку. Есть подсказки, где искать?

Дважды проверьте с помощью iptables -L -n -v --line и -t nat. То, что вы сделали, мне нравится. Также запустите tcpdump, чтобы увидеть, видите ли вы TCP SYN снаружи (eth0) и внутри (eth1), чтобы убедиться, что именно здесь он исчезает.

«Это не работает» - не очень хорошее описание. Что не работает? У вас тайм-аут или отказ в соединении?

Изменить:

# port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT --to 192.168.1.96

Кому:

 # port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT \
 --to-destination 192.168.1.96:80

Я не знаю, какую версию iptables вы используете, но в версии 1.3.5 вам нужно использовать --to-destination вместо --to.

Я думаю, твоя последняя строчка должна быть

# masquerade
iptables -t nat -A POSTROUTING -o $LAN -j MASQUERADE

Обратите внимание на LAN, а не на WAN.

Обычно я настраиваю это с помощью IP-адресов вместо интерфейсов. Пожалуйста, попробуйте следующее:

# port forwarding to local machine
iptables -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 80 -j DNAT --to 192.168.1.96

# masquerade
iptables -t nat -A POSTROUTING -s 192.168.1.96 -j MASQUERADE

и установите $EXT_IP конечно.