VPN Policy-Based Routing + Web UI -- Discussion

Hi @stangri yes this seems to be the case. If I remove the local policy as you suggested, traffic from all the computers in my network now routes over the VPN tunnel. I also noticed the same if I disable the vpn-policy-routing, all traffic goes direct over the VPN tunnel.
I hope this sheds some light on the issue, let me know what I should test next. And thanks again for your help!
D

@Dewey -- if that's the case, you will need some extra settings. I've written a wiki page for "OpenVPN client & server at the same time", but with the wiki re-org, I don't know where it went, try to google it.

@headless-cross -- search this thread (and possibly the archive linked from OP). Someone has posted what it takes to route netflix traffic before.

Hi @stangri thanks for the quick response. This wasn't the issue (I don't need the server component), but upon searching your topic I discovered the term 'redirect-gateway' and 'def1' which lead me to learn that my vpn provider controls the routing when the connection is made. By adding the below to my vpn config and then having your service on everything now works!!!

pull-filter ignore redirect-gateway
route 10.0.0.101 255.255.255.0

I've spent days trying to solve this! As a total noob I don't truely understand why I need the route line AND your policy component in order for it to work but it does and so I'm happy and I learnt a lot in the process :slight_smile:

Thanks again for all your help!! Much appreciated.
D

hi I have a problem with this package. my apple tv uses vpn interface and other clients use wan. when i watch a movie online with iphone the traffic goes through wan correctly but when i stream from iphone to apple tv it uses vpn interface. in this situation traffic is local and come through wan to iphone but it goes through vpn also . I appreciate help me
thanks

Hi all,

I am having an issue where the service does not recognise 'wan' as a valid interface.

/etc/config/vpn-policy-routing:

config policy
	option interface 'wan'
	option comment 'Local Traffic'
	option local_addresses '192.168.52.1/24'
	option remote_addresses '192.168.51.1/24'

config policy
	option interface 'wan'
	option comment 'Der XBOX'
	option local_addresses '192.168.52.95'
	option local_ports '0-65535'
	option remote_addresses '0.0.0.0/0'
	option remote_ports '0-65535'

config policy
	option comment 'Internet Traffic'
	option local_addresses '192.168.52.1/24'
	option remote_addresses '0.0.0.0/0'
	option interface 'nordvpntun'

config vpn-policy-routing 'config'
	option verbosity '2'
	option ipv6_enabled '0'
	option strict_enforcement '1'
	option enabled '1'
	option dnsmasq_enabled '1'

/etc/init.d/vpn-policy-routing support:

vpn-policy-routing 0.0.1-25 running on LEDE 17.01.4. WAN (IPv4): lan/dev/192.168.51.254. WAN (IPv6): lan/dev6/::/0.
============================================================
Dnsmasq version 2.78  Copyright (c) 2000-2017 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC no-ID loop-detect inotify
============================================================
Routes/IP Rules
default         10.8.8.1        128.0.0.0       UG    0      0        0 tun0
default         192.168.51.254  0.0.0.0         UG    0      0        0 br-wan
32748:  from all fwmark 0x20000 lookup 202
32749:  from all fwmark 0x10000 lookup 201
IPv4 Table 201: default via 192.168.51.254 dev br-wan
IPv4 Table 202: default via 10.8.8.1 dev tun0
============================================================
IP Tables PREROUTING
-N VPR_PREROUTING
-A VPR_PREROUTING -s 192.168.52.0/24 -m comment --comment Internet_Traffic -c 103998 50208846 -j MARK --set-xmark 0x20000/0xff0000
-A VPR_PREROUTING -m set --match-set nordvpntun dst -c 0 0 -j MARK --set-xmark 0x20000/0xff0000
-A VPR_PREROUTING -m set --match-set lan dst -c 0 0 -j MARK --set-xmark 0x10000/0xff0000
============================================================
Current ipsets
create lan hash:net family inet hashsize 1024 maxelem 65536 comment
create nordvpntun hash:net family inet hashsize 1024 maxelem 65536 comment
============================================================
Your support details have been logged to '/var/vpn-policy-routing-support'. [✓]

/etc/init.d/vpn-policy-routing reload

Creating table 'lan/br-lan/192.168.51.254' [✓]
Creating table 'nordvpntun/tun0/10.8.8.1' [✓]
Routing 'Local Traffic' via wan [✗]
Routing 'Der XBOX' via wan [✗]
Routing 'Internet Traffic' via nordvpntun [✓]
vpn-policy-routing 0.0.1-25 started on lan/br-lan/192.168.51.254 nordvpntun/tun0/10.8.8.1 with errors [✗]
ERROR: policy 'Local Traffic' has an unknown interface: wan!
ERROR: policy 'Der XBOX' has an unknown interface: wan!
vpn-policy-routing 0.0.1-25 monitoring interfaces: lan nordvpntun [✓]

