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