
У меня есть сервер с несколькими связанными с ним IP-адресами. Я пытаюсь запустить веб-сервер node.js (который я не хочу запускать как root), используя только один из этих IP-адресов (было бы очень плохо, если бы трафик со всех IP-адресов перенаправлялся).
С помощью поиска superuser выяснилось, что это возможно с помощью iptables:
Как настроить iptables для переадресации трафика на порт 80 из определенных источников
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 --source 212.333.111.222 -j REDIRECT --to-port 9020
Однако я не понимаю, зачем нужен eth0.
В соответствии с:
http://blog.softlayer.com/2011/iptables-tips-and-tricks-port-redirection/
это можно сделать с помощью:
iptables -t nat -A PREROUTING -p tcp --dport 2525 -j REDIRECT --to-ports 25
Каков правильный способ переадресации трафика с одного IP-адреса на порту 80, скажем, 111.111.111.111:80, на другой порт на том же сервере, скажем, 111.111.111.111:8765?
Спасибо за вашу помощь!
решение1
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8765
Вместо IP-адреса используйте имя интерфейса. Я имею в виду, что вместо этого eth0
вы можете использовать нужный вам интерфейс.
Это правило гласит iptables:
- Сделайте это на PreRouting
- Делай нат
- На интерфейсе eth0
- Протокол — TCP
- Порт назначения для сопоставления — 80.
- Перенаправить его на порт 8765