SSH-сервер не может быть подключен при включенном VPN


9

Недавно я обнаружил, что, когда моя рабочая станция подключается через VPN-соединение, ее SSH-сервер не может быть подключен с удаленного сайта. Я уверен, что это проблема маршрутизации, потому что VPN-клиент меняет шлюз по умолчанию на его равноправный (VPN-сервер) соединения ppp.

Есть ли решение сделать сервер SSH и VPN-клиента счастливыми?

Ответы:


2

Когда вы используете vpn, как правило, сеть vpn захватывает весь ваш интерфейс, так что вы можете маршрутизировать только из сети vpn, а не из Интернета в целом. Большинство людей решают эту проблему, запустив vm (virtualbox и т. Д.) И подключившись к vpn на этой виртуальной машине, чтобы он не полностью подключил основное соединение к реальной машине.


Вы можете сделать некоторые приемы маршрутизации для маршрутизации данных из vpn в одну сторону и других данных в другую сторону (разные шлюзы и т. Д.), Но на самом деле намного проще использовать virtualbox. :-)
Stu

Спасибо за предложение! Я хотел бы знать, какой трюк маршрутизации может достичь этого.
btw0

Я использую VM stu, но я не могу оценить VPN на хосте, так как мне нужно выполнить работу разработчика.
Джейми Хатбер

о, я предлагал другой путь. Используйте vpn исключительно в виртуальной машине, и это оставляет машину для открытого и бесплатного интернета.
Стю

2

Перед тем, как приступить к настройке сети, проверьте, прослушивает ли рассматриваемый ssh-сервер интерфейс vpn. Может быть, это связано с конкретным интерфейсом на вашем сервере.

Пример netstat -aвывода:

 Proto Recv-Q Send-Q Local Address    Foreign Address   State      
 tcp        0      0 *:ssh            *:*               LISTEN      

Сервер ssh в этом примере прослушивает все интерфейсы (отмеченные звездочкой *:ssh. Если в вашей системе вместо этого есть адрес хоста, сервер ssh привязан к определенным интерфейсам.

Отредактируйте /etc/ssh/sshd_configи установите, ListenAddress 0.0.0.0чтобы отрегулировать это, если необходимо.

Если sshd уже слушает правильные интерфейсы, не стесняйтесь войти в подземелье маршрутизации :-)


1
По какому адресу должен ListenAddressбыть установлен? IP сервера на локальном интерфейсе? IP роутера? Что-то другое?
Психонаут

0

Вы говорите о разделенном туннелировании. Если вы достаточно знакомы с инструментом командной строки ROUTE.EXE , вы можете изучить маршруты, размещенные VPN-клиентом, и удалить их. Затем вам нужно добавить еще один, чтобы только трафик вашей корпоративной локальной сети проходил через шлюз VPN.

В частности, вы бы использовали

route print

... чтобы получить список записей маршрутизации. Не видя вывода, похоже, что ваш VPN-клиент разместил бы запись по умолчанию (0.0.0.0), причем шлюз является равноправным шлюзом VPN. Ты можешь использовать

route delete 10.*

... например, чтобы удалить все записи, указывающие на сеть 10.xxx.

Вы можете использовать

route add 10.0.0.0 mask 255.0.0.0 10.0.99.99

... где первый адрес (10.0.0.0 255.0.0.0) - это ваша корпоративная сеть и маска, а второй адрес - это удаленный шлюз.

Вам нужно будет запускать это каждый раз, когда вы подключаетесь, так что вы можете захотеть написать скрипт.

Примечание: альтернативой было бы убедить вашу компанию настроить VPN для использования раздельного туннелирования; аргументом для этого является снижение пропускной способности и (IANAL) снижение ответственности за не корпоративный веб-трафик, проходящий через их сеть.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.