From d4eb2e77a9647c6b85a73f3d5695d72c1665f03a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 29 Aug 2025 21:54:17 +0100 Subject: [PATCH] ovpnmain.cgi: Explicitely pass the gateway for static routes OpenVPN seems to fail to use the correct gateway if the client does not use the default pool. In that case, we need to explicitely push the correct gateway. Fixes: #13872 - Warning: route gateway is not reachable on any active network adapters Signed-off-by: Michael Tremer --- html/cgi-bin/ovpnmain.cgi | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index 0b2513174..ccf46fb02 100644 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -605,6 +605,7 @@ sub write_ccd_configs() { foreach my $key (keys %conns) { my $name = $conns{$key}[1]; my $type = $conns{$key}[3]; + my $gateway = ""; # Skip anything that isn't a host connection next unless ($type eq "host"); @@ -631,8 +632,13 @@ sub write_ccd_configs() { # Fetch the network of the pool my $network = &get_cdd_network($pool); + my $netaddr = &Network::get_netaddress($network); my $netmask = &Network::get_netmask($network); + # The gateway is always the first address in the network + # (this is needed to push any routes below) + $gateway = &Network::find_next_ip_address($netaddr, 1); + if (defined $address && defined $network && defined $netmask) { print CONF "# Allocated IP address from $pool\n"; print CONF "ifconfig-push ${address} ${netmask}\n\n"; @@ -708,7 +714,7 @@ sub write_ccd_configs() { next; } - print CONF "push \"route $netaddress $netmask\"\n"; + print CONF "push \"route $netaddress $netmask $gateway\"\n"; } # Newline -- 2.47.3