Вы сказали "только с открытым портом 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
работает в первую очередь. В этом случае вы также должны разблокировать другой порт.