У меня есть два интерфейса на моей Linux-машине, один настроен для общедоступного IP 110.111.250.241 - eth0
, другой для LAN 10.42.43.1
. У меня есть клиентская машина 10.42.43.174
с веб-сервером apache.
Я хочу получить доступ к порту 80 из 10.42.43.174
из Интернета (дома или где-то еще). Итак, мне нужна переадресация портов iptables
. В sysctl
ip_forward
равно 1, я попытался установить какое-то правило предварительной маршрутизации iptable, но я все еще не могу получить доступ к порту 80 из 10.42.43.174 для моего общедоступного ip.
Ваши правила верны, но отсутствует правило SNAT или MASQUERADE для перезаписи исходного IP-адреса на IP-адрес машины маршрутизации. Полный комплект будет:
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 110.111.250.241 --dport 80 -j DNAT --to 10.42.43.174
iptables -A FORWARD -p tcp -i eth0 -d 10.42.43.174 --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Можете ли вы попробовать это правило, которое должно работать? Если нет, как упомянул MadHatter, вам следует предоставить iptables -L -n -v
и iptables -t nat -L -n -v
вывод
iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport 80 --to-destination 10.42.43.1:80