Предложите самый простой способ перенаправить все соединения с host: port (внешний интерфейс) на host2: port (внешний интерфейс)
Когда я использую
ssh -L local_port:remote_host:remote_port -N -l user remote_host
Основная проблема заключается в том, что local_port должен поддерживать соединение также на внешнем интерфейсе, чтобы разрешать соединения не только с localhost на этой машине
Спасибо в совет
Я бы выбрал любой из этих маршрутов:
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-сеанс через другой хост.