diff --git a/etc/inc/openvpn.inc b/etc/inc/openvpn.inc index 00cf09a06b..bddb5c8642 100644 --- a/etc/inc/openvpn.inc +++ b/etc/inc/openvpn.inc @@ -521,6 +521,8 @@ function openvpn_reconfigure($mode, $settings) { } if ($settings['local_networkv6']) { list($ipv6, $prefix) = explode('/', $settings['local_networkv6']); + if (empty($prefix)) + $prefix = "128"; $conf .= "push \"route-ipv6 $ipv6/$prefix\"\n"; } @@ -600,6 +602,13 @@ function openvpn_reconfigure($mode, $settings) { $mask = gen_subnet_mask($mask); $conf .= "route $ip $mask\n"; } + // Add a remote network route if set, and only for p2p modes. + if ((substr($settings['mode'], 0, 3) == "p2p") && is_subnet($settings['remote_networkv6'])) { + list($ipv6, $prefix) = explode('/', $settings['remote_networkv6']); + if (empty($prefix)) + $prefix = "128"; + $conf .= "route-ipv6 ${ipv6}/${prefix}\n"; + } // Write the settings for the keys switch($settings['mode']) { diff --git a/usr/local/www/vpn_openvpn_client.php b/usr/local/www/vpn_openvpn_client.php index f37e81b038..9a33d05fbc 100644 --- a/usr/local/www/vpn_openvpn_client.php +++ b/usr/local/www/vpn_openvpn_client.php @@ -128,7 +128,9 @@ if($_GET['act']=="edit"){ $pconfig['engine'] = $a_client[$id]['engine']; $pconfig['tunnel_network'] = $a_client[$id]['tunnel_network']; + $pconfig['tunnel_networkv6'] = $a_client[$id]['tunnel_networkv6']; $pconfig['remote_network'] = $a_client[$id]['remote_network']; + $pconfig['remote_networkv6'] = $a_client[$id]['remote_networkv6']; $pconfig['use_shaper'] = $a_client[$id]['use_shaper']; $pconfig['compression'] = $a_client[$id]['compression']; $pconfig['passtos'] = $a_client[$id]['passtos']; @@ -262,7 +264,9 @@ if ($_POST) { $client['engine'] = $pconfig['engine']; $client['tunnel_network'] = $pconfig['tunnel_network']; + $client['tunnel_networkv6'] = $pconfig['tunnel_networkv6']; $client['remote_network'] = $pconfig['remote_network']; + $client['remote_networkv6'] = $pconfig['remote_networkv6']; $client['use_shaper'] = $pconfig['use_shaper']; $client['compression'] = $pconfig['compression']; $client['passtos'] = $pconfig['passtos']; @@ -760,7 +764,7 @@ if ($savemsg)
| diff --git a/usr/local/www/vpn_openvpn_server.php b/usr/local/www/vpn_openvpn_server.php index 9198c3a3ea..6254d35b16 100644 --- a/usr/local/www/vpn_openvpn_server.php +++ b/usr/local/www/vpn_openvpn_server.php @@ -139,6 +139,7 @@ if($_GET['act']=="edit"){ $pconfig['tunnel_networkv6'] = $a_server[$id]['tunnel_networkv6']; $pconfig['remote_network'] = $a_server[$id]['remote_network']; + $pconfig['remote_networkv6'] = $a_server[$id]['remote_networkv6']; $pconfig['gwredir'] = $a_server[$id]['gwredir']; $pconfig['local_network'] = $a_server[$id]['local_network']; $pconfig['local_networkv6'] = $a_server[$id]['local_networkv6']; @@ -352,6 +353,7 @@ if ($_POST) { $server['tunnel_network'] = $pconfig['tunnel_network']; $server['tunnel_networkv6'] = $pconfig['tunnel_networkv6']; $server['remote_network'] = $pconfig['remote_network']; + $server['remote_networkv6'] = $pconfig['remote_networkv6']; $server['gwredir'] = $pconfig['gwredir']; $server['local_network'] = $pconfig['local_network']; $server['local_networkv6'] = $pconfig['local_networkv6']; @@ -467,7 +469,8 @@ function mode_change() { document.getElementById("client_opts").style.display="none"; document.getElementById("remote_opts").style.display=""; document.getElementById("gwredir_opts").style.display="none"; - document.getElementById("local_opts").style.display="none"; + document.getElementById("local_optsv4").style.display="none"; + document.getElementById("local_optsv6").style.display="none"; document.getElementById("authmodetr").style.display="none"; document.getElementById("inter_client_communication").style.display="none"; break; @@ -475,7 +478,8 @@ function mode_change() { document.getElementById("client_opts").style.display="none"; document.getElementById("remote_opts").style.display=""; document.getElementById("gwredir_opts").style.display=""; - document.getElementById("local_opts").style.display=""; + document.getElementById("local_optsv4").style.display=""; + document.getElementById("local_optsv6").style.display=""; document.getElementById("authmodetr").style.display="none"; document.getElementById("inter_client_communication").style.display="none"; break; @@ -485,7 +489,8 @@ function mode_change() { document.getElementById("client_opts").style.display=""; document.getElementById("remote_opts").style.display="none"; document.getElementById("gwredir_opts").style.display=""; - document.getElementById("local_opts").style.display=""; + document.getElementById("local_optsv4").style.display=""; + document.getElementById("local_optsv6").style.display=""; document.getElementById("inter_client_communication").style.display=""; break; case "server_tls": @@ -494,7 +499,8 @@ function mode_change() { document.getElementById("client_opts").style.display=""; document.getElementById("remote_opts").style.display="none"; document.getElementById("gwredir_opts").style.display=""; - document.getElementById("local_opts").style.display=""; + document.getElementById("local_optsv4").style.display=""; + document.getElementById("local_optsv6").style.display=""; document.getElementById("inter_client_communication").style.display=""; break; } @@ -1085,7 +1091,7 @@ if ($savemsg) "communications between this server and client " . "hosts expressed using CIDR (eg. fe80::/64). " . "The first network address will be assigned to " . - "the server virtual interface. The remaining " . + "the server virtual interface. The remaining " . "network addresses can optionally be assigned " . "to connecting clients. (see Address Pool)"); ?> | @@ -1178,7 +1184,7 @@ if ($savemsg)