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