Мой сервер должен быть подключен к VPN какклиент. Когда я запускаю скрипт OpenVPN (из HMA), соединение с моей локальной машины к серверу по SSH теряется - подключение больше невозможно, и мне приходится вручную завершать процесс VPN. Кроме того, в это время недоступна скрытая служба TOR (страница .onion).
Возможно ли, что страница TOR будет доступна и я смогу подключиться по SSH, пока сервер подключен к VPN?
решение1
Проблема в том, что шлюз по умолчанию меняется 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 я только что обнаружил, что мне нужно добавить "via" в запись таблицы маршрутизации:
# 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-шлюзом.
решение2
У меня похожая проблема. Мой рабочий стол Ubuntu подключен к VPN, а мое обычное SSH-подключение не работает из-за пределов домашней сети.
Хотя я только что подумал об этом. У тебя все еще проброшены порты на тот компьютер?
VPN назначает новый IP-адрес с сайта VPN, поэтому маршрутизатор больше не может найти этот IP-адрес для подключения.
Я предполагаю, что вам нужно знать новый IP-адрес, назначенный VPN-хостом, чтобы знать, к какому адресу подключаться.
Я лишь даю обоснованные предположения, а не известные решения; поэтому, пожалуйста, не ругайте меня, если это не сработает. :)
При дальнейшем исследовании я обнаружил, что вам нужно перенаправить порты через ваш VPN (я думаю), потому что VPN перенаправляет порт 80, а ваши туннели SSH обычно используют порт 22. Я думаю, вам нужно перенаправить порт 22 через ваш VPN, чтобы при подключении к вашему VPN через порт 80 он перенаправлял вас на ваш перенаправленный порт, требуемый вашим туннелем SSH, т. е. PuTTy.
Я все еще не уверен на 100%, как это сделать. Если кто-то может это подтвердить, было бы здорово.