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

iptables: добавить маршрутизацию для внутренних гостей и перенаправление портов

У меня нормально работают следующие правила - до того, как я добавил частную сеть с одной виртуальной машиной (который может пинговать все машины на хосте, но не снаружи). Я хочу, чтобы виртуальная машина (192.168.100.2) подключилась к Интернету и включила пересылку, чтобы я мог подключиться к ней через SSH. (Что работает только без моих правил, которые у меня уже есть) Переадресация IP включена.

Правила iptables, которые у меня есть:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:152]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables    INPUT:DROP: "
-A INPUT -j DROP
-A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
COMMIT

Когда я загружаю приведенные выше правила, а затем загружаю следующее, внутренняя виртуальная машина не может подключиться к Интернету, но я могу подключиться к ней через переадресацию портов:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 22727 -j DNAT --to-destination 192.168.100.2:2727
iptables -A FORWARD -p tcp -d 192.168.100.2 --dport 22727 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Любые намеки на то, что мне не хватает?

Проблема может заключаться в том, что веб-пакеты, возвращаемые из Интернета, отбрасываются цепочкой INPUT, поскольку dport является случайным (и не всегда 22727).

Вы можете попробовать:

iptables -I INPUT 2 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

РЕДАКТИРОВАТЬ:

Также необходимо включить переадресацию IP

echo 1 > /proc/sys/net/ipv4/ip_forward