В моей сети есть две машины (A и B), где A - это тот, к которому напрямую обращаются извне при вызове моего IP-адреса, а B - очень мощная, которая должна использоваться для очень интенсивных задач.

Я хотел бы переадресовать определенный порт, например, 9090, от A до B, поэтому любой запрос, отправленный на A через порт 9090, напрямую пересылается на B.

Как это может быть достигнуто?

(Если какие-либо ответы содержат IP-адреса для A или B, используйте 192.168.2.А / Б соответственно)

1 ответ1

1

На этой странице очень подробно описано, как делать то, что вам нужно. Существенные команды, которые должны быть выполнены на машине 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 ) для повторного применения изменений при загрузке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .