it-swarm-ru.tech

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

Я использую 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 чтобы я мог получить доступ к компьютерам в этой частной сети?

Edit:

Моя конфигурация сети (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
39
axel22

Не 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.

46
Riccardo Murri

Я не знаю, когда это было введено, но клиент 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.

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

11
ugob

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

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

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

2
earthmeLon

Просто добавление ответа. Ты можешь использовать -b отметьте и определите исходный IP-адрес во время доступа.

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

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
2
Shafiq