Направить ssh на определенный шлюз

Направить ssh на определенный шлюз

Я хотел бы узнать, как принудительно использовать порт 22 для нужного мне интерфейса, любого интерфейса, Wi-Fi или Ethernet.
Например, route *:22 для Wi-Fi.
Я проверил routeкоманду, но похоже, что это невозможно.
Есть идеи?
Команды BSD или Linux приветствуются.

решение1

Обычная маршрутизация работает только с IP-адресами и не учитывает, какие данные (включая TCP или UDP) передаются.


По крайней мере в Linux вы можете использоватьмаршрутизация политикидля этого:

  1. Добавьте правило брандмауэра для маркировки определенных пакетов:

    iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
    
  2. Создайте новую таблицу маршрутизации с нужным вам шлюзом:

    ip route add default via 192.168.0.1 dev wlan0 table 42
    
  3. Добавьте правило политики для использования новой таблицы маршрутизации для маркированных пакетов:

    ip rule add fwmark 1 table 42
    

В Windows вам понадобится другой подход, например, указатьпрограммадля использования определенного интерфейса. Некоторые программы имеют опцию "привязать адрес", например ssh -b:

ssh -b 192.168.0.42 root@myserver

(Я не знаю, насколько хорошо это работает с несколькимиинтерфейсы, хотя. У меня такое чувство, что это может быть не так.)


Наконец, вы можете добавить маршрут хоста (через Wi-Fi) к определенному серверу.

Это можно расширить, включив SSH-туннелирование через этот сервер для всех ваших других подключений.

Связанный контент