Routing for device to bypass vpn

Hi
I have 2 devices that need bypass an expressvpn. A rocku and appletv. Spectrum streaming must see the ip of their modem it seems. Best case it would only bypass for the spectrum app but I guess the ip of the devices would be ok. What would be the best way to do this? I see 3 ways to try ip4 route, m3wan or pbr. Have not used any of these before.
How can I see what the stream is using when it is working?
Thanks

Only PBR. How do you imagine to implement it with 'ip4 route', or mwan3?

Should be easy enough to do with simple IP rules and routes. Good starting point would be to see your current configs.

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall
ip route
1 Like

Thanks. Here are the outputs of the commands. I hope the format is readable. Openwrt is running as a proxmox vm.

root@OpenWrt:~# ubus call system board
{
"kernel": "5.15.134",
"hostname": "OpenWrt",
"system": "AMD Opteron(tm) Processor 6366 HE",
"model": "QEMU Standard PC (Q35 + ICH9, 2009)",
"board_name": "qemu-standard-pc-q35-ich9-2009",
"rootfs_type": "ext4",
"release": {
"distribution": "OpenWrt",
"version": "23.05.0",
"revision": "r23497-6637af95aa",
"target": "x86/generic",
"description": "OpenWrt 23.05.0 r23497-6637af95aa"
}
}

I have setup a few vpn tunnels for testing.

root@OpenWrt:~# cat /etc/config/network

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 'fdf8:b722:f890::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	option mtu '9000'
	option ipv6 '0'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option ipaddr '10.0.33.1'
	option force_link '0'
	option delegate '0'

config interface 'wan'
	option device 'eth1'
	option proto 'dhcp'
	option hostname '*'

config interface 'wan6'
	option device 'eth1'
	option proto 'none'
	option auto '0'

config device
	option name 'eth1'
	option ipv6 '0'
	option multicast '0'

config device
	option name 'eth0'
	option ipv6 '0'
	option multicast '0'

config interface 'Denver_tun0'
	option proto 'none'
	option device 'tun0'

config device
	option name 'tun0'
	option mtu '1500'
	option ipv6 '0'

config interface 'Amster_tun1'
	option proto 'none'
	option device 'tun1'

config device
	option name 'tun1'
	option mtu '1500'
	option ipv6 '0'

config interface 'Atlanta_tun2'
	option proto 'none'
	option device 'tun2'

config device
	option name 'tun2'
	option mtu '1500'
	option ipv6 '0'

config interface 'Seatle_tun3'
	option proto 'none'
	option device 'tun3'

config device
	option name 'tun3'
	option mtu '1500'
	option ipv6 '0'

config interface 'Dallas_tun4'
	option proto 'none'
	option device 'tun4'
	option delegate '0'

config device
	option name 'tun4'
	option mtu '1500'
	option ipv6 '0'

config interface 'SLC_tun5'
	option proto 'none'
	option device 'tun5'

There is no wireless. I have an ap.

root@OpenWrt:~# cat /etc/config/wireless
cat: can't open '/etc/config/wireless': No such file or directory

root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
option domainneeded '1'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option expandhosts '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 domain 'example.com'
list server '/mask.icloud.com/'
list server '/mask-h2.icloud.com/'
list server '/use-application-dns.net/'
list server '127.0.0.1#5053'
list server '127.0.0.1#5054'
option doh_backup_noresolv '-1'
option noresolv '1'
list doh_backup_server '1.1.1.1'
list doh_server '127.0.0.1#5053'
list doh_server '127.0.0.1#5054'

config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option dhcpv6 'server'
option ra 'server'
list ra_flags 'managed-config'
list ra_flags 'other-config'
option ignore '1'

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'

root@OpenWrt:~# cat /etc/config/firewall

config defaults
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option synflood_protect '1'
option flow_offloading '1'
option flow_offloading_hw '1'
option drop_invalid '1'

config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option mtu_fix '1'
list network 'lan'

config zone
option name 'Denver_tun0'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
list network 'Denver_tun0'
list network 'lan'

config zone
option name 'Openvpn'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
list network 'Dallas_tun4'

config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
option mtu_fix '1'
list network 'wan'
list network 'wan6'
list network 'Amster_tun1'
list network 'Atlanta_tun2'
list network 'Seatle_tun3'
list network 'Dallas_tun4'
list network 'SLC_tun5'

config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'

config include 'pbr' #This is probably from an older config as pbr is not installed yet.
option fw4_compatible '1'
option type 'script'
option path '/usr/share/pbr/pbr.firewall.include'

config forwarding
option src 'lan'
option dest 'Openvpn'

config forwarding
option src 'wan'
option dest 'Denver_tun0'

config forwarding
option src 'lan'
option dest 'Denver_tun0'

root@OpenWrt:~# ip route
0.0.0.0/1 via 10.108.0.5 dev tun3 
default via 184.167.36.1 dev eth1  src 184.167.36.41 
10.0.33.0/24 dev br-lan scope link  src 10.0.33.1 
10.108.0.1 via 10.108.0.5 dev tun3 
10.108.0.5 dev tun3 scope link  src 10.108.0.6 
50.118.162.7 via 184.167.36.1 dev eth1 
128.0.0.0/1 via 10.108.0.5 dev tun3 
184.167.36.0/22 dev eth1 scope link  src 184.167.36.41

Thanks

If the format is unreadable I will try to fix it.

I think pbr is your best option