Iptables. Разные заметки
#Перенаправление порта, если сервис работает на локальном порту
Для примера беру nginx, запущен на 127.0.0.1:80. Что отдаётся по этому адресу можно проверить так:
curl -I http://127.0.0.1:80
Команда для перенаправления внешнего порта 80 на внутренний 80:
iptables -t nat -I PREROUTING -p tcp -d <external ip> --dport 80 -j DNAT --to-destination 127.0.0.1:80
external ip — это внешний ip хоста, на котором применяется правило.
Так же необходимо посмотреть на каком интерфейсе этот внешний ip (можно командой ip a) и если это, например eth0, то проверить
sysctl -a | grep net.ipv4.conf.eth0.route_localnet
Если получено net.ipv4.conf.eth0.route_localnet = 0, то выполнить:
sysctl -w net.ipv4.conf.eth0.route_localnet=1
, т.е. включить роутинг на локальную сеть хоста с интерфейса eth0.
Если внешний порт сервиса, например, 80, а внутренний 85, то не забыть открыть оба порта. iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 85 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp —dport 80 -j DNAT —to-destination 10.250.250.10:85
iptables -t nat -A POSTROUTING -p tcp —dport 85 -j SNAT —to-source <external_ip>
iptables -t nat -A PREROUTING -d 0.0.0.0/0 -i net1 -s 0.0.0.0/0 -p tcp -m tcp —dport 80 -j DNAT —to-destination 10.250.250.10:85
iptables -t nat -I PREROUTING -p tcp -d <external_ip> —dport 80 -j DNAT —to-destination 127.0.0.1:85
iptables -t nat -A POSTROUTING -p tcp —dport 85 -d 127.0.0.1 -j SNAT —to-source <external_ip>
iptables -t nat -A POSTROUTING -p tcp —dport 80:85 -j SNAT —to-source <external_ip>