Маршрутизация определенной подсети в туннель VPN

Моя сеть выглядит так:

Введите описание изображения здесь

Я пытаюсь настроить мой маршрутизатор, чтобы подсеть (192.168.2.0/24) маршрутизировалась через туннель VPN (tun0) на шлюзе / маршрутизаторе.

В то же время клиенты в подсети (192.168.1.0/24) маршрутизируются непосредственно через ppp0, то есть не через VPN.

Я не хочу запускать клиенты программного обеспечения VPN, а некоторым клиентам в сети нужен прямой доступ. Например, игровой компьютер Windows, телефон voip и т. Д.

Мой маршрутизатор также запускает несвязанный DNS-сервер, который перенаправляет запросы DNS на dnscrypt-proxy.

Сетевые интерфейсы на маршрутизаторе настроены так:

auto lo iface lo inet loopback auto lo:1 iface lo:1 inet static address 127.0.0.2 netmask 255.0.0.0 auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 # Virtual interface auto eth0:2 iface eth0:2 inet static address 192.168.2.1 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 192.168.0.2 netmask 255.255.255.252 auto ppp0 iface ppp0 inet ppp pre-up ip link set dev eth1 up provider <isp> post-down ip link set dev eth1 down 

На данный момент я использую виртуальный интерфейс, т. Е. Eth0: 2. Мне также интересно, подходит ли это или должна быть VLAN, т.е. eth0.2?

Насколько мне известно, единственное различие заключается в том, что для клиентов тогда потребуется интерфейс VLAN, например:

/etc/systemd/network/MyEth.network

 [Match] Name=enp10s0 [Network] DHCP=v4 DNS=192.168.2.1 Address=192.168.2.30/24 Gateway=192.168.2.1 VLAN=vlan2 

/etc/systemd/network/MyEth.netdev

 [NetDev] Name=vlan2 Kind=vlan [VLAN] Id=2 

И не может пересекать подсети, например, 192.168.1.10 не сможет разговаривать с 192.168.2.10.

Правила iptables, с которыми я пытался получить эту работу, заключаются в следующем:

 iptables -F iptables -t nat -F export WAN=ppp0 # Link to ISP export INT_IF=eth0 # Interface that serves internal network export EXT_IF=eth1 # Interface between router and modem export WAN_TUNNEL=tun0 # VPN tunnel created by OpenVPN export VPN_VLAN_IF=eth0:2 # Interface internal clients have as their gateway # Allows internet access on gateway iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m conntrack --ctstate INVALID -j DROP ############# # NAT Rules # ############################################################################### # VPN iptables -I FORWARD -i ${VPN_VLAN_IF} -d 192.168.2.0/24 -j DROP iptables -A FORWARD -i ${VPN_VLAN_IF} -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -i ${WAN_TUNNEL} -d 192.168.2.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ${WAN_TUNNEL} -j MASQUERADE ############################################################################### ############################################################################### # NO VPN iptables -I FORWARD -i ${INT_IF} -d 192.168.1.0/24 -j DROP iptables -A FORWARD -i ${INT_IF} -s 192.168.1.0/24 -j ACCEPT iptables -A FORWARD -i ${WAN} -d 192.168.1.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ${WAN} -j MASQUERADE ############################################################################### iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done /etc/init.d/iptables save 

Я также ожидаю, что мне нужно будет использовать route-nopull в моей конфигурации openvpn, иначе все на шлюзе будет маршрутизироваться через VPN?

По умолчанию, когда я подключаюсь к серверу OpenVPN, я вижу:

 openvpn[3469]: /sbin/ip route add <ip_of_vpn> dev ppp0 openvpn[3469]: /sbin/ip route add 0.0.0.0/1 via 172.16.32.1 openvpn[3469]: /sbin/ip route add 128.0.0.0/1 via 172.16.32.1 

Что приводит к следующему маршруту:

 ip route 0.0.0.0/1 via 172.16.32.1 dev tun0 default dev ppp0 scope link metric 300 <ip_of_vpn> dev ppp0 scope link 128.0.0.0/1 via 172.16.32.1 dev tun0 172.16.32.0/20 dev tun0 proto kernel scope link src 172.16.39.64 192.168.0.0/30 dev eth1 proto kernel scope link src 192.168.0.2 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.1 <ip_from_isp> dev ppp0 proto kernel scope link src XXXX 

Мне нужен статический маршрут для маршрутизации 192.168.2.0/24 в VPN, т. Е. Для tun0

One Solution collect form web for “Маршрутизация определенной подсети в туннель VPN”

Это может быть достигнуто с помощью настраиваемой таблицы маршрутизации и политики (я недавно сделал что-то очень похожее)

  1. Сначала создайте настраиваемую таблицу маршрутизации для VPN

     echo "10 vpn" >> /etc/iproute2/rt_tables 
  2. Сообщите iproute2, чтобы использовать эту таблицу маршрутизации для трафика в сеть 192.168.2.0 и из нее

     ip rule add from 192.168.2.0/24 table vpn ip rule add to 192.168.2.0/24 table vpn 
  3. Настройка NAT для маскировки сети 192.168.2.0

     iptables -A FORWARD -i eth0:2 -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -i tun0 -d 192.168.2.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o tun0 -j MASQUERADE 
  4. Включить переадресацию IP, если она не включена (требуется для NAT)

     echo 1 > /proc/sys/net/ipv4/ip_forward 
  5. В конфигурации OpenVPN добавьте следующие строки

     #Prevents default gateway from being set on the default routing table route-noexec #Allows route-up script to be executed script-security 2 #Calls custom shell script after connection to add necessary routes route-up /etc/openvpn/route-up.sh 
  6. Создайте собственный сценарий оболочки в /etc/openvpn/route-up.sh и chmod + x it

     #!/bin/sh #Clear all routes on vpn routing table (this is to make sure there isn't any crap left over from a previous vpn connection /sbin/ip route flush table vpn #Copy routing table from main routing table into vpn table /sbin/ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table vpn $ROUTE; done #Add default gateway to vpn routing table /sbin/ip route add default via ${route_vpn_gateway} dev ${dev} table vpn 

Шаги 2 и 3 не будут повторяться при перезагрузках, поэтому вам необходимо будет добавить эти части в сценарии инициализации по мере необходимости.

  • В чем разница между прокси-сервером и VPN?
  • Почему моя VPN не будет подключаться?
  • OS X 10.7, не может войти в любой сервер VPN L2TP
  • Как заставить только Chrome отправлять сетевой трафик через VPN-соединение в Windows 7?
  • Сеть Windows 10 Pro: позволяет пользователям удаленно получать доступ к учетному программному обеспечению на ноутбуке; Безопасность и концептуальные вопросы перед тестированием
  • Двойной маршрутизатор OpenVpn Port Forwarding
  • Как настроить параметр «ручное окно» VPN для сервера и клиента, чтобы разрешить спутниковое VPN-соединение?
  • Клиент OpenVPN как сервер SOCKS 5?
  • Измените VPN в Windows 7 из командной строки
  • Как настроить сетевой менеджер Ubuntu / Linux для выборочного маршрутизации сетевого трафика через VPN?
  • Может ли VPN увидеть использование веб-браузера?
  • Давайте будем гением компьютера.