У меня есть машина с открытым портом 80, уже включен http-сервер. Я хочу перехватить любой входящий трафик через порт 80 и:
- если происходит перенаправление с ip1, ip2, ip3 на другое приложение, прослушивающее другой порт
- Остальное зайти на веб-сервер
Возможно ли это? В настоящее время я использую socat, но, даже с reuseaddr, я по-прежнему получаю сообщение об ошибке при запуске веб-сервера из-за порта уже используется ...
iptables
правила)?Ответы:
Вы сказали «только с открытым портом 80». Если другие порты заблокированы каким-либо внешним брандмауэром (например, маршрутизатор с NAT, вам перенаправлен только порт 80), то основное правило может быть таким:
Принимая каждый трафик, поступающий в порт
80
, он перенаправляет все, что из192.168.1.7
порта1234
, оставляя нетронутым.Примечание
iptables
работает на основе первого совпадения , поэтому вы можете захотеть сделатьвместо.
Различные способы указания нескольких возможных адресов источника см. В ответах на этот вопрос:
iptables
несколько IP-адресов источника .Но если «с открытым только 80-м портом» означает, что у вас есть
iptables -A INPUT …
правила, которые разрешают только 80-й порт, я ожидаю, что одно только выше не будет работать. Это потому, чтоnat/PREROUTING
работает в первую очередь. В этом случае вы также должны разблокировать другой порт.источник
iptables -L
, эквивалентноiptables -t filter -L
. Вам нужноiptables -t nat -L
.