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

OpenVPN на OpenWRT: маршрутизация определенной подсети через VPN-туннель

Я установил маршрутизатор с установленным OpenWRT 15.05 (Chaos Calmer) и настроил две сети Wi-Fi, каждая из которых имеет собственный сетевой интерфейс:

Я настроил клиентское программное обеспечение OpenVPN для подключения к службе vpn vpnservice1. В системных журналах OpenWRT я вижу, что клиент openvpn успешно подключается к vpnservice1 и интерфейс tun0 открыт.

Моя цель - направить весь трафик из сети Wi-Fi-1 (10.0.2.0/24) через шлюз по умолчанию; и направлять весь интернет-трафик на Wi-Fi-2 (10.0.10.0/24) через интерфейс vpn tun0. Заметка. Я бы хотел, чтобы устройства были подключены к Wi-Fi-2 сеть (10.0.10.0/24), чтобы иметь возможность подключаться к другим устройствам в этой сети.

В текущей конфигурации - устройства на Wi-Fi-1 сеть может подключаться к Интернету через шлюз по умолчанию. Однако устройства, подключенные к Wi-Fi-2 не может подключиться к Интернету. Любая помощь приветствуется :)

Моя конфигурация описана ниже:

  1. Конфигурация межсетевого экрана (/ etc / config / firewall):

    config rule config rule option src 'wan' option dest 'lan' option proto 'esp' option target 'ACCEPT' config rule option src 'wan' option dest 'lan' option dest_port '500' option proto 'udp' option target 'ACCEPT' config zone option input 'ACCEPT' option output 'ACCEPT' option name 'stream' option network 'stream' option masq '1' option forward 'ACCEPT'
    config zone option input 'ACCEPT' option output 'ACCEPT' option name 'stream_vpn' option forward 'ACCEPT' option network 'stream_vpn' option masq '1' config forwarding option dest 'stream' option src 'stream_vpn' config forwarding option dest 'stream_vpn' option src 'stream'

  2. Конфигурация сети (/ etc / config / network):

    config interface 'lan' option ifname 'eth1' option force_link '1' option type 'bridge' option proto 'static' option netmask '255.255.255.0' option ip6assign '60' option ipaddr '10.0.2.1' config interface 'wan' option ifname 'eth0' option proto 'dhcp' config interface 'stream_vpn' option proto 'none' option ifname 'tun0' config interface 'stream' option proto 'static' option ipaddr '10.0.10.1' option netmask '255.255.255.0' option type 'bridge' option _orig_ifname 'stream_lan wlan1-2' option _orig_bridge 'true' option ifname 'stream_lan'

  3. Конфигурация клиента OpenVPN 'vpnservice1' (/ etc / openvpn):

config openvpn 'vpnservice1' option dev_type 'tun' option client '1' option resolv_retry 'infinite' option persist_tun '1' option persist_key '1' option tun_ipv6 '1' option cipher 'AES-256-CBC' option remote_random '0' option route_delay '2' option route_nopull '1' option route '10.0.10.1 255.255.255.255' option auth_retry 'interact' option auth 'SHA1' option remote_cert_tls 'server' option reneg_sec '0' option tls_client '1' option verb '3' option mute '20' option float '1' option ifconfig_nowarn '1' option auth_user_pass '/etc/openvpn/vpnservice1/userpass.txt' option port '1194' option remote 'vpnservice1.com' option auth_nocache '1' option dev 'tun0' option proto 'udp' option comp_lzo 'adaptive' option enabled '1' option fast_io '1' option tun_mtu '1500' option tun_mtu_extra '32' option ca '/etc/openvpn/vpnservice1/vpnservice1_com.crt' option ping '15' option ping_restart '0' option tls_auth '/etc/openvpn/vpnservice1/vpnservice1_com_tls.key 1' option script_security '2'

  1. Список интерфейсов (ifconfig -a):

    br-lan Link encap:Ethernet HWaddr C0:56:27:7A:92:D3 inet addr:10.0.2.1 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::c256:27ff:cd56:92a1/64 Scope:Link inet6 addr: fd1d:c378:aa11::1/60 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15469 errors:0 dropped:0 overruns:0 frame:0 TX packets:15465 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2029206 (1.9 MiB) TX bytes:9594955 (9.1 MiB) br-vpn Link encap:Ethernet HWaddr 06:25:9C:13:97:F5 inet addr:10.0.10.1 Bcast:10.0.10.255 Mask:255.255.255.0 inet6 addr: fe80::425:cc22:ab34:22e1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:640 errors:0 dropped:0 overruns:0 frame:0 TX packets:566 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:101972 (99.5 KiB) TX bytes:71890 (70.2 KiB) eth0 Link encap:Ethernet HWaddr C2:56:27:7A:92:D3 inet addr:10.0.1.21 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::c056:34ff:abcd:84d3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13175 errors:0 dropped:0 overruns:0 frame:0 TX packets:12879 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:532 RX bytes:8697083 (8.2 MiB) TX bytes:1939234 (1.8 MiB) Interrupt:194 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.8.134 P-t-P:10.8.8.133 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

  2. Список маршрутизации (маршрут -n):

    Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 eth0 10.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 br-vpn 10.0.10.1 205.1.2.3 255.255.255.255 UGH 0 0 0 tun0 205.1.2.3 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan


