通过动态 IPv6 实现的 OpenVPN

通过动态 IPv6 实现的 OpenVPN

我有一个双栈 IPv4/IPv6 家庭连接,想创建一个 OpenVPN 服务器。我的 ISP 为我分配了一个 /59 IPv6 块,它不稳定,随时可能发生变化(不是每天,但仍然会变化)。该服务器在装有 Debian Buster 的 Raspberry Pi 上运行。

假设 ISP 当前分配给我的前缀是 dead::beef::/59,并且我的服务器通过 SLAAC 拥有两个 IPv6 地址。第一个主机 ID 是 ::1234(临时),第二个主机 ID 是 ::9876(稳定)。我有一个指向 dead::beef::9876 的 DynDNS 条目。

OpenVPN 客户端通过 UDP6 连接到 dead::beef::9876,OpenVPN 服务器收到初始数据包但通过 dead::beef::1234 进行响应。因此连接不起作用。

我已成功通过以下方式将 OpenVPN 服务器绑定到稳定地址

local dead::beef::9876

,这至少可以让客户端连接。不幸的是,块可能随时发生变化,所以我想避免这种情况。

有没有办法将服务器绑定到稳定的主机 ID ::9876,但不在主机 ID 中指定前缀?

此外,如果我想为客户端使用 /64 块(通过指令server),我可以通过路由器的 DHCPv6 前缀委派检索一个。不幸的是,我还必须在配置文件中指定固定前缀。

有没有什么办法可以使这一点更加具体?

或者我应该以某种方式在 IP 地址改变时配置一个触发器,然后生成一个新的配置文件并重新启动服务器?

答案1

我已经通过添加multihome并且不指定任何local选项解决了第一个问题。

来自文档:

配置多宿主 UDP 服务器。当服务器具有多个 IP 地址(例如多个接口或辅助 IP 地址)且未使用 –local 强制仅绑定到一个特定地址时,需要使用此选项。此选项将向数据包路径添加一些额外的查找,以确保 UDP 回复数据包始终从客户端正在与之通信的地址发送。并非所有平台都支持此功能,并且它会增加更多处理,因此默认情况下不启用它。注意:此选项仅与 UDP 服务器相关。

https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/

我遇到的问题是,绑定local到 IPv6 地址会禁用 IPv4 连接。

相关内容