Model TP-Link Archer C7 v5
Firmware Version OpenWrt 24.10.3 r28872-daca7c049b / LuCI openwrt-24.10 branch 25.250.61039~923f8d9
Kernel Version 6.6.104
openvpn-openssl 2.6.19-r1
I have set up the OpenWRT as a client. The intention is to connect the OpenWRT to my own OpenVPN server. Other devices also connect to this server. In that way I can reach devices which are not normally accessible.
I know I need routing and such, but that is a future problem. The problem now is that I cannot even ping the VPN server.
The OpenWRT is behind a firewall. On this same LAN I have another device which communicates to this same OpenVPN server without a problem. On another location I have a different OpenVPN client which also communicates to the OpenVPN server.
This is the IP address:
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN qlen 500
link/[65534]
inet 10.89.32.29 peer 10.89.32.30/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::91d8:3689:22c2:a7ec/64 scope link flags 800
valid_lft forever preferred_lft forever
This is the route:
root@OpenWrt:~# ip route
default via 192.168.0.1 dev eth0.2 src 192.168.0.86
10.89.32.0/24 via 10.89.32.30 dev tun0
10.89.32.30 dev tun0 scope link src 10.89.32.29
192.168.0.0/24 dev eth0.2 scope link src 192.168.0.86
192.168.1.0/24 dev br-lan scope link src 192.168.1.1
The address of the OpenVPN server is 10.89.32.1. There is no ping reply.
root@OpenWrt:~# tcpdump -i tun0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
01:03:47.251144 IP 10.89.32.29 > 10.89.32.1: ICMP echo request, id 10251, seq 0, length 64
01:03:48.251360 IP 10.89.32.29 > 10.89.32.1: ICMP echo request, id 10251, seq 1, length 64
01:03:49.251775 IP 10.89.32.29 > 10.89.32.1: ICMP echo request, id 10251, seq 2, length 64
01:03:50.251993 IP 10.89.32.29 > 10.89.32.1: ICMP echo request, id 10251, seq 3, length 64
When I do a packet trace on eth0.2 (the WAN device) I see that the number of packets increase when I execute a ping. But I cannot see whether it is ICMP because the traffic is encrypted. I cannot see the contents of the traffic at all.
On the VPN server I do not see any packet arriving. Hence there is no reply coming back to the OpenWRT.
This is the log file showing a successful connection:
Thu Apr 16 01:03:45 2026 daemon.notice openvpn(sample_client)[9767]: Restart pause, 1 second(s)
Thu Apr 16 01:03:46 2026 daemon.warn openvpn(sample_client)[9767]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Thu Apr 16 01:03:46 2026 daemon.warn openvpn(sample_client)[9767]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: TCP/UDP: Preserving recently used remote address: [AF_INET]167.86.91.128:1194
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: Socket Buffers: R=[131072->131072] S=[16384->16384]
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: Attempting to establish TCP connection with [AF_INET]167.86.91.128:1194
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: TCP connection established with [AF_INET]167.86.91.128:1194
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: TCPv4_CLIENT link local: (not bound)
Thu Apr 16 01:03:46 2026 daemon.notice openvpn(sample_client)[9767]: TCPv4_CLIENT link remote: [AF_INET]167.86.91.128:1194
Thu Apr 16 01:03:47 2026 daemon.notice openvpn(sample_client)[9767]: TLS: Initial packet from [AF_INET]167.86.91.128:1194, sid=e913349c fa007b78
Thu Apr 16 01:03:47 2026 daemon.notice openvpn(sample_client)[9767]: VERIFY OK: depth=1, CN=vpnserv
Thu Apr 16 01:03:47 2026 daemon.notice openvpn(sample_client)[9767]: VERIFY OK: depth=0, CN=vpnserv
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bits RSA, signature: RSA-SHA256, peer temporary key: 253 bits X25519
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: [vpnserv] Peer Connection Initiated with [AF_INET]167.86.91.128:1194
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: TLS: move_session: dest=TM_ACTIVE src=TM_INITIAL reinit_src=1
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: TLS: tls_multi_process: initial untrusted session promoted to trusted
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: PUSH: Received control message: 'PUSH_REPLY,route 10.89.32.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.89.32.29 10.89.32.30,peer-id 0,cipher AES-256-GCM,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500'
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: OPTIONS IMPORT: --ifconfig/up options modified
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: OPTIONS IMPORT: route options modified
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: OPTIONS IMPORT: tun-mtu set to 1500
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Preserving previous TUN/TAP instance: tun0
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Initialization Sequence Completed
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Data Channel: cipher 'AES-256-GCM', peer-id: 0, compression: 'stub'
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Timers: ping 10, ping-restart 120
Thu Apr 16 01:03:48 2026 daemon.notice openvpn(sample_client)[9767]: Protocol options: protocol-flags cc-exit tls-ekm dyn-tls-crypt
Firewall config:
root@OpenWrt:~# uci show firewall
firewall.@defaults[0]=defaults
firewall.@defaults[0].input='REJECT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@defaults[0].synflood_protect='1'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].mtu_fix='1'
firewall.@zone[1].masq='1'
firewall.@zone[1].network='wan' 'wan6'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@zone[2]=zone
firewall.@zone[2].name='vpn'
firewall.@zone[2].input='REJECT'
firewall.@zone[2].output='ACCEPT'
firewall.@zone[2].forward='REJECT'
firewall.@zone[2].network='vpn0'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='vpn'
firewall.@forwarding[1]=forwarding
firewall.@forwarding[1].src='vpn'
firewall.@forwarding[1].dest='lan'
firewall.@forwarding[2]=forwarding
firewall.@forwarding[2].src='lan'
firewall.@forwarding[2].dest='wan'
Network config:
root@OpenWrt:~# uci show network
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fde1:3afc:3468::/48'
network.globals.packet_steering='1'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0.1'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.@device[1]=device
network.@device[1].name='eth0.2'
network.@device[1].macaddr='84:d8:1b:7d:11:8f'
network.wan=interface
network.wan.device='eth0.2'
network.wan.proto='dhcp'
network.wan6=interface
network.wan6.device='eth0.2'
network.wan6.proto='dhcpv6'
network.@switch[0]=switch
network.@switch[0].name='switch0'
network.@switch[0].reset='1'
network.@switch[0].enable_vlan='1'
network.@switch_vlan[0]=switch_vlan
network.@switch_vlan[0].device='switch0'
network.@switch_vlan[0].vlan='1'
network.@switch_vlan[0].ports='2 3 4 5 0t'
network.@switch_vlan[1]=switch_vlan
network.@switch_vlan[1].device='switch0'
network.@switch_vlan[1].vlan='2'
network.@switch_vlan[1].ports='1 0t'
network.vpn0=interface
network.vpn0.proto='none'
network.vpn0.device='tun0'
OpenVPN config: (Note the VPN server is disabled. I only use "sample_client")
openvpn.custom_config=openvpn
openvpn.custom_config.config='/etc/openvpn/my-vpn.conf'
openvpn.sample_server=openvpn
openvpn.sample_server.port='1194'
openvpn.sample_server.proto='udp'
openvpn.sample_server.dev='tun'
openvpn.sample_server.ca='/etc/openvpn/ca.crt'
openvpn.sample_server.cert='/etc/openvpn/server.crt'
openvpn.sample_server.key='/etc/openvpn/server.key'
openvpn.sample_server.dh='/etc/openvpn/dh2048.pem'
openvpn.sample_server.server='10.8.0.0 255.255.255.0'
openvpn.sample_server.ifconfig_pool_persist='/tmp/ipp.txt'
openvpn.sample_server.keepalive='10 120'
openvpn.sample_server.persist_key='1'
openvpn.sample_server.persist_tun='1'
openvpn.sample_server.user='nobody'
openvpn.sample_server.status='/tmp/openvpn-status.log'
openvpn.sample_server.verb='3'
openvpn.sample_client=openvpn
openvpn.sample_client.enabled='1'
openvpn.sample_client.client='1'
openvpn.sample_client.dev='tun'
openvpn.sample_client.remote='vpnserv.example.com 1194'
openvpn.sample_client.resolv_retry='infinite'
openvpn.sample_client.nobind='1'
openvpn.sample_client.persist_key='1'
openvpn.sample_client.persist_tun='1'
openvpn.sample_client.user='nobody'
openvpn.sample_client.ca='/etc/openvpn/ca.crt'
openvpn.sample_client.cert='/etc/openvpn/bon-gateway-ap.crt'
openvpn.sample_client.key='/etc/openvpn/bon-gateway-ap.key'
openvpn.sample_client.data_ciphers='AES-256-GCM'
openvpn.sample_client.data_ciphers_fallback='AES-128-GCM'
openvpn.sample_client.verb='3'
openvpn.sample_client.comp_lzo='no'
openvpn.sample_client.proto='tcp-client'
I have re-initiated the OpenWRT various times to a clean slate condition. Also I have tried various scenarios for firewalling, like allowing all traffic everywhere, with or without masquerading, tun0 in the WAN zone and whatnot. However, I believe the current configuration is the correct one to connect a client.
For this time I only want to be able to ping my VPN server. That is the first step in testing connectivity which every VPN client should be able to do regardless of (almost) anything.