Вы сказали «только с открытым портом 80». Если другие порты заблокированы каким-либо внешним брандмауэром (например, маршрутизатор с NAT, вам перенаправлен только порт 80), то основное правило может быть таким:
iptables -t nat -A PREROUTING -p TCP --dport 80 -s 192.168.1.7 -j REDIRECT --to-port 1234
Принимая каждый трафик, поступающий в порт 80
, он перенаправляет все, что из 192.168.1.7
порта 1234
, оставляя нетронутыми остальные.
Примечание iptables
работает на основе первого совпадения, поэтому вы можете захотеть сделать
iptables -t nat -I PREROUTING …
вместо.
Различные способы указания нескольких возможных адресов источника см. В ответах на этот вопрос: iptables
несколько IP-адресов источника .
Но если «с открытым только 80-м портом» означает, что у вас есть iptables -A INPUT …
правила, которые разрешают только 80-й порт, я ожидаю, что вышеупомянутое не сработает. Это потому, что nat/PREROUTING
работает в первую очередь. В этом случае вы также должны разблокировать другой порт.