In ifconfig, I have a br-wan interface, and under the interfaces section in LEDE, WAN appears as a network along with LAN and NORDVPNTUN. I have tried manually editing the config file changing 'wan' to 'br-wan', but that does not solve the issue.

Any advice appreciated.

Thanks.

Last few posters -- I'm not ignoring you guys (and girls, as the case may be), but May turned out to be very eventful for me.

People with the br-wan and other not properly identified interfaces -- please post more about your devices/configurations and the output of ifconfig and ip -4 route.

I could be mistaken, but afaik, the phone doesn't stream to apple tv. the phone sends an URL to the apple tv, so that apple tv would start its own stream. Hence, the VPN interface.

It's a Linksys WRT1900AC running LEDE Reboot 17.01.4 r3560-79f57e422d / LuCI lede-17.01 branch (git-17.290.79498-d3f0685). WAN is connected through the 'Internet' (ethernet) port.

ifconfig:

br-lan    Link encap:Ethernet  HWaddr 94:10:3E:18:65:0E
          inet addr:192.168.52.254  Bcast:192.168.52.255  Mask:255.255.255.0
          inet6 addr: fe80::9610:3eff:fe18:650e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:671762 errors:0 dropped:0 overruns:0 frame:0
          TX packets:582673 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:362855157 (346.0 MiB)  TX bytes:206603684 (197.0 MiB)

br-wan    Link encap:Ethernet  HWaddr 94:10:3E:18:65:0E
          inet addr:192.168.51.246  Bcast:192.168.51.255  Mask:255.255.255.0
          inet6 addr: fe80::9610:3eff:fe18:650e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:648502 errors:0 dropped:0 overruns:0 frame:0
          TX packets:684236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:230737905 (220.0 MiB)  TX bytes:407024539 (388.1 MiB)

eth0      Link encap:Ethernet  HWaddr 94:10:3E:18:65:0E
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:692926 errors:0 dropped:0 overruns:0 frame:0
          TX packets:581763 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:532
          RX bytes:373263482 (355.9 MiB)  TX bytes:205876159 (196.3 MiB)
          Interrupt:27

eth1      Link encap:Ethernet  HWaddr 94:10:3E:18:65:0E
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:648503 errors:0 dropped:0 overruns:0 frame:0
          TX packets:684236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:532
          RX bytes:239816987 (228.7 MiB)  TX bytes:407024539 (388.1 MiB)
          Interrupt:28

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:1893 (1.8 KiB)  TX bytes:1893 (1.8 KiB)

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.171  P-t-P:10.8.8.171  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:580172 errors:0 dropped:0 overruns:0 frame:0
          TX packets:685727 errors:0 dropped:4053 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:197674015 (188.5 MiB)  TX bytes:361362822 (344.6 MiB)

wlan0     Link encap:Ethernet  HWaddr 94:10:3E:18:65:0F
          inet6 addr: fe80::9610:3eff:fe18:650f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1604 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:307878 (300.6 KiB)

wlan1     Link encap:Ethernet  HWaddr 94:10:3E:18:65:10
          inet6 addr: fe80::9610:3eff:fe18:6510/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1053 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2598 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:306866 (299.6 KiB)  TX bytes:1068971 (1.0 MiB)

ip -4 route

0.0.0.0/1 via 10.8.8.1 dev tun0
default via 192.168.51.254 dev br-wan  proto static  src 192.168.51.246
10.8.8.0/24 dev tun0  proto kernel  scope link  src 10.8.8.171
45.248.79.132 via 192.168.51.254 dev br-wan
128.0.0.0/1 via 10.8.8.1 dev tun0
192.168.51.0/24 dev br-wan  proto kernel  scope link  src 192.168.51.246
192.168.51.254 dev br-wan  proto static  scope link  src 192.168.51.246
192.168.52.0/24 dev br-lan  proto kernel  scope link  src 192.168.52.254

I have been using this service for more than a year with great success. However my ISP has started throttling UDP traffic to fight VoIP and has affected OPENVPN. To bypass this throttling I have moved openvpn to tcp and the speed was dramatically reduced. To improve speed, I modified openvpn configuration:

  • Protocol: from udp to tcp
  • Cyper: from AES-256 to none

Then I have tunneled the openvpn link over shadowsocks proxy to maintain encrypted secured communications. This configuration has improved my speed noticeably and now it is even faster that the speed I had with UDP only. Now I want to have 3 routes:

  • Route #1: devices that use openvpn over shadowsocks (VoIP devices)
  • Route #2: shadosocks only (only bypass geolocation services for some devices)
  • Route #3: direct WAN.

I managed to get this working by starting the services in order:
(1) shadowsocks - witch implements its own access control and policy routing. It will route through shadowsocks or directly to interned based on the cofigured policies.
(2) VPN policy routing, including on the policies ONLY those devices that will be routed via openvpn.

