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

openvpn - перенаправить сетевой трафик из определенной подсети на определенный интерфейс tun

Я использую устройство под управлением openwrt (chaos_calmer 15.05)

Я пытаюсь перенаправить сетевой трафик с двух разных SSID на два разных vps, на которых запущен openvpn

Моя установка работает только с одним интерфейсом Wi-Fi / Tun. Кажется невозможным работать с двумя VPN (клиентом openvpn) одновременно.

Я не понимаю, почему: / Я думаю, что это не очень сложная установка. Надеюсь, кто-нибудь может мне помочь, раз уж вы - сетевые эксперты.

Я думаю, что это проблема маршрутизации, но я не уверен. Кто-нибудь может помочь мне исправить это, пожалуйста?

Чтобы упростить это, моя установка выглядит так:

eth0 (internet link) <===== tun0 <==== wifi-A
eth0 (internet link) <===== tun1 <==== wifi-B

Обратите внимание на следующие утверждения

  1. Мое устройство openwrt получает интернет-соединение с интерфейсом eth0 с использованием DHCP

  2. Я создал мост на своем интерфейсе wlan0, чтобы иметь возможность транслировать два SSID: (wifi-a и wifi-b)

  3. На wifi-a: на DHCP-сервере работает пул 172.17.42.100-200 gw 172.18.42.1

  4. На wifi-b: на DHCP-сервере работает пул 172.18.42.100-200 gw 172.18.42.1

  5. У меня два VPS, на которых я установил openvpn: PublicIP-1 и PublicIP-2

  6. Я запускаю на своем устройстве два клиента openvpn на общедоступный IP-1 (tun0) и на общедоступный IP-2 (tun1)

  7. Наконец, я подключил подсеть wifi-a к tun0 и подсеть wifi-b к tun1 со следующими правилами iptables:

    iptables -t nat -A POSTROUTING -s 172.17.42.0/24 -o tun0 -j MASQUERADE iptables -A FORWARD -s 172.17.42.0/24 -o tun0 -j ACCEPT iptables -A FORWARD -d 172.17.42.0/24 -m состояние --state УСТАНОВЛЕНО, СВЯЗАННО -i tun0 -j ACCEPT

    iptables -t nat -A POSTROUTING -s 172.18.42.0/24 -o tun1 -j MASQUERADE
    iptables -A FORWARD -s 172.18.42.0/24 -o tun1 -j ACCEPT iptables -A
    FORWARD -d 172.18.42.0/24 -m state --state ESTABLISHED,RELATED -i tun1 -j ACCEPT
    

Ниже мои детали интерфейса:

eth0 inet адрес: 192.168.0.10 Bcast: 192.168.0.255 Маска: 255.255.255.0

br-wifi-a inet адрес: 172.17.42.1 Bcast: 172.17.42.255 Маска: 255.255.255.0

br-wifi-b inet адрес: 172.18.42.1 Bcast: 172.18.42.255 Маска: 255.255.255.0

tun0 inet адрес: 10.8.0.6 P-t-P: 10.8.0.5 Маска: 255.255.255.255

tun1 inet адрес: 10.9.0.6 P-t-P: 10.9.0.5 Маска: 255.255.255.255

Моя таблица маршрутов:

Шлюз назначения Флаги Genmask Метрическая ссылка
Используйте Iface

по умолчанию 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 10.8.0.5 * 255.255.255.255 UH 0 0 0 tun0 10.9.0.1 10.9.0.5 255.255.255.255 UGH 0 0 0 tun1 10.9.0.5 * 255.255.255.255 UH 0 0 0 тун1

PublicIP-1 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0

PublicIP-2 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0

172.17.42.0 * 255.255.255.0 U 0 0 0 бр.

172.22.42.0 * 255.255.255.0 U 0 0 0 br-lan 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

Быстрая отладка:

ping google.com -I tun1 PING google.fr (108.177.119.94): 56 байтов данных 64 байта из 108.177.119.94: seq = 0 ttl = 43 time = 29,665 мс

ping google.com -I tun0 PING google.fr (108.177.119.94): 56 байтов данных 64 байта из 108.177.119.94: seq = 0 ttl = 43 time = 30,277 мс

ping google.com -I eth0 PING google.fr (108.177.119.94): 56 байтов данных 64 байта из 108.177.119.94: seq = 0 ttl = 42 time = 17,860 мс ^ C

Вы знаете, в чем я ошибаюсь? Спасибо за помощь ребята,


Кроме того, я попробовал следующее, чтобы добавить gw по умолчанию для моих интерфейсов tun:

echo "1 vpna" >> /etc/iproute2/rt_tables
echo "2 vpnb" >> /etc/iproute2/rt_tables

ip rule add from 10.8.0.0/24 dev tun0 table vpna
ip rule add from 10.9.0.0/24 dev tun1 table vpnb

ip route add default via 10.8.0.5 dev tun0 table vpna
ip route add default via 10.9.0.5 dev tun1 table vpnb