@porchez Я попробовал предложенные вами изменения. Я установил пакет iproute2.

В / etc / iproute2 / rt_tables я добавил строчку

0 admin

Я создал новый сценарий оболочки /etc/openvpn/guest-up.sh и добавил строки

ip rule add from 10.0.10.0/24 table admin
ip route add default dev tun0 table admin 

В моем конфигурационном файле openvpn (/ etc / config / openvpn) добавлены параметры

option script_security '2'
option up '/etc/openvpn/guest-up.sh'

После перезапуска сеанса VPN в записях системного журнала указывалось, что сеанс VPN был успешно подключен. Однако сеть Wi-Fi не подключается к Интернету через VPN.

Бег ip route list показывает

0:      from all lookup 128
0:      from 10.0.10.0/24 lookup 1
0:      from 10.0.10.0/24 lookup 2
0:      from 10.0.10.0/24 lookup 3
0:      from 10.0.10.0/24 lookup 4
0:      from 10.0.10.0/24 lookup 5
0:      from 10.0.10.0/24 lookup 6
0:      from 10.0.10.0/24 lookup 7
0:      from 10.0.10.0/24 lookup 8

Запуск команды ip route show table admin | grep "10.0.10.0 возвращается

10.0.10.0/24 dev br-vpn  proto kernel  scope link  src 10.0.10.1
broadcast 10.0.10.0 dev br-vpn  table local  proto kernel  scope link  src 10.0.10.1

Извините, я новичок в сети и маршрутизации Linux.

Это должно быть возможно с пакетом iproute2:

opkg update
opkg install ip

Я только начал его использовать, так что, полагаю, могу дать только несколько подсказок и не могу дать никакого рабочего решения для вашего конкретного случая. С помощью iproute2 вы можете реализовать маршрутизацию политики (условную маршрутизацию). В вашем случае вам нужны два разных маршрута для ваших двух устройств (br-lan и br-vpn). Похоже, что для br-lan это уже сделано. Теперь вам нужно направить весь трафик от br-vpn (или подсети, которую он представляет) через ваше устройство tun0 и vpn.

Я предполагаю, что это будет примерно так (возможно, не работает, но, надеюсь, вы двинетесь в правильном направлении):

отредактируйте / etc / iproute2 / rt_tables и добавьте эту строку

0 admin 

Затем:

ip rule add from 10.0.10.0/24 table admin
ip route add default dev tun0 table admin  

Интуиция: вы добавляете правило для всего трафика, поступающего из вашей подсети 10.0.10.0/24, и указываете iproute2 заглянуть в таблицу администратора, чтобы узнать, как с этим справиться. Затем вы добавляете правило по умолчанию в свою административную таблицу, маршрутизируя все по умолчанию через ваш vpn.

Меня немного смущает ваша конфигурация. Вы уверены, что выходные данные "route -n" и ifconfig и / etc / config / network относятся к одному и тому же сеансу?

Обратите внимание, что эти изменения не отражаются с помощью «route -n», вместо этого посмотрите на

ip rule list
ip route show table admin