Назад | Перейти на главную страницу

Перенаправить трафик между хостами

Предложите самый простой способ перенаправить все соединения с host: port (внешний интерфейс) на host2: port (внешний интерфейс)

Когда я использую

ssh -L local_port:remote_host:remote_port -N -l user remote_host

Основная проблема заключается в том, что local_port должен поддерживать соединение также на внешнем интерфейсе, чтобы разрешать соединения не только с localhost на этой машине

Спасибо в совет

Я бы выбрал любой из этих маршрутов:

  • Используйте мост, это возможно только в том случае, если вам не нужен доступ к хосту ни на одном из двух задействованных интерфейсов.
  • Используйте ipf для установки соответствующих маршрутов межсетевого экрана
  • ssh -L 0.0.0.0:localport:remote_host:remote_port -N -l user remote_host таким образом ssh будет связываться со всеми интерфейсами, а не только с локальным, который является только значением по умолчанию

Если вы используете freebsd, лучше всего использовать брандмауэр:

kldload pf
echo "rdr on INT proto tcp from any to any port PORT1 -> IP2 port PORT2" > /etc/pf.conf
pfctl -f /etc/pf.conf
pfctl -e

INT - имя интерфейса (т.е. rl0)

эта команда будет перенаправлена ​​с INT: PORT1 на IP2: PORT2

Это самый быстрый и настраиваемый метод переадресации портов, но только для BSD.


Проверьте PF FAQ для большего

Вам не хватает флага -g. Добавьте это, и удаленные хосты тоже смогут использовать туннель.

Вы не объяснили, для чего собираетесь использовать переадресацию портов. Итак, рискну предложить, помимо использования -L флаг, настраивая прокси-сервер SOCKS для приложений, которые его поддерживают (например, Firefox):

ssh -D *:9999 user@remote_host

Обычно используется для настройки Firefox для использования этого прокси-сервера SOCKS с network.proxy.socks_remote_dns включен, чтобы туннелировать ваш HTTP-сеанс через другой хост.