The problem comes when shadowsocks server restarts and rewrites the ip tables. the devices that were routed using vpn-policy-routing loose internet connection until I manually restart the service.

Is there a way add dependencies to other services (like shadowsocks) so that when this service is restarted, vpn-policy-routing is also restarted?.
Similar to openvpn restart, that will trigger a vpn-policy router restart right afterwards.

It is also not ideal to manage policies via two services/luci interfaces. so any idea that could help to define clearer routing policies would be welcome.

Khm, the br-wan part is intriguing. Can you please post your /etc/config/network?

I'm not familiar with shadowsocks, I'm guessing it doesn't create its own interface -- does it?
Maybe ucitrack could help, sadly I don't have time to look into it.

Surely.


config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fde6:4fb7:e5c8::/48'

config interface 'lan'
	option type 'bridge'
	option ifname 'eth0'
	option proto 'static'
	option netmask '255.255.255.0'
	option delegate '0'
	option dns '192.168.52.252'
	option ipaddr '192.168.52.254'
	option gateway '192.168.51.254'

config interface 'wan'
	option ifname 'eth1'
	option proto 'dhcp'
	option delegate '0'
	option type 'bridge'

config interface 'wan6'
	option ifname 'eth1'
	option proto 'dhcpv6'
	option reqaddress 'none'
	option reqprefix 'no'
	option auto '0'
	option delegate '0'
	option defaultroute '0'
	option peerdns '0'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 5'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '4 6'

config interface 'nordvpntun'
	option proto 'none'
	option ifname 'tun0'
	option delegate '0'
	option auto '1'

If you think it would help, I can try deleting the extant configuration and try setting that interface up again.

Thanks.

Are you really bridging multiple ifnames for WAN? If not, try removing the quoted line from WAN interface and rebooting the router.

I wasn't - I suspect that's the default configuration to support IPv6 traffic. I added the 'wan' interface under advanced settings, so I have managed to change the errors I'm getting.

A reload command now gives:


Creating table 'lan/br-lan/192.168.51.254' [✓]
Creating table 'wan/eth1/0.0.0.0' [✗]
Creating table 'nordvpntun/tun0/10.8.8.1' [✓]
Routing 'Der XBOX' via wan [✓]
Routing 'Internet Traffic' via nordvpntun [✓]
vpn-policy-routing 0.0.1-25 started on lan/br-lan/192.168.51.254 nordvpntun/tun0/10.8.8.1 with errors [✗]
ERROR: Failed to set up 'wan/eth1/0.0.0.0'
vpn-policy-routing 0.0.1-25 monitoring interfaces: lan wan nordvpntun [✓]

That said, everything appears to be working.

Looks like VPR is detecting your LAN interface as WAN. Probably due to having gateway manually configured for that interface.

I have updated the gateway and WAN detection logic in 0.0.2-1, that build might work better for you.

I'm trying to get a simple setup working, and have used vpn-policy-routing instead of mwan3 since it seems to be the future.

My goal is to have a network with VPN for some devices for Amazon Prime US and Netflix US, whilst another network will go directly via the WAN port.

I've got the network going via VPN working ok, however the non-VPN network then cannot access Netflix? Is this a known problem? I want both networks to be able to access Netflix, one via the VPN (US) and one without (local Netflix library).

Is this a known issue? Are there workarounds for my situation?

/etc/config/vpn-policy-routing

config vpn-policy-routing 'config'
        option verbosity '2'
        option ipv6_enabled '0'
        option strict_enforcement '1'
        option dnsmasq_enabled '1'
        option udp_proto_enabled '1'
        option enabled '1'

config policy
        option interface 'wan'
        option local_addresses '192.168.50.0/24'
        option comment 'default'

config policy
        option local_addresses '192.168.55.0/24'
        option interface 'nordvpn_us'
        option comment 'vpn_us'

ip -4 route

default via 187.X.X.X dev pppoe-wan  proto static  metric 10
187.X.X.X dev pppoe-wan  proto kernel  scope link  src 191.X.X.X
192.168.50.0/24 dev br-lan  proto kernel  scope link  src 192.168.50.1
192.168.55.0/24 dev wlan0-1  proto kernel  scope link  src 192.168.55.1

I also have difficulty connecting to Amazon.com on the non-VPN network.

Could there be some issue with DNS leaking?

Awesome, I appreciate that - any idea of when you will have it in your repo?

For reference, a factory reset of the router and reconfiguration of everything has fixed all my issues.

Thanks all.

Hi, can someone produce a full guide for someone who has no understanding of networking on how to set up two wifi networks, one with a OpenVPN client and one without, on LEDE? I will gladly pay someone to help me with setup.

I just pushed the vpn-policy-routing 0.0.2-3 to my repo, where you can specify a "physical device" (like wlan1 or wlan0-1) as the "local address/device". I haven't tested it yet tho.

Anyone on 18.06 (either snapshot or rc1) has tested this with the flow_offloading (either sw or hw) enabled?