OpenVPN разрешает раздельное туннелирование, клиент может перегружаться через собственное интернет-соединение

Я пытаюсь включить раздельное туннелирование в моей сети VPN. Я использую OpenVPN для размещения своей VPN-сети и выполнил шаги, чтобы заставить работать раздельное туннелирование, однако мои клиенты все еще получают: 0.0.0.0 {VPN local address} push

Вот мой файл server.conf на сервере OpenVPN, который имеет реальный публичный интерфейс с реальным IP.

port 1194
proto udp
dev tun
#ssl stuff
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/dh2048.pem
#server statement and subnet for VPN IPs /24 for simplicity
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt # for persistant IPing of VPN clients
push "route-nopull"
push "route 172.16.0.11 255.255.255.255 vpn_gateway" #internal node i want VPN clients to have access to
push "route 172.16.0.3 255.255.255.255 vpn_gateway" #internal node I want VPN clients to have access to
push "dhcp-option DNS 172.16.0.3" # so VPN clients use internal dns for resolution
client-to-client
[rest of config omitted]

Таблица маршрутов клиента, где: 172.16.250.10 - это VPN-адрес клиента {publicIP} = - публичный IP-адрес сети клиента; {localIP} = - это локальный IP-адрес, например 192.168.xx, в локальной сети, в которой он находится, а не VPN.

Destination      Gateway        Genmask         Flags
0.0.0.0          10.0.0.10      0.0.0.0         UG
{publicIP}       {localIP}      255.255.255.255 UGH
10.0.0.0         10.0.0.10      255.255.255.0   Ug
10.0.0.10        0.0.0.0        255.255.255.255 UH   # don't really understand this statement
172.16.0.3       10.0.0.10      255.255.255.255 UGH  #from push command in server.conf
172.16.0.11      10.0.0.10      255.255.255.255 UGH  #from push command in server.conf
{client's localSubnet}    0.0.0.0        255.255.255.0   U

IPTables на коробке OpenVPN, у этого поля есть открытый интерфейс, используемый для приема входящих запросов OpenVPN.

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  10.0.0.0/24      172.16.0.3          /* Allow VPN IPs to connect to the internal DNS for resolution */
ACCEPT     all  --  10.0.0.0/24      172.16.0.11         /* Allows VPN IPs to connect to homeserver */

Я считаю, что это единственные конфиги, связанные с подключением VPN в моей настройке. Поэтому я немного запутался, так как мои VPN-клиенты получают операторы explicity push в свои таблицы маршрутов, однако клиент по-прежнему не может использовать свой локальный шлюз для IP-запросов, не предназначенных для сетей 10.0.0.0/24 или 172.16.0.0/24.

Спасибо за помощь и время заранее.

-Джим

0 ответов

Я недавно сделал нечто подобное.
Но так как мне приходится выбирать между перенаправлением всего трафика и только трафиком vpn.
Я настроил это в файле client.ovpn.
Итак, у меня есть 2 файла. Один для перенаправления всего трафика через VPN (незащищенные сети), а другой - для раздельного туннелирования (защищенные сети).

Я только добавляю следующие строки в client.ovpn

Способ 1:

Добавьте эту строку в файл client.conf или добавьте --route-noexec в openvpn linecommand

route-noexec

(Таблица маршрутов клиента с этой опцией)

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    302    0        0 wlan0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     302    0        0 wlan0

А также curl ipinfo.io показывает реальное местоположение клиента.


Способ 2:

Добавьте эти строки в файл client.conf

route-nopull
route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     128.0.0.0       UG    0      0        0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG    302    0        0 wlan0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
128.0.0.0       192.168.1.1     128.0.0.0       UG    0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     302    0        0 wlan0

А также curl ipinfo.io показывает реальное местоположение клиента.


Ваш случай.

Если вы добавите эту строку в файл client.conf

route-nopull
route 172.16.0.11 255.255.255.255 vpn_gateway
route 172.16.0.3 255.255.255.255 vpn_gateway
route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway

Я проверяю это на одном из моих клиентов и:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     128.0.0.0       UG    0      0        0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG    302    0        0 wlan0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
128.0.0.0       192.168.1.1     128.0.0.0       UG    0      0        0 wlan0
172.16.0.3      10.8.0.1        255.255.255.255 UGH   0      0        0 tun0
172.16.0.11     10.8.0.1        255.255.255.255 UGH   0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     302    0        0 wlan0

А также curl ipinfo.io показывает реальное местоположение клиента.

Другие вопросы по тегам