Iptables. Перенаправление внешнего порта на локальный порт 127.0.0.1:80

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>

Добавить комментарий