В настоящее время я посещаю Китай, поэтому у меня есть несколько вариантов настройки VPN. Однако, мои VPN-серверы имеют привычку внезапно исчезать из сети после того, как я использовал их некоторое время.

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

Итак, я подключаюсь к серверу следующим образом:

ssh peter@some-server -L 4444:vpn-server:1194 -N

И затем добавьте это в мою конфигурацию клиента openvpn:

remote localhost 1194

К сожалению, это не работает. Соединение аутентифицируется, но после этого я не могу подключиться ни к внутренней части VPN (ping 10.8.0.1), ни к внешней (ping 8.8.8.8). Должно ли это работать, или я что-то недопонимаю?

Есть ли какое-то правило iptables nat, которое я должен добавить? Единственное правило nat, которое я добавил до сих пор:

-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

1 ответ1

1

Упрощенный подход к настройке вашего VPN-соединения через SSH-туннель не сработает. Первая проблема: вы только туннелирование соединение с самим сервером VPN, который не то позволит весь трафик будет проходить через сервер VPN через соединение ssh (таким образом запутывания соединение). Исправление для этого заключается в использовании динамического прокси-сервера SOCKS [5] и указании OpenVPN подключиться через этот прокси-сервер. Добавьте в свой конфигурационный файл OpenVPN:

socks-proxy localhost 6886
socks-proxy-retry

Затем запустите сеанс ssh с динамическим прокси-сервером SOCKS:

ssh -D 6886 -N REMOTE

Затем вы можете начать подключение OpenVPN. Однако это все еще имеет еще один сбой, по крайней мере, если вы хотите перенаправить весь трафик через VPN (директива OpenVPN redirect-gateway def1). Чтобы это работало, вам нужно поддерживать маршрут к конечной точке прокси-сервера SOCKS, который не маскируется маршрутами, добавленными клиентом OpenVPN. Для этого добавьте еще одну директиву в конфигурацию OpenVPN, которая выглядит следующим образом:

route REMOTE-IP 255.255.255.255 net_gateway default

Возможно, вы сможете использовать имя хоста REMOTE в этой директиве, но вам может потребоваться разрешить его в IP-адрес вручную.

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

В качестве альтернативы вы можете также использовать obfs4proxy (например, этот и этот или упакованный для Ubuntu).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .