Я только что закончил настройку своей 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
в данном случае это Интернет-шлюз.