Назад | Перейти на главную страницу

OpenVPN не перенаправляет весь трафик через VPN

Я только что закончил настройку своей VPN, и Google показывает, что мой IP-адрес совпадает с IP-адресом моей VPN, так что все работает нормально. Однако, когда я вхожу на VPN-сервер через SSH, он показывает, что мой последний логин совпадает с моим IP (без VPN) (даже после нескольких входов / выходов). Это заставляет меня думать, что не все данные проходят через VPN.

В моем server.conf У меня есть следующие директивы:

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

И iptables настраивается следующим образом:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Есть способ исправить это? Это

Это 100% ожидаемое поведение. Чтобы направить весь трафик через ваше VPN-соединение, добавляется маршрут по умолчанию с виртуальным интерфейсом в качестве цели. Но это представляет проблему - сетевые пакеты, используемые для передачи самого VPN-соединения, также будут маршрутизироваться на интерфейс VPN, создавая своего рода петлю маршрутизации. Чтобы решить эту проблему, добавляется статический маршрут хоста к серверу VPN с использованием вашего обычного интернет-шлюза в качестве цели. Таким образом, пакеты, созданные OpenVPN, могут отправляться на сервер OpenVPN через Интернет, в то время как все остальное направляется по каналу VPN.

Из-за маршрута к хосту, если вы попытаетесь подключиться по SSH к интернет-адресу вашего VPN-сервера, соединение будет проходить через ваше обычное интернет-соединение, и вы увидите свой IP-адрес в выводе из who или last. С другой стороны, если вы подключитесь по SSH к другому концу VPN-туннеля, ваше соединение будет выглядеть как исходящее с IP-адреса, назначенного клиентскому концу туннеля.

Например, вот как настраивается типичный виртуальный интерфейс OpenVPN:

$ ifconfig
...
tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 10.10.11.9 --> 10.10.11.10 netmask 0xffffffff 
    open (pid 48658)

Удаленный конец VPN-туннеля в этом случае 10.10.11.10. Это стиль BSD ifconfig вывод (собственно OS X). Вывод в Linux немного отличается. И это соответствующий маршрут хоста (опять же в формате BSD):

$ netstat -rn
Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.11.9         UGSc            0        0    tun0
default            10.0.1.1           UGSc           22        0     en0
10.0.1/24          link#4             UCS             1        0     en0
10.10.11/24        10.10.11.9         UGSc            0        0    tun0
10.10.11.9         10.10.11.10        UHr             5        0    tun0
yy.yy.yy.yy/32     10.0.1.1           UGSc            1        0     en0

Первый маршрут направляет весь трафик (кроме того, что направлен в локальную сеть). 10.0.1/24) к tun0 интерфейс, то есть к OpenVPN. Статический маршрут к серверу OpenVPN - это маршрут в последней строке. 10.0.1.1 в данном случае это Интернет-шлюз.