OpenVPN 连接 IPv6 但没有互联网

OpenVPN connecting with IPv6 but no internet

提问人:Spaceverse100 提问时间:11/15/2023 最后编辑:Spaceverse100 更新时间:11/20/2023 访问量:40

问:

我已经成功地将 OpenVPN 与 IPv4 一起使用了一段时间,最近出于各种原因决定使用 IPv6。

OpenVPN 在 AWS Lightsail 服务器 (Ubuntu 22) 上运行,IPv6 地址/协议在 AWS Lightsail GUI 上启用。此外,UDP 1194 已添加到 AWS 上的 IPv6 防火墙(与 IPv4 相同)。

  • OpenVPN客户端版本→ 3.4.2 (3160)
  • OpenVPN服务器版本→OpenVPN 2.5.5 x86_64-pc-linux-gnu

客户端配置:

client
proto udp6
remote [AWS-Lightsail-IPv6-Address] 1194
redirect-gateway ipv6 def1
.
.
.
(There is more config of course, but these probably are the relevant ones.)

服务器配置:

port 1194
proto udp6
push "redirect-gateway ipv6 def1 bypass-dhcp"
server-ipv6 [AWS-Lightsail-IPv6-Address-First-4-Octets]::/64
.
.
.
(There is more config of course, but these probably are the relevant ones.)

我能够从 OpenVPN 客户端 (Windows) 连接到 OpenVPN 服务器,它显示如下:

Your private IP: 10.70.0.2
Your IP: [AWS-Lightsail-IPv6-Address-First-4-Octets]::1000 (Not sure if this is right)
Server Public IP: [AWS-Lightsail-IPv6-Address]
Port: 1194
Protocol: UDPv6

但是当我上网进行 IP 检查时,它显示以下内容:

  • IPv4:[AWS-Lightsail-IPv4-地址]
  • IPv6:未检测到

它似乎仍在使用 IPv4 OpenVPN,根本没有检测到 IPv6。

我是否遗漏了 IPv6 特别需要的配置,或者是否正确? 我真的无法找到 OpenVPN with Ipv6 的最新信息。

我尝试了多个不同的配置更改,但没有帮助。 我希望使用 OpenVPN IPv6 地址(AWS lightsail 服务器 IP)在 Internet 上浏览。

提前致谢!

连接 IPv6 OpenVPN

评论

