Here is a simple overview of the networks connected via the OpenVPN with the red connections showing the working VPN
The results of the commands on the OpenWRT
{
"kernel": "6.6.73",
"hostname": "GL-AR300M",
"system": "Qualcomm Atheros QCA9533 ver 2 rev 0",
"model": "GL.iNet GL-AR300M (NOR)",
"board_name": "glinet,gl-ar300m-nor",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "24.10.0",
"revision": "r28427-6df0e3d02a",
"target": "ath79/nand",
"description": "OpenWrt 24.10.0 r28427-6df0e3d02a",
"builddate": "1738624177"
}
}
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'xxxxx'
option packet_steering '1'
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option isolate '0'
option ipaddr '10.201.1.254'
option delegate '0'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
option ipv6 '0'
option classlessroute '0'
option metric '10'
option delegate '0'
option hostname '*'
option peerdns '0'
list dns '8.8.8.8'
config interface 'wan6'
option proto 'dhcpv6'
option disabled '1'
option device '@wan'
config rule 'policy_relay_lo_rt_lan'
option lookup '16800'
option in 'loopback'
option priority '1'
config interface 'tethering6'
option proto 'dhcpv6'
option disabled '1'
option device '@tethering'
config interface 'wwan6'
option proto 'dhcpv6'
option disabled '1'
option device '@wwan'
config interface 'guest'
option force_link '1'
option proto 'static'
option ipaddr '192.168.9.1'
option netmask '255.255.255.0'
option ip6assign '60'
option multicast_querier '1'
option igmp_snooping '0'
option isolate '0'
option bridge_empty '1'
option disabled '1'
option device 'br-guest'
config interface 'wwan'
option proto 'dhcp'
option classlessroute '0'
config interface 'modem_1_1_2_6'
option proto 'dhcpv6'
option disabled '1'
option device '@modem_1_1_2'
config rule 'policy_direct_rt'
option lookup 'main'
option suppress_prefixlength '0'
option priority '1100'
config rule 'policy_default_rt_vpn'
option mark '0x8000/0xc000'
option lookup '8000'
option priority '1101'
option invert '1'
config rule6 'policy_direct_rt6'
option lookup 'main'
option suppress_prefixlength '0'
option priority '1100'
config rule6 'policy_default_rt_vpn6'
option mark '0x8000/0xc000'
option lookup '8000'
option priority '1101'
option invert '1'
config device
option name 'br-guest'
option type 'bridge'
config interface 'openvpn'
option proto 'none'
option device 'tun0'
option delegate '0'
option force_link '1'
config pbr 'config'
option enabled '1'
option verbosity '2'
option strict_enforcement '1'
option resolver_set 'dnsmasq.nftset'
list resolver_instance '*'
option ipv6_enabled '0'
list ignored_interface 'vpnserver'
option boot_timeout '30'
option rule_create_option 'add'
option procd_reload_delay '1'
option webui_show_ignore_target '0'
option nft_rule_counter '0'
option nft_set_auto_merge '1'
option nft_set_counter '0'
option nft_set_flags_interval '1'
option nft_set_flags_timeout '0'
option nft_set_policy 'performance'
list webui_supported_protocol 'all'
list webui_supported_protocol 'tcp'
list webui_supported_protocol 'udp'
list webui_supported_protocol 'tcp udp'
list webui_supported_protocol 'icmp'
config include
option path '/usr/share/pbr/pbr.user.aws'
option enabled '0'
config include
option path '/usr/share/pbr/pbr.user.netflix'
option enabled '0'
config policy
option name 'Redacted_Name'
option dest_addr 'list.of.several.domains'
option interface 'openvpn'
config policy
option name 'Forward_DNS'
option dest_addr '8.8.8.8'
option chain 'output'
option interface 'openvpn'
config policy
option name 'Ignore Local Requests'
option interface 'ignore'
option dest_addr '10.0.0.0/24 10.0.1.0/24 192.168.100.0/24 192.168.1.0/24'
option enabled '0'
config policy
option name 'Plex/Emby Local Server'
option interface 'wan'
option src_port '8096 8920 32400'
option enabled '0'
config policy
option name 'Plex/Emby Remote Servers'
option interface 'wan'
option dest_addr 'plex.tv my.plexapp.com emby.media app.emby.media tv.emby.media'
option enabled '0'
config policy
option name 'All_Traffic'
option src_addr '10.201.1.0/24'
option interface 'openvpn'
option enabled '0'
config dnsmasq
option domainneeded '1'
option localise_queries '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
option localservice '1'
option ednspacket_max '1232'
option rebind_protection '0'
list server '/vpn.tindalos.net/8.8.4.4'
config dhcp 'lan'
option interface 'lan'
option leasetime '12h'
option dhcpv4 'server'
option force '1'
option start '1'
option limit '16'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
config domain
option name 'console.gl-inet.com'
option ip '10.201.1.254'
config dhcp 'guest'
option interface 'guest'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv6 'disabled'
option ra 'disabled'
config defaults
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'
option synflood_protect '1'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list network 'lan'
config zone
option name 'wan'
option output 'ACCEPT'
option masq '1'
option mtu_fix '1'
option input 'ACCEPT'
option forward 'ACCEPT'
list network 'openvpn'
list network 'wan'
config include 'nat6'
option path '/etc/firewall.nat6'
option reload '1'
config rule 'block_dns'
option name 'block_dns'
option src '*'
option dest_port '53'
option target 'REJECT'
option enabled '0'
option device 'br-*'
config include 'gls2s'
option type 'script'
option path '/var/etc/gls2s.include'
option reload '1'
config include 'glblock'
option type 'script'
option path '/usr/bin/gl_block.sh'
option reload '1'
config zone
option name 'guest'
option forward 'REJECT'
option output 'ACCEPT'
option input 'REJECT'
list network 'guest'
config rule
option name 'Allow-DHCP'
option src 'guest'
option target 'ACCEPT'
option proto 'udp'
option dest_port '67-68'
config rule
option name 'Allow-DNS'
option src 'guest'
option target 'ACCEPT'
option proto 'tcp udp'
option dest_port '53'
config include 'vpn_server_policy'
option type 'script'
option path '/etc/firewall.vpn_server_policy.sh'
option reload '1'
option enabled '1'
config include 'pbr'
option fw4_compatible '1'
option type 'script'
option path '/usr/share/pbr/firewall.include'
config openvpn 'custom_config'
option config '/etc/openvpn/my-vpn.conf'
config openvpn 'sample_server'
option port '1194'
option proto 'udp'
option dev 'tun'
option ca '/etc/openvpn/ca.crt'
option cert '/etc/openvpn/server.crt'
option key '/etc/openvpn/server.key'
option dh '/etc/openvpn/dh2048.pem'
option server '10.8.0.0 255.255.255.0'
option ifconfig_pool_persist '/tmp/ipp.txt'
option keepalive '10 120'
option persist_key '1'
option persist_tun '1'
option user 'nobody'
option status '/tmp/openvpn-status.log'
option verb '3'
config openvpn 'sample_client'
option client '1'
option dev 'tun'
option proto 'udp'
list remote 'my_server_1 1194'
option resolv_retry 'infinite'
option nobind '1'
option persist_key '1'
option persist_tun '1'
option user 'nobody'
option ca '/etc/openvpn/ca.crt'
option cert '/etc/openvpn/client.crt'
option key '/etc/openvpn/client.key'
option verb '3'
config openvpn '20MHR'
option config '/etc/openvpn/20MHR.ovpn'
option enabled '1'
Contents of the top of /etc/openvpn/20MHR.ovpn
# Config generated by Asuswrt-Merlin 388.4, requires OpenVPN 2.4.0 or newer.
client
dev tun
proto udp
remote server.public.ip 1195
resolv-retry infinite
nobind
float
ncp-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC:AES-128-CBC
keepalive 15 60
auth-user-pass
remote-cert-tls server
pull-filter ignore "redirect-gateway"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.0.118/24 brd 192.168.0.255 scope global eth1
valid_lft forever preferred_lft forever
4: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.201.1.254/24 brd 10.201.1.255 scope global br-lan
valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
inet 10.16.0.2/24 scope global tun0
valid_lft forever preferred_lft forever
default via 192.168.0.1 dev eth1 table pbr_wan
unreachable default table pbr_wwan
10.201.1.0/24 dev br-lan table pbr_wwan proto kernel scope link src 10.201.1.254
default via 10.16.0.2 dev tun0 table pbr_openvpn
default via 192.168.0.1 dev eth1 proto static src 192.168.0.114 metric 10
10.16.0.0/24 dev tun0 proto kernel scope link src 10.16.0.2
10.200.0.0/16 via 10.16.0.1 dev tun0 metric 500
10.201.1.0/24 dev br-lan proto kernel scope link src 10.201.1.254
192.168.0.0/24 dev eth1 proto static scope link metric 10
local 10.16.0.2 dev tun0 table local proto kernel scope host src 10.16.0.2
broadcast 10.16.0.255 dev tun0 table local proto kernel scope link src 10.16.0.2
local 10.201.1.254 dev br-lan table local proto kernel scope host src 10.201.1.254
broadcast 10.201.1.255 dev br-lan table local proto kernel scope link src 10.201.1.254
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
local 192.168.0.114 dev eth1 table local proto kernel scope host src 192.168.0.114
broadcast 192.168.0.255 dev eth1 table local proto kernel scope link src 192.168.0.114
0: from all lookup local
1: from all iif lo lookup 16800
1100: from all lookup main suppress_prefixlength 0
1101: not from all fwmark 0x8000/0xc000 lookup 8000
29996: from all fwmark 0x30000/0xff0000 lookup pbr_openvpn
29998: from all fwmark 0x20000/0xff0000 lookup pbr_wwan
30000: from all fwmark 0x10000/0xff0000 lookup pbr_wan
32766: from all lookup main
32767: from all lookup default
From the Asus Router (The above commands don't work)
Route Table
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.16.10.249 0.0.0.0 UG 0 0 0 ppp0
10.8.0.0 * 255.255.255.0 U 0 0 0 tun21
10.16.0.0 * 255.255.255.0 U 0 0 0 tun22
10.200.0.0 * 255.255.0.0 U 0 0 0 br0
x.x.x.x 172.16.10.249 255.255.255.255 UGH 1 0 0 ppp0
x.x.x.x 172.16.10.249 255.255.255.255 UGH 1 0 0 ppp0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
169.254.0.0 * 255.255.0.0 U 0 0 0 eth4
172.16.10.249 * 255.255.255.255 UH 0 0 0 ppp0
192.168.0.0 10.16.0.2 255.255.255.0 UG 0 0 0 tun22
Contents of the OpenVPN server Configuration File
daemon ovpn-server2
topology subnet
server 10.16.0.0 255.255.255.0
proto udp6
multihome
port 1195
dev tun22
txqueuelen 1000
data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC:AES-128-CBC
data-ciphers-fallback AES-128-CBC
keepalive 15 60
verb 3
push "route 10.200.0.0 255.255.0.0 vpn_gateway 500"
duplicate-cn
push "redirect-gateway def1"
plugin /usr/lib/openvpn-plugin-auth-pam.so openvpn
ca ca.crt
dh dh.pem
cert server.crt
key server.key
script-security 2
up 'ovpn-up 2 server'
down 'ovpn-down 2 server'
status-version 2
status status 5
# Custom Configuration
route 192.168.0.0 255.255.255.0 10.16.0.2
The OpenVPN is established and functioning.
The PBR traffic routes correctly.
Non PBR traffic routes via eth1 to the internet via the Virgin Router
From the OpenWRT router I can ping anything on the 10.200.0.0 subnet
I can http, SSH pint trace route to 10.16.0.2
What I cannot do is ping, trace route or http to 192.168.0.1 (The virgin router)
I suspect the Virgin Router needs a route adding to route 10.200.0.0 255.255.0.0 via 192.168.0.114 otherwise any packets returned from the Virgin router will be sent via the default gateway to the internet. I don't think I have the options to configure that on the Virgin Router