Назад | Перейти на главную страницу

Подключение к VPN на виртуальной машине Google Cloud убивает SSH

Я пытаюсь подключиться с виртуальной машины Google Cloud к серверам NordVPN. VPN-соединение работает, однако, как только соединение установлено, существующий сеанс SSH зависает, и время ожидания нового сеанса истекает.

На машине установлена ​​Ubuntu 16.04. У него статически назначенный IP-адрес, но не включена переадресация IP-адресов.

Вещи, которые я пробовал:

Я пробовал использовать как NordVPN напрямую, так и OpenVPN.

Все от: Анонимизация OpenVPN Разрешить SSH-доступ к внутреннему серверу

^ Это имеет значение в том, что я получаю еще одну строку журнала из OpenVPN в сеансе SSH, прежде чем он зависнет, чем без него.

Из: https://askubuntu.com/questions/646051/ssh-to-server-that-is-connected-to-vpn

# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234

# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412

# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412

Из: https://askubuntu.com/questions/893775/cant-ssh-to-server-with-vpn-connection

#!/bin/sh
ip rule add from <your-server-ip> table 128
ip route add table 128 to <your-server-subnet> dev <your-interface>
ip route add table 128 default via <server-gateway>

^ Оба они, кажется, ничего не меняют, похоже, нет никакой разницы с ними или без них. Однако я не уверен, что использовал правильную подсеть. Лучшее, что я смог найти, это CIDR Google Cloud. 35.224.0.0/12, 35.240.0.0/13, и 35.208.0.0/12.

Из: Предотвращение потери соединения SSH после входа в VPN на сервере

route add -host <my-ip> gw <default gateway>

^ Это останавливает отключение сеанса SSH, но тогда трафик фактически не проходит через VPN.

Любой совет будет очень признателен прямо сейчас, потому что у меня нет идей.

Проблема в том, что трафик ssh начинает проходить через VPN при подключении к нему. Это означает ssh соединение не может продолжаться (так как вы изменили конечную точку).

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

Итак, удалите все правила, которые вы добавили до сих пор, чтобы решить проблему, начните с чистого листа. Затем подключитесь через ssh.

Сделайте ip route list чтобы получить информацию о маршруте по умолчанию (я предполагаю, что ваш текущий трафик ssh использует это), вы увидите что-то вроде этого:

# ip route list
default via 172.24.1.1 dev DEVICE onlink 

Теперь вы добавляете явный маршрут для вашего ssh-трафика (измените DEVICE, чтобы он совпадал с маршрутом по умолчанию):

# ip route add your.ssh.remote.address dev DEVICE

И запуск VPN не должен останавливать ваш сеанс ssh. После запуска VPN вы можете сделать #ip route list и проверьте, существует ли еще ваш добавленный вручную маршрут. Если это не так, возможно, VPN удаляет маршруты.