0赞 user1686 11/17/2023
Lightsail 是否真的授予您整个 /64 而不仅仅是单个地址?
0赞 Spaceverse100 11/17/2023
@user1686 可能不是,我将服务器配置更改为 server-ipv6 [AWS-Lightsail-IPv6-Address],但它仍然显示未检测到 Internet IP 检查
0赞 user1686 11/17/2023
那么,您打算向 VPN 客户端颁发哪些 IP 地址?他们需要一个地址才能通过 VPN 发送数据包......它不能是服务器自己的地址,因为它已经属于服务器。(这里的理论与IPv4相同,只是一般做法略有不同。
0赞 Spaceverse100 11/17/2023
@user1686 但是,为什么这适用于IPv4呢?对于 IPv4,客户端配置是远程 [AWS-Lightsail-IPv4-Address] 1194,我刚刚对 IPv6 做了同样的事情。但是,是的,当我在 IPv4 上连接时,您(在客户端上)显示一个私有 IP,而 IPv6 显示来自服务器的 ipv6 IP,不知道为什么这样做。有什么想法吗?
0赞 Spaceverse100 11/17/2023
实际上并不完全相同,客户端上的私有文件在末尾显示“386d”,而公共客户端显示“286d”,不知道这怎么可能。服务器上的 IP 附加组件:@user1686code 2: ens5: .. inet 172.26.15.152/20 metric 100 brd 172.26.15.255 .. inet6 2600:1f18:1b43:3500:926d:f1ad:b771:286d/128 .. .. inet6 fe80::8ff:42ff:fe52:7e85/64 scope link .. 5: tun0: .. inet 10.8.0.1/24 scope global tun0 .. inet6 2600:1f18:1b43:3500:926d:f1ad:b771:286e/64 scope global .. inet6 fe80::60c6:d2a7:3505:4c23/64 scope link stable-privacy ..

答:

0赞 user1686 11/18/2023 #1

但是,为什么这适用于IPv4呢?对于 IPv4,客户端配置是远程 [AWS-Lightsail-IPv4-Address] 1194,我只是对 IPv6 做了同样的事情

对于 IPv4,它之所以有效,是因为 v4 选项指定了适当的地址范围。(还因为 OpenVPN 之外还有额外的配置 (NAT)。server

当我在 IPv4 上连接时,您(在客户端上)显示一个私有 IP,而 IPv6 显示来自服务器的 ipv6 IP,不知道为什么这样做

从字面上看,因为您的和选项告诉OpenVPN将这些IP分配给客户端。这就是这些选项的作用。serverserver-ipv6

其实不一样,客户端上的私人

这不是“私人地址”——您的客户实际上有一个公共地址。(虽然在你的情况下不是一个正确的,但仍然是一个公开演讲。

最后显示“386d”,而公共一个显示“286d”,不知道这怎么可能

客户端的地址应该与服务器的地址不同。它们是两台独立的机器;连接到VPN实际上不会像那样更改客户端的地址。


总的来说——你在这里跳过了太多步骤

首先,OpenVPN不是“IP转换器”;与代理应用程序不同,VPN能够像您预期的那样更改IP地址,这实际上只是副作用的副作用。(并且说更改实际上不是通过OpenVPN本身完成的,它是在数据包离开VPN软件后很久才由服务器操作系统完成的。与代理软件不同,您首先需要将 VPN 视为虚拟网络;您实际上是在设置路由器。

更详细地说:

  1. 将您的 IP “更改”为服务器的 IP 实际上并不是内置的 VPN 功能;这是一个非常遥远的副作用。

    客户端的 IP 地址实际上永远不会更改为服务器的地址。VPN 就像您的家庭局域网一样工作——每个客户端都有自己唯一的私有地址,其连接似乎来自服务器地址的原因是因为服务器(作为 VPN 的路由器)故意在其中配置了 NAT,就像您的家庭路由器一样。

    而服务器做NAT的最初原因是因为客户端被分配了私有IPv4地址,而使用私有地址的原因是因为公共地址稀缺且昂贵......但在 IPv6 中通常不是这种情况,在 IPv6 中,更典型的是将公共地址用于 LAN 设备(同样用于 VPN 设备)。

    因此,使用IPv6时,通常您会分配公共地址,并且会看到网站报告客户端自己的IPv6地址,该地址是通过OpenVPN分配的,而不是服务器的地址。(但不是特别在你的情况下,因为你没有任何公共 IPv6 地址要分配。

  2. 网络需要所有连接设备的 IP 地址,并且您只能(应该)使用允许您使用的 IP 地址范围。(IPv4 和 IPv6 的所有理论都是一样的。

    在许多其他 VPS 提供商中,您的猜测确实是正确的——期望作为客户获得 /64 是相当合理的——但不幸的是,并非所有 VPS 提供商都提供这一点。在 Lightsail,您似乎没有将整个 /64 全部留给自己;相反,您的 VPS 被放置在一个共享子网中,您只能获得一个 IPv6 地址(并且它已经被服务器使用,因此它不能重新用于客户端)。server-ipv6 [AWS-Lightsail-IPv6-Address-First-4-Octets]::/64

    当然,你显示的是 /64,但这只意味着你所在的网络使用 /64 作为其“子网掩码”——这与 IPv4 相同,它可能显示 /24 或类似,它只意味着你的子网掩码是 /24,而不是你自己拥有 /24。ip addr

    (其他一些提供商也这样做;例如,在 Linode,您最初也只获得一个地址,然后必须通过控制面板声明一个单独的 /64。

    因此,这意味着您需要从专用范围分配 VPN 客户端 IPv6 地址,就像您目前对 IPv4 所做的那样——并且您需要执行 NAT,就像对 IPv4 所做的那样。IPv6 的专用范围是 fd00::/8,也称为“ULA”范围,通常的做法是选择范围之外的随机 /48(例如,通过访问 https://unique-local-ipv6.com/),然后使用其中的 /64 子网。

    • 例如,我得到了 fdec:3368:d3fb::/48,所以我会使用 fdec:3368:d3fb:0::/64 或 fdec:3368:d3fb:abcd::/64 和 OpenVPN 的 .server-ipv6

    • IPv6 地址的组件最好称为“六位字节”,而不是八位字节,因为它们每个都是 16 位(4 位十六进制数字× 4 位)。

评论

0赞 Spaceverse100 11/20/2023
谢谢你的解释。我把你说的放在服务器配置上:server-ipv6 fdec:3368:d3fb:0::/64,实际上客户端现在将“私有 ipv6”显示为 server-ipv6 fdec:3368:d3fb:1000。但是当我在互联网上检查我的 ip 时,它仍然说不支持 Ipv6。
0赞 user1686 11/20/2023
您是否也像为 IPv4 一样为 IPv6 启用了 NAT?
0赞 Spaceverse100 11/20/2023
是的,我认为它已经启用了。我终于能够修复它:我所做的是删除 Lightsail 服务器,创建一个新服务器,直接在 Lightsail 页面上启用 ipv6,然后从 github.com/angristan/openvpn-install 运行安装脚本,该脚本检测服务器是否具有 ipv6 地址,如果您回答是,它会相应地进行配置。它将这些添加到服务器 conf: server-ipv6 fd42:42:42:42::/112 |TUN-IPv6 协议 |推送 TUN-IPv6 |推送“route-ipv6 2000::/3” |推送“redirect-gateway IPv6 |proto udp6“ 感谢您@user1686的帮助!