У меня есть сервер apache, работающий на 8100. При открытии http: // локальный: 8100 в браузере мы увидим, что сайт работает правильно.
Теперь я хотел бы направить все запросы с 80 на 8100, чтобы доступ к сайту можно было получить без номера порта. Я не знаком с iptables, поэтому искал решения в Интернете. Это один из методов, которые я пробовал:
user@ubuntu:~$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT user@ubuntu:~$ sudo iptables -A INPUT -p tcp --dport 8100 -j ACCEPT user@ubuntu:~$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8100
Это не работает. Сайт работает на 8100, но не на 80. Если распечатать правила с помощью "iptables -t nat -L -n -v", я вижу следующее:
user@ubuntu:~$ sudo iptables -t nat -L -n -v Chain PREROUTING (policy ACCEPT 14 packets, 2142 bytes) pkts bytes target prot opt in out source destination 0 0 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8100 Chain INPUT (policy ACCEPT 14 packets, 2142 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 177 packets, 13171 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 177 packets, 13171 bytes) pkts bytes target prot opt in out source destination
ОС - это Ubuntu на платформе VMware. Я думал, что это должна быть простая задача, но я безуспешно работал над ней часами. :( Что мне не хватает?
Попробуйте: sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8100
Цепочка «PREROUTING» применяется только к трафику, полученному из сети. Если вы хотите перенаправить локально сгенерированный трафик, вам необходимо использовать цепочку «OUTPUT».
Вероятно, вам также понадобятся совпадения по IP-адресу назначения.
Я бы пошел с
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8100