如何使用OpenVPN正确configurationIPv6?

试图find适合我的需求的OpenVPNconfiguration,我在CentOS系统上安装这个脚本来帮助自己。 我的服务器configuration文件看起来像这样:

port 1194 proto udp dev tun user nobody group nobody persist-key persist-tun keepalive 10 120 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "dhcp-option DNS 10.8.0.1" push "dhcp-options DNS 2a04:52c0:101:xxx::1" push "redirect-gateway def1 bypass-dhcp" crl-verify crl.pem ca ca.crt cert server.crt key server.key tls-auth tls-auth.key 0 dh dh4096.pem auth SHA256 cipher AES-256-CBC tls-server tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 status openvpn.log verb 4 

它实际上工作得很好,但是当我租用了server @ liteserver.nl并且给了我一个/ 64子网时,我试图configurationOpenVPN服务器给每个客户端一个IPv6地址,以专用IP访问互联网。 所以我按照这个页面上的说明设置了IPv6供内部使用。 该页面包含一个公共IPv6的服务器的说明是2001年:db8:0:abc :: 100/64和一个路由的IPv6子网(我认为可能是liteserver.nl给了我什么)是2001年:db8: 0:123 :: / 64。 不关注样本地址差异我configuration我的服务器与公共IPv6(2a04:52c0:101:xxx :: 100/64),我给了OpenVPN客户端他们给我的整个子网(2a04:52c0:101: xxx :: / 64),这里是我的server.conf实际上是这样的:

 port 1194 proto udp dev tun user nobody group nobody persist-key persist-tun keepalive 10 120 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "dhcp-option DNS 10.8.0.1" push "dhcp-options DNS 2a04:52c0:101:xxx::1" push "redirect-gateway def1 bypass-dhcp" crl-verify crl.pem ca ca.crt cert server.crt key server.key tls-auth tls-auth.key 0 dh dh4096.pem auth SHA256 cipher AES-256-CBC tls-server tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 status openvpn.log verb 4 server-ipv6 2a04:52c0:101:xxx::/64 tun-ipv6 push tun-ipv6 ifconfig-ipv6 2a04:52c0:101:xxx::1 2a04:52c0:101:xxx::2 push "route-ipv6 2a04:52c0:101:xxx::/64" push "route-ipv6 2000::/3" 

所以,当IPv4连接正常工作,IPv6分配正确,但我不能使用IPv6访问互联网(根据test-ipv6.com)我问自己,如果我需要两个/ 64子网(一个私人OpenVPNnetworking和一个VPN服务器本身,所以对于传出连接)来正确configuration这个,或者如果我错过了什么…无论如何,我想得到的是一个VPN服务器与私有IPv4和IPv6连接,并与公共IPv4和一个或多个IPv6地址(ES)。 请告诉我,如果这是可能的,如何做到这一点。 我真的希望有人能帮助我。

提前致谢。

我认为你需要代理NDP请求到你的公有IPv6地址。 我个人没有testing过,但这是理论:

您的ISP将为您的整个IPv6networking(2a04:52c0:101:xxx :: / 64)发送stream量到您的服务器。 这意味着,当互联网上的某个人试图连接到该networking内部的一个IP地址时,stream量将被发送到您的服务器,期望它知道如何处理它。

您的服务器在该networking中有一个地址(2a04:52c0:101:xxx :: 100)。 当它接收到另一个地址的stream量时,它会忽略它,因为它不是一个可以识别的地址。 因此,从OpenVPN分配的networking获取IP地址的设备的stream量将停止在服务器上。

为了让您的服务器意识到必须获得stream量并通过OpenVPN将其“closures”,您有两种select:为您的OpenVPN客户端使用不同的IPv6networking(如传统路由工作)或将stream量代理到当前networking。 第一个是最好的select,但是你的ISP可能不会给你分配多于一个/ 64; 后者是NDP代理,类似于IPv4中的ARP代理。

使用NDP代理,您的服务器将获得不是自己的地址的stream量,并将其重新发送到通过OpenVPN连接的相同IP地址的客户端。 您必须为您的networking中属于OpenVPN客户端的每个IP地址执行此操作。

StackExchangenetworking中还有其他答案详细介绍了这一点:

  • IPv6路由问题
  • 如何将完整的IPv6子网分配给OpenVPN客户端

请检查这些答案以获得更全面的解释。