我家里有一台 Perforce 服务器(Ubuntu 18.04),由于 Starlink 终于出现了,我想对其进行设置,以便其他人可以通过我的卫星上行链路而不是缓慢的 CenturyLink DSL 与它同步。
问题 1:Starlink 位于 CGNAT 后面。我以为我可以使用动态 DNS 和 DSL 连接将公共域名连接到服务器,并让它通过 Starlink 完成繁重的出站工作,但不行。但是,Starlink 显然可以实现静态 IPv6(需要一些争论)。所以我会尝试 IPv6。
问题 2:我完全不知道如何向该服务器请求公共 DHCPv6 分配,因为它将位于路由器(带 dd-wrt 的 Netgear R8000)后面,希望该路由器设置为从 Starlink 到 DSL 连接的故障转移。我有一棵古老的大雪松树,它大约每分钟发出一次卫星上行链路的闪烁,故障转移将是一件大事。
我让服务器通过路由器查找当前的 IPv4 和端口转发,从而让外部可以访问它,然后我让路由器将一个当地的DHCPv6 IPv6 地址...我只是想不明白如何配置这一切,让服务器获得可以从 WAN 访问的公共 IPv6。
目标配置:
入站 ISP:Starlink(CGNAT IPv4、固定 IPv6)/ DSL(动态 IPv4)
两者都转到:Netgear R8000,dd-wrt,设置从 Starlink 到 DSL 的故障转移
服务器(Ubuntu 18.04),静态 IPv6,用于 Perforce 的端口 1666。如果有助于解决问题,该服务器有双以太网卡。
答案1
我让服务器通过在路由器中查找其当前的 IPv4 和端口转发来供外部访问,并且我让路由器为服务器提供本地 DHCPv6 IPv6 地址...我只是不知道如何配置这一切让服务器获得可从 WAN 访问的公共 IPv6。
一般而言,消费者 ISP 上的 IPv6 工作方式如下:
您的路由器向 ISP 发出 DHCPv6“前缀委派”请求(也称为 IA_PD 或 DHCPv6-PD)并接收可在您的 LAN 上使用的公共 /64 前缀。
(根据 ISP,通常它可以请求具有更多子网的更短前缀,例如,对于住宅 ISP,通常建议每个客户使用 /56 且有 256×/64 个子网。)
您的路由器在 LAN 接口上配置该前缀(与 192.168.1.1 以及某些路由器默认具有的私有“fdXX”前缀一起)并开始通过 SLAAC(路由器通告)和/或常规 DHCPv6 向 LAN 主机发出公共地址。
服务器现在有一个公共 IPv6 地址,您可以将其输入 DNS(其他所有 LAN 设备也是如此),因此无需端口转发。但是,要真正接受入站连接,您通常仍需要在路由器的防火墙(前向过滤)规则。
步骤 1 的具体工作方式可能因 ISP 而异。我不知道 Starlink 是否需要任何特殊功能,或者它是否应该正常工作 - 请咨询其他来源(r/ipv6 等)。
请注意,拥有大量地址空间并不能阻止 ISP 尝试为您提供“动态”地址。理论上,只要您的路由器在 IA_PD 请求中不断发送相同的 DUID,它就应该每次都获得相同的前缀……但这并不总是有保证的。一些 ISP 故意将其保留用于他们的“商业”计划。
如果你有多个使用 IPv6 的 ISP,那么“多宿主”仍然是一个尚未解决的问题,尽管它是IPv6 比 IPv4 略好(NAT 除外)。通常,您应该从两个 ISP 获取单独的公共前缀,服务器具有来自每个 ISP 的地址,然后路由器应使用“基于源的路由”通过正确的 ISP 发送出站数据包(Linux 可以做到这一点,所以 dd-wrt 也应该这样做)。有时您必须求助于从两个公共 /64 前缀到私有“fdXX”/64 前缀的 1:1 NAT。