1

Недавно я настроил сервер Debian Wheezy с OpenVPN, чтобы помочь некоторым друзьям в тех областях, где интернет-цензура является проблемой (включая блокировку трафика VPN в целом). Чтобы преодолеть это, клиенты сначала создают SSH-туннель к серверу, а затем подключаются к VPN через него.

На сервере открыт SSH порт 40001 и порт 40002 для сервера OpenVPN с протоколом TCP. Кажется, что оба они правильно настроены на маршрутизаторе.

Я даю своим клиентам скрипт, который туннелирует их localhost:8080 на myserver:40001, а затем подключается к VPN. Их клиентская конфигурация OpenVPN имеет «remote», установленный на «localhost 8080», так что VPN-соединение направлено через этот SSH-туннель.

Моя проблема в том, что этот туннель, кажется, иногда работает (по-видимому, в случайное время), но часто не может удерживать соединение. Я также видел, как он работает одновременно на некоторых компьютерах (в основном, на моем), но не на других. В случае сбоя клиент подключится к VPN, но не сможет получить доступ к Интернету, и примерно через 30-40 секунд процесс туннеля SSH просто завершится (при открытии туннеля вручную появляется только «Ошибка записи: сломанный канал»). когда он умрет) Я не могу найти что-либо в журналах сервера или клиента, чтобы предположить, почему это происходит или что убивает туннель.

Я знаю, что это не ошибка самого VPN-соединения, потому что если я изменю удаленный IP-адрес с localhost:8080 на реальный публичный адрес и порт OpenVPN моего сервера, он будет работать правильно.

Я подозреваю, что мои правила iptables таковы, что входящие соединения напрямую к VPN приспособлены, но соединения с VPN, поступающие изнутри самого сервера (из-за туннеля SSH), обрабатываются по-разному. Однако, если бы это было так, я не понимаю, почему это будет работать только изредка. Что еще может быть причиной этих разрывов соединения? Я не могу найти ничего релевантного ни в /var/log/auth.log, /etc/openvpn/openvpn.log, ни в любых клиентских журналах.

Мой /etc/iptables/rules.v4 выглядит следующим образом:

*nat
:PREROUTING ACCEPT [211:13875]
:INPUT ACCEPT [3:371]
:OUTPUT ACCEPT [5:348]
:POSTROUTING ACCEPT [5:348]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [7937:9042429]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10987:15593548]
:fail2ban-ssh - [0:0]
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A INPUT -p tcp -d localhost --destination-port 40001 -j ACCEPT
COMMIT

РЕДАКТИРОВАТЬ: Я нашел, что является причиной проблемы, но я пока не знаю, как ее исправить. Когда клиент запускает VPN, весь трафик, включая трафик самого туннеля SSH, направляется через него. Это, конечно же, круговой канал, и он разрушает туннель. Мне просто нужно как-то исключить SSH-туннель из маршрутизации OpenVPN ...

0