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

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

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

Вот мой файл 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} = это localIP, например 192.168.x.x локальной сети, в которой он находится, а не 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 получают явные push-запросы в свои таблицы маршрутов, однако клиент по-прежнему не может использовать свой локальный шлюз для IP-запросов, не предназначенных для сетей 10.0.0.0/24 или 172.16.0.0/24.

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

-Джим

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

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

Способ 1:

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

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 показывает реальное местонахождение клиента.