На этой странице очень подробно описано, как делать то, что вам нужно. Существенные команды, которые должны быть выполнены на машине A, таковы:
root@A # iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 9090 -j DNAT --to 192.168.2.B:9090
root@A # iptables -A FORWARD -p tcp -d 192.168.2.B --dport 9090 -j ACCEPT
Первая команда создает правило iptables, которое будет перенаправлять пакеты, поступающие на порт 9090 компьютера A, на порт 9090 компьютера B; второе правило разрешает пересылку таких пакетов на компьютер B. (Второе правило может быть необязательным в зависимости от политики, установленной для цепочки FORWARD на машине A, но его не помешает добавить; если он не нужен, он просто ничего не сделает.)
Обратите внимание, что эти изменения не будут сохраняться при перезагрузке, если они явно не настроены для этого. Разные дистрибутивы обрабатывают это по-разному; если вы не можете или не хотите использовать метод, который определяет ваш дистрибутив, вы можете сделать
iptables-save > /etc/network/iptables
(или некоторый подобный такой файл, если не /etc/network/iptables
), а затем добавьте следующее в /etc/rc.local
:
iptables-restore < /etc/network/iptables
(используя тот же путь, который указан в команде iptables-save
) для повторного применения изменений при загрузке.