Используйте SSH с определенным сетевым интерфейсом

38

Я использую openconnectдля подключения к VPN. После ввода моих учетных данных, я получаю это:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

Запуск ifconfigпоказывает, у меня есть новый сетевой интерфейс tun0с определенным IP-адресом.

Вопрос: Как мне sshиспользовать только сетевой интерфейс, tun0чтобы я мог получить доступ к компьютерам в этой частной сети?

Редактировать:

Моя конфигурация сети ( route -n) выглядит так:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
axel22
источник
Можете ли вы рассказать о конфигурации вашей сети? При правильной маршрутизации любой интерфейс, предназначенный для сети, подключенной к tun0, будет использовать этот интерфейс.
Эли Хеди

Ответы:

45

Не клиент ssh решает, через какой интерфейс будут отправляться TCP-пакеты, а ядро. Короче говоря, SSH просит ядро ​​открыть соединение с определенным IP-адресом, и ядро ​​решает, какой интерфейс использовать, обращаясь к таблицам маршрутизации.

(Ниже предполагается, что вы работаете в GNU / Linux; общая концепция одинакова для всех Unices, но специфика команд, которые нужно выполнить, и способ форматирования выходных данных могут отличаться.)

Вы можете отобразить таблицы маршрутизации ядра с помощью команд route -n и / или ip route show .

OpenConnect должен был добавить строку для tun0интерфейса; соединения с любым адресом, соответствующим этой линии, будут маршрутизироваться через этот интерфейс. Например, работая route -nна своем ноутбуке, я получаю следующий вывод:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Это означает, что соединения с хостами в сети 192.168.122.0/24 (т. Е. Адреса с 192.168.122.0 по 192.168.122.255 в соответствии с нотацией CIDR ) будут маршрутизироваться через интерфейс virbr0; те к 169.254.0.0/16 и 10.30.0.0/24 пройдут eth0, и все остальное (линия 0.0.0.0) будет направлено через eth0 к хосту шлюза 10.30.0.1.

Риккардо Мурри
источник
Спасибо за разъяснение этого для меня - кажется, что openconnectне добавили строку для tun0интерфейса. Я полагаю, я должен сделать это вручную.
axel22
1
@ axel22 Вы можете посмотреть здесь: bbs.archlinux.org/viewtopic.php?id=69064 для скрипта, который использует openconnect и устанавливает маршруты.
Риккардо Мурри
@RiccardoMurri Хотите ответить на мой вопрос
Рахул Гаутам
7

Я не знаю, когда это было введено, но клиент OpenSSH на RHEL7 имеет это на своей странице руководства:

 -b bind_address
         Use bind_address on the local machine as the source address of the connection.  Only useful on systems with more than one address.

Не так хорошо, как возможность выбрать интерфейс, но близко.

ugob
источник
Также -Bфлаг, который позволяет указать имя используемого сетевого интерфейса.
Хенрик
Опция -b bind_addressне работает для меня, как-то. Изменение маршрута временно должно работать. Кстати: -Bопция не существует в версии SSH, которая поставляется с Ubuntu.
Джон
2

Если вы используете Network Manager для управления своими интернет-соединениями (как это делается по умолчанию во многих системах), вы можете установить и то, openconnectи другое network-manager-openconnect.

Как только плагин OpenConnect установлен для Network Manager, откройте Network Manager и щелкните +значок в левом нижнем углу. Вам должен быть предоставлен комбинированный список с опцией VPN, а затем возможность выбрать OpenConnect Compatible VPN .

Используя Network Manager для взаимодействия с OpenConnect, ваши маршруты будут появляться автоматически и помогут вам подключиться к VPN. Это особенно полезно для доступа к серверам через VPN, например, как работает FireHost .

earthmeLon
источник
1

Просто добавление ответа. Вы можете использовать-b флаг и определить свой IP-адрес источника во время доступа.

Формат + Пример

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Шафик
источник