У меня есть следующие правила, работающие нормально - до того, как я добавил частную сеть с одной виртуальной машиной (которая может пинговать все машины на хосте, но не снаружи) . Я хочу, чтобы виртуальная машина (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
EDIT:
Вам также необходимо включить переадресацию ip
echo 1> / proc / sys / net / ipv4 / ip_forward