提问人:Spaceverse100 提问时间:11/15/2023 最后编辑:Spaceverse100 更新时间:11/20/2023 访问量:40
OpenVPN 连接 IPv6 但没有互联网
OpenVPN connecting with IPv6 but no internet
问:
我已经成功地将 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 上浏览。
提前致谢!
答:
但是,为什么这适用于IPv4呢?对于 IPv4,客户端配置是远程 [AWS-Lightsail-IPv4-Address] 1194,我只是对 IPv6 做了同样的事情
对于 IPv4,它之所以有效,是因为 v4 选项指定了适当的地址范围。(还因为 OpenVPN 之外还有额外的配置 (NAT)。server
当我在 IPv4 上连接时,您(在客户端上)显示一个私有 IP,而 IPv6 显示来自服务器的 ipv6 IP,不知道为什么这样做
从字面上看,因为您的和选项告诉OpenVPN将这些IP分配给客户端。这就是这些选项的作用。server
server-ipv6
其实不一样,客户端上的私人
这不是“私人地址”——您的客户实际上有一个公共地址。(虽然在你的情况下不是一个正确的,但仍然是一个公开演讲。
最后显示“386d”,而公共一个显示“286d”,不知道这怎么可能
客户端的地址应该与服务器的地址不同。它们是两台独立的机器;连接到VPN实际上不会像那样更改客户端的地址。
总的来说——你在这里跳过了太多步骤。
首先,OpenVPN不是“IP转换器”;与代理应用程序不同,VPN能够像您预期的那样更改IP地址,这实际上只是副作用的副作用。(并且说更改实际上不是通过OpenVPN本身完成的,它是在数据包离开VPN软件后很久才由服务器操作系统完成的。与代理软件不同,您首先需要将 VPN 视为虚拟网络;您实际上是在设置路由器。
更详细地说:
将您的 IP “更改”为服务器的 IP 实际上并不是内置的 VPN 功能;这是一个非常遥远的副作用。
客户端的 IP 地址实际上永远不会更改为服务器的地址。VPN 就像您的家庭局域网一样工作——每个客户端都有自己唯一的私有地址,其连接似乎来自服务器地址的原因是因为服务器(作为 VPN 的路由器)故意在其中配置了 NAT,就像您的家庭路由器一样。
而服务器做NAT的最初原因是因为客户端被分配了私有IPv4地址,而使用私有地址的原因是因为公共地址稀缺且昂贵......但在 IPv6 中通常不是这种情况,在 IPv6 中,更典型的是将公共地址用于 LAN 设备(同样用于 VPN 设备)。
因此,使用IPv6时,通常您会分配公共地址,并且会看到网站报告客户端自己的IPv6地址,该地址是通过OpenVPN分配的,而不是服务器的地址。(但不是特别在你的情况下,因为你没有任何公共 IPv6 地址要分配。
网络需要所有连接设备的 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 位)。
评论
code 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 ..