Я пытаюсь включить раздельное туннелирование в своей сети 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
Добавьте эту строку в 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
показывает реальное местонахождение клиента.
Добавьте эти строки в 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
показывает реальное местонахождение клиента.