SSH к серверу, который подключен к VPN
Мой сервер должен быть подключен к VPN как клиент. Когда я запускаю скрипт OpenVPN (из HMA), соединение с моего локального компьютера с сервером через SSH теряется - подключение больше невозможно, и мне приходится вручную завершать процесс VPN. Кроме того, скрытая служба TOR (страница.onion) в это время недоступна.
Возможно ли как-то, что страница TOR доступна, и я могу подключиться через SSH, пока сервер подключен к VPN?
2 ответа
Проблема состоит в том, что шлюз по умолчанию изменяется OpenVPN, и это разрывает любое соединение, входящее через не-VPN интерфейс. Linux будет отправлять ответы на пакеты, которые поступают на реальном интерфейсе через интерфейс VPN! Вам нужно настроить соответствующие маршруты перед запуском OpenVPN.
То, что следует, работает для меня. Он использует iptables и ip (iproute2). Ниже предполагается, что интерфейсом шлюза по умолчанию перед запуском OpenVPN является "eth0". Идея состоит в том, чтобы при установлении соединения с eth0, даже если eth0 больше не является интерфейсом шлюза по умолчанию, ответные пакеты для соединения снова возвращаются на eth0.
Вы можете использовать один и тот же номер для метки соединения, метки межсетевого экрана и таблицы маршрутизации. Я использовал разные числа, чтобы сделать различия между ними более очевидными.
# 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
===
ОБНОВИТЬ:
Вышесказанное прекрасно работает для меня в Debian Jessie. Но в более старой системе Wheezy я только что обнаружил, что мне нужно добавить "через" к записи таблицы маршрутизации:
# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412
Там "12.345.67.89" должен быть оригинальный шлюз не VPN.
У меня похожая проблема. Мой рабочий стол Ubuntu работает по VPN, и мое обычное SSH-соединение не работает вне домашней сети.
Что-то, о чем я только что подумал. У вас все еще есть порты, перенаправленные на этот компьютер?
VPN назначает новый IP-адрес с сайта VPN, чтобы маршрутизатор больше не мог найти этот IP-адрес для подключения.
Я предполагаю, что вам нужно знать новый IP-адрес, назначенный хостом VPN, чтобы знать, к какому адресу подключаться.
Я даю только образованные догадки, а не известное исправление; поэтому, пожалуйста, не ругайте меня, если это не сработает.:)
В ходе дальнейшего расследования я обнаружил, что вам нужно перенаправить порты через VPN (я думаю), потому что VPN перенаправляет порт 80, а ваши SSH-туннели обычно используют порт 22. Я думаю, вам нужно перенаправить порт 22 через VPN, чтобы при вы подключаетесь к вашему vpn через порт 80, он перенаправляет вас на ваш перенаправленный порт, необходимый для вашего туннеля SSH, т.е. PuTTy.
Я все еще не на 100% уверен, что это как это сделать. Если кто-то может это подтвердить, было бы здорово.