У меня есть веб-сервер, работающий на порту 8080. Я хотел бы посетить его через порт 80, поэтому я сделал следующее:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
он работает, если я получаю доступ к серверу с других машин, используя
http://ipoftheserver/
но это не сработает, если я получу доступ к серверу с того же компьютера, используя
http://localhost/
это почему?
заранее спасибо.
В PREROUTING
chain влияет на полученные пакеты до их маршрутизации. Локально сгенерированные пакеты начинаются с OUTPUT
цепь.
Я не уверен, что вы можете делать то, что хотите через iptables, localhost не проходит маршрутизацию NAT. Посмотри это ТАК вопрос и это SF вопрос для подробностей.
Вы можете привязать сервер к нескольким портам, если это Apache
. Подробности смотрите на этой странице, http://httpd.apache.org/docs/2.2/bind.html.
httpd.conf
Listen 80
Listen 8000
-или-
Listen 192.0.2.1:80
Listen 127.0.0.1:80
Listen 192.0.2.1:8000