Маршрутизация всего кроме определенного диапазона IP через туннель OpenVPN

2

Я работал с моим сервером OpenVPN некоторое время, и у меня довольно интересная проблема. Мне нужно перенаправить весь клиентский трафик через туннель, за исключением пары IP-адресов, которые должны быть разрешены локально. То, как я это делаю, это отправка этих маршрутов с сервера:

Директивы сервера PUSH

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

Я вижу, что перевод на эти маршруты Windows:

Маршруты Windows встречаются

Wed Aug 31 15:14:35 2011 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route 10.8.0.1,topology net30,ping 5,ping-restart 30,ifconfig 10.8.0.6 10.8.0.5'
Wed Aug 31 15:14:35 2011 ROUTE default_gateway=192.168.1.254

Wed Aug 31 15:14:40 2011 C:\WINDOWS\system32\route.exe ADD 199.[*.*.*] MASK 255.255.255.255 192.168.1.254
Wed Aug 31 15:14:40 2011 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.5
Wed Aug 31 15:14:40 2011 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.5
Wed Aug 31 15:14:40 2011 C:\WINDOWS\system32\route.exe ADD 10.8.0.1 MASK 255.255.255.255 10.8.0.5

Я скрыл IP-адрес своего сервера, начиная с 199, в целях безопасности.

Что я собрал

Я предполагаю, что 0.0.0.0 - это своего рода код для «всего», поэтому я не уверен, как заставить это работать, но общая идея заключается в том, что мне нужен конкретный диапазон IP ( 172.16.*), который можно разрешить на ЛОКАЛЬНАЯ СЕТЬ (клиента) означает, что он не проходит через VPN-туннель, и клиент может подключиться к нему 172.16.*локально.

Это возможно? Маршруты могут быть выполнены через командную строку, "push" сервера или параметры конфигурации клиента. Любой способ заставить это работать, все еще направляя другой трафик, действительно подойдет.

Дополнительная информация

У меня сервер работает на 64-битном Debian, а клиент работает на Windows 7 (хотя Vista должна работать так же).

Конфигурации клиент / сервер могут быть предоставлены при необходимости .

caesay
источник
Технически, 0.0.0.0 означает «все» только при добавлении с маской 0.0.0.0, или «/ 0». В вашем случае вместо этого добавляются два более специфических маршрута (0.0.0.0/1 и 128.0.0.0/1); конечный результат одинаков (все адреса совпадают), но добавленные маршруты имеют приоритет над маршрутом «по умолчанию» 0.0.0.0/0. Вы все еще правы, хотя.
Гравитация

Ответы:

4

Похоже, что после некоторых дополнительных исследований, основанных на ответе Гравити, более конкретные маршруты будут иметь приоритет, после того, как PUSH сервера я могу просто выполнить

--route [ip to bypass] 255.255.255.0 net_gateway

net_gateway, как определено в директиве route на странице руководства openvpn, преобразуется в существующий шлюз ip по умолчанию

caesay
источник
Вы можете сделать толчок для этого маршрута тоже: push "route [ip to bypass] 255.255.255.0 net_gateway".
Людовик Куты
1

Просто добавьте другой маршрут, и он будет иметь приоритет над менее конкретными:

172.16.*переводится с 172.16.0.0помощью маски сети 255.255.0.0:

Маршрут добавить 172.16.0.0 маску 255.255.0.0 если индекс

где index - это индекс сетевого интерфейса вашей локальной сети, как показано route print. Например, 0x3или подобное.

grawity
источник
Но вы должны знать интерфейс. Это также означает, что сервер VPN не проталкивает сам маршрут.
Людовик Куты