Я столкнулся с проблемой, с которой я не могу справиться. Когда я захожу на VPS через SSH и пытаюсь установить VPN-соединение на этом VPS, SSH-соединение между VPS и моей машиной теряется. Я предполагаю, что это потому, что маршрутизация изменилась настройками VPN. Как это предотвратить?
14
--route-noexec
возможность игнорировать маршруты, выдвигаемые сервером, но, как вы упомянули, это не помогает, когда я хочу использовать VPN в качестве прокси ...Ответы:
Вам нужно добавить
route-nopull
опцию (и удалить,redirect-gateway
если она существует) в файл конфигурации вашего клиента OpenVPN на вашем VPS.Таким образом, подключение к VPN-серверу не изменит никаких маршрутов на вашем VPS, поэтому вы сможете сами установить те маршруты, которые вам нужны.
источник
inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
Давайте рассмотрим следующий сценарий:
В таком случае на вашей машине (предположим, что ваша машина работает с 9.8.7.6/24 с def-gw 9.8.7.254), вы можете успешно установить SSH-соединение с 4.3.2.1. Следовательно, оба хоста 4.3.2.1 и 9.8.7.6 могут успешно достигать друг друга.
Теперь, когда установлено такое соединение SSH, предположим:
На этом этапе:
Если ни один маршрут не будет перенаправлен с удаленного сервера OpenVPN на ваш локальный VPS, то с точки зрения маршрутизации ничего не изменится, и ваше SSH-соединение будет работать без проблем вообще. В этом случае единственный трафик, проходящий через VPN, - это трафик, направленный на удаленный сервер OpenVPN (10.10.10.1);
Если удаленный сервер OpenVPN будет отодвигать некоторый маршрут и EXPECIALLY если VPS по умолчанию шлюз будет заменен на 10.10.10.1 (удаленной OpenVPN конечной точки), ТОГДА у вас возникли проблемы. В этом случае вы туннелируете ВСЕ исходящий IP-трафик (за исключением самого OpenVPN) внутри VPN.
Во втором случае (замена def-gw сразу после установки VPN-соединения) ваше предыдущее SSH-соединение будет «зависать» из-за асимметричной маршрутизации:
Другими словами: как только VPN-соединение будет установлено, ваш обратный маршрут от VPS к вашему компьютеру изменится и ... это нехорошо (несколько сетевых устройств вдоль обратного пути могут распознавать такие асимметричные путь и просто отбросить пакеты).
Кроме того, высока вероятность того, что ваш удаленный сервер OpenVPN действует как NAT-блок: весь трафик, поступающий из VPN, будет NAT с публичным IP-адресом удаленного сервера OpenVPN. Если это так, то ничего не более ... «не хорошо», но определенно «плохо», как для вашего SSH-соединения: обратный трафик, в дополнение к тому, чтобы вернуться по другому маршруту, возвращается на ваш компьютер с другой IP-адрес источника (один из открытого интерфейса VPN-сервера).
Как решить эту проблему?
Довольно легко, действительно.
Просто дайте указание вашему VPS-серверу не направлять трафик на ваш компьютер по VPN, а вместо этого полагаться на предыдущий маршрут . Это должно быть так же просто, как добавить, перед запуском OpenVPN:
где:
PS: предоставив гораздо более подробный вопрос, вы бы получили гораздо более быстрый ответ :-)
источник
route add
команда с такими 0.0.0.0 gw возвращаетSIOCADDRT: Invalid argument
[server] Peer Connection Initiated with [AF_INET]64.251.27.139:443; TUN/TAP device tun0 opened; do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0; /sbin/ip link set dev tun0 up mtu 1500; /sbin/ip addr add dev tun0 10.200.1.251/22 broadcast 10.200.3.255; ERROR: Linux route add command failed: external program exited with error status: 2
netstat -rn
результат0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
VPS, который я использую, является базовым вариантом OVH с Ubuntu 14.04 Server на бортуifconfig
иnetstat -rn
вывод: goo.gl/TEZ61qЭто может помочь:
положить
TCPKeepAlive=yes
в свой/etc/ssh/sshd_config
Из
источник
TCPKeepAlive
опция,yes
так что это неправильное решениеУ меня была эта проблема, и я попробовал все рекомендуемые решения, и все же моя проблема не была решена!
После многих попыток решения я использовал
screen
команду. (мой VPN-клиент cisco-any-connect).После предоставления ваших учетных данных, немедленно нажмите Ctrl + A + D и вернитесь к сеансу.
источник
Лично я предпочитаю, чтобы все подключения к SSH маршрутизировались через VPN. В случае активного ssh-соединения перед установкой VPN, он должен переподключиться из-за изменения маршрута.
Я рекомендую использовать
autossh
Под вашей конфигурацией клиента ssh просто добавьте.ssh/config
источник
Один раз после подключения VPN, ssh отключается, потому что ssh трафик с сервера идет через VPN-сервер. Поэтому, чтобы избежать этого, перед подключением VPN выполните следующую команду.
добавление маршрута -host your-machine-public-ip gw Сервер-gatway-ip dev eth0
your-machine-public-ip: IP вашего компьютера, с которого вы делаете SSH. Server-gatway-ip: IP-адрес Gatway / router этого сервера
Приведенная выше команда перенаправит трафик через данный шлюз, а не через VPN-сервер.
источник