VpnHood!

在动态 IP 地址上运行 VpnHood! SERVER

许多家庭网络连接每隔几天就会获得一个新的公网 IP 地址。您无需静态 IP:VpnHood! MANAGER 会自动跟随新地址,您用户的应用则通过动态 DNS 域名或集群 Token URL 找到它。

地址变化时会发生什么

开启 Automatic Configuration 的服务器(每台新服务器默认如此)会自动跟随地址。它下一次向 MANAGER 的上报来自新地址,于是 MANAGER 让服务器重新查询自己的地址,并在几分钟内更新接入点和密钥。无需重新安装或重启。

VpnHood! MANAGER 如何跟随新地址 服务器的下一次上报从新地址到达 MANAGER,MANAGER 随后将该地址写入接入点和密钥。 下一次上报 203.0.113.10 来自新地址 更新 203.0.113.10 写入密钥 您的服务器 VpnHood! SERVER VpnHood! MANAGER 察觉到变化 访问密钥 和接入点 MANAGER 自动跟随地址
VpnHood! MANAGER 如何跟随新地址 服务器的下一次上报从新地址到达 MANAGER,MANAGER 随后将该地址写入接入点和密钥。 下一次上报 203.0.113.10 来自新地址 更新 203.0.113.10 写入密钥 您的服务器 VpnHood! SERVER VpnHood! MANAGER 察觉到变化 访问密钥 和接入点 MANAGER 自动跟随地址

关闭 Automatic Configuration 后,地址会保持您设置的值,因此需要您自行更改(参见更改地址)。

在家用路由器之后

应用通过您的路由器访问服务器,因此路由器必须转发它们的连接。这只需设置一次:地址变化时,MANAGER 会保留每个接入点的端口。

  1. 为这台机器在家庭网络中分配一个固定地址。路由器通常称之为 DHCP 保留或静态租约。
  2. 打开 Servers,选择该服务器,找到其 Access Points,其中列出了它的端口。
  3. 在路由器上将这些端口转发到这台机器:TCP Port (1) 按 TCP 转发,UDP Port (2) 和 QUIC Port (3) 按 UDP 转发。值为 -1 的端口已关闭,无需转发。
VpnHood! MANAGER 中开启 Automatic Configuration 的服务器接入点:标出了 TCP Port (1)、UDP Port (2) 和 QUIC Port (3)
位于路由器之后的服务器:机器自身的地址 192.168.1.10 是路由器转发端口的目标。公网地址 203.0.113.10 写入密钥,并由 MANAGER 自动更改。

让应用找到新地址

密钥包含生成时的地址,因此地址变化后,持有该密钥的应用会尝试旧地址。请在地址变化之前,为您的密钥提供一条通往新地址的路径:动态 DNS 域名、集群 Token URL,或两者兼用。

应用如何找到新地址 旧密钥中的地址不再响应,但密钥中的动态 DNS 域名或 Token URL 会把应用引向新地址。 动态 DNS 域名 或集群 Token URL 新地址 203.0.113.10 198.51.100.20 旧地址 您的用户 持有旧密钥 您的服务器 VpnHood! SERVER 密钥中的域名或 URL 指明方向
应用如何找到新地址 旧密钥中的地址不再响应,但密钥中的动态 DNS 域名或 Token URL 会把应用引向新地址。 动态 DNS 域名 或集群 Token URL 新地址 203.0.113.10 198.51.100.20 旧地址 您的用户 持有旧密钥 您的服务器 VpnHood! SERVER 密钥中的域名或 URL 指明方向

动态 DNS 域名

动态 DNS (DDNS) 服务为您提供一个始终指向当前地址的域名。包含该域名的密钥会继续有效,因为应用每次连接时都会解析它。

  1. 从动态 DNS 服务获取一个域名,并让路由器或机器上的小程序保持其更新。名称中切勿包含 VPN:应用在每次建立连接时都会明文发送该名称,网络中间节点可直接读取。
  2. 在使用该域名期间,也要将 TCP 端口 80 转发到这台机器:证书验证及每隔数月的续期都通过该端口进行。
  3. 为集群添加该域名的证书(参见使用自定义域名):将 Signing 设为 AutoSign (1),等待 Signature 显示 CA Signed (2),然后将 Visibility 设为 PublicInToken (3)。
VpnHood! MANAGER 中 server1.example.com 的证书配置,对应步骤:Signing AutoSign (1)、Signature CA Signed (2) 与 Visibility PublicInToken (3)
配置完成后的域名证书:已由 Let's Encrypt 签名,并包含在该集群的每个密钥中。

关键在于签名:只有证书为 CA Signed 时,应用才会解析域名。使用自签名证书时,应用只会尝试密钥中的地址。

集群 Token URL

集群 Token URL 指向网络上的一个文件,MANAGER 每次变更后都会在其中发布集群当前的地址。无法连接的应用会读取该文件,并用找到的信息重试。这不需要域名,也不需要额外端口,只需要一个您的用户能够访问的网络位置,例如 GitHub 仓库。添加方法请参见集群 Token URL。请将 Auto Upload 设为 Off 以外的选项,这样 MANAGER 才会自动更新该文件。

已分发的密钥处理

从现在起您从 MANAGER 复制的密钥都包含该域名或这些 URL。持有旧密钥的应用会在下次连接时获取新密钥,因为 Push token to clients 默认开启,所以请趁其密钥中的地址仍然有效时完成设置。已无法访问服务器的应用需要您提供新密钥。

注意事项

  • 已连接的应用会断开。此时已连接的应用会失去连接。一旦域名或文件显示新地址,它们即可重新连接,通常只需几分钟。
  • 共享地址无法使用。有些运营商让许多客户共用一个公网地址(通常称为 CGNAT),外部连接永远到不了您的路由器。如果路由器显示的地址与网站看到的地址不同,请向运营商申请公网地址。
  • 双线路无法使用此功能。如果路由器让每个连接走不同的线路,地址看起来会一直变化,服务器也会不断重新配置。在这样的服务器上,请关闭 Automatic Configuration 并自行设置地址。

在独立服务器上配置

没有 MANAGER 时,密钥不会被更新,独立服务器也只在启动时查询自己的地址。动态 DNS 域名依然有效,因为应用会自行解析域名:请为服务器提供该域名的证书(参见使用域名和受信任的证书),并向用户分发新密钥。

后续步骤