在 Comcast 商业 IP 网关后面的路由器上使用静态 IPv6 地址

在 Comcast 商业 IP 网关后面的路由器上使用静态 IPv6 地址

我最近安装了 Comcast Business Class 互联网。之前,我使用另一家提供商的 DSL,并且只有一个静态 IPv4 地址 (VyOS)。现在我想安装 Comcast。

我从 Comcast 购买了静态 IP 地址委派。我有五个静态 IPv4 地址(96.xx168/29,其中 168 和 175 为保留地址,174 为网关,因此我只能使用 169-173,即五个地址)和一个静态 /56 IPv6 地址(2603:xxxx:xxxx:8700::/56,静态网关为 2603:xxxx:xxxx:8700:7454:7dff:feb1:d391 [link local fe80::7454:7dff:feb1:d391],因此我应该可以充分使用 2603:xxxx:xxxx:8700::1 至 2603:xxxx:xxxx:87ff:ffff:ffff:ffff:ffff)。您会注意到静态网关位于 /56 内,实际上位于 /56 的第一个 /64 前缀内...我不知道这是否重要或给我带来了任何问题。重要提示:由于这是康卡斯特,他们不能简单地做任何事情,因此我们不允许将调制解调器/路由器置于“桥接模式”。静态 IP 地址只有在路由器处于正常模式时才能工作(但您可以关闭所有不需要的 DHCP、防火墙、WiFi 等,我就是这样做的)。如果我将调制解调器/路由器置于“桥接模式”,它会强制我进入单个 DHCP 地址,这符合康卡斯特文档的预期。康卡斯特设备是思科类型 BWG 型号 DPC3939B 商务 IP 网关。它的读数显示 IPv4 和 IPv6 静态委派。

我使用 VyOS 作为路由器/防火墙上的路由软件(插入 BIP 网关上的一个 LAN 端口)。它是 Vyatta 的一个 OSS 分支,与 Brocade 或 Ubiquiti 并行。

使用静态 IPv4 地址时我没有遇到任何问题。我将 169 设置为所有私有流量的出站接口(没有目标 NAT,只有使用 169 作为出站地址的源 NAT)。我使用 1:1 NAT 为防火墙后面的各种面向公众的服务器设置了 170-173。一切都运行正常。

IPv6 是一场灾难。我无法完成很多工作。如果我执行以下操作(非常简单),我可以从 VyOS ping Google(2607:f8b0:4002:c07::66):

# set interfaces ethernet eth1 2603:xxxx:xxxx:8700::1/60
# set protocols static route6 ::/0 next-hop 2603:xxxx:xxxx:8700:7454:7dff:feb1:d391
# commit

其结果是:

$ ip -6 route get 2607:f8b0:4002:c07::66
2607:f8b0:4002:c07::66 from :: via 2603:xxxx:xxxx:8700:7454:7dff:feb1:d391 dev 
eth1  src 2603:xxxx:xxxx:8700::1  metric 0 
    cache
$ ping6 -c 1 2607:f8b0:4002:c07::66
PING 2607:f8b0:4002:c07::66(2607:f8b0:4002:c07::66) 56 data bytes
64 bytes from 2607:f8b0:4002:c07::66: icmp_seq=1 ttl=46 time=30.6 ms

我还可以从我可以访问的远程服务器 ping 2603:xxxx:xxxx:8700::1,该服务器已知 IPv6 可以正常工作。这很好,但这实际上是我能工作的范围。我无法将 IPv6 连接到网络上的任何其他机器。我尝试了以 /56、/60 和 /64 结尾的接口地址,但在以下任何一种情况下都没有更好的结果:

作为第一个例子,地址 2603:xxxx:xxxx:8700::1/60 应将所有内容 2603:xxxx:xxxx:8700::1 到 2603:xxxx:xxxx:870f:ffff:ffff:ffff:ffff 放入我的接口范围内。默认路由属于该范围。但是,如果我的地址是 2603:xxxx:xxxx:8700::anything/60,我只能 ping Google(并且只能从我的远程服务器 ping 该地址)。2603:xxxx:xxxx:8700::2/60 有效,2603:xxxx:xxxx:8700::feed/60 有效,2603:xxxx:xxxx:8700:1::1/60 有效……但 2603:xxxx:xxxx:8701::1/60 无效。当我尝试这样做时,ip -6 routeping6立即告诉我网关“无法访问”并且 Google“无法访问”,尽管所有这些地址(包括最后一个地址)都在同一个子网内,并且彼此之间以及与网关之间都处于同一子网内。

作为第二个示例,我尝试在接口上设置两个地址:

# set interfaces ethernet eth1 2603:xxxx:xxxx:8700::1/60
# set interfaces ethernet eth1 2603:xxxx:xxxx:8701::1/60
# commit

这产生了有趣的结果。ip -6 route说我有一条通过 2603:xxxx:xxxx:8701::1 经由 2603:xxxx:xxxx:8700:7454:7dff:feb1:d391 的路由,ping6不再显示“无法访问”,但我从未收到 ping 响应。很容易确定原因。我可以从我的远程服务器 ping 2603:xxxx:xxxx:8700::1,但不能 ping 2603:xxxx:xxxx:8701::1。由于从 VyOS 到 Google 的路由是通过 2603:xxxx:xxxx:8701::1 发出的,因此响应无法路由回来。奇怪的是,如果我删除这两个地址,提交,然后以相反的顺序将它们添加回来,它就会神奇地起作用:

# set interfaces ethernet eth1 2603:xxxx:xxxx:8701::1/60
# set interfaces ethernet eth1 2603:xxxx:xxxx:8700::1/60
# commit

现在ip -6 route说我有一条通过 2603:xxxx:xxxx:8700::1 经由 2603:xxxx:xxxx:8700:7454:7dff:feb1:d391 的路由,并且由于我的 ping 是通过 2603:xxxx:xxxx:8700::1 发出的,ping6因此到 Google 的响应是成功的。太好了。但是 2603:xxxx:xxxx:8701::1 仍然无法从外部 ping 通,所以我仍然没有成功使用我的所有地址。

作为第三个示例,由于我至少可以从 VyOS ping 通 Google,因此我想为我的内部公开服务器分配一些静态地址。我首先将地址 2603:xxxx:xxxx:8700:92::1/64 添加到bond0.900面向我的服务器的接口(此前缀应涵盖从 2603:xxxx:xxxx:8700:: 到 2603:xxxx:xxxx:8700:ffff:ffff:ffff:ffff 的所有内容)。然后我将 2603:xxxx:xxxx:8700:92::173/64 添加到我的其中一台服务器的接口,并将其默认网关设置为 2603:xxxx:xxxx:8700:92::1。现在,从我的服务器,我可以 ping 通 2603:xxxx:xxxx:8700:92::1。太棒了!但是我甚至无法 ping 2603:xxxx:xxxx:8700::1,这在路由器上只有一步之遥,而且我肯定无法 ping Google。如果我使用监控接口,我可以看到对 Google 的 ping 至少是从 eth1 发出的,而我只是没有收到任何响应。考虑到我上面的麻烦,我想这并不奇怪。但是我甚至没有看到对 2603:xxxx:xxxx:8700::1 的 ping 到达 VyOS。但这并不是我真正打算使用它的方式,我只是认为我必须这样做,因为我无法让 :8700 以外的任何东西正常工作。

因此,我尝试将其设置eth1为 2603:xxxx:xxxx:8700::1/64(仍可用于从 VyOS ping Google),将其设置bond0.900为 2603:xxxx:xxxx:8792::1/64,并将服务器设置为 2603:xxxx:xxxx:8792::170/64。现在,服务器可以 ping 2603:xxxx:xxxx:8792::12603:xxxx:xxxx:8700::1!这是一个进步!但是,我无法从服务器 ping 网关 (2603:xxxx:xxxx:8700:7454:7dff:feb1:d391) 或 Google。monitor interfaces显示流量出去了,但没有回来。

而这仅仅是我需要做的开始。我最终想要在两个私有 LAN/WLAN 上开辟两个 /64 前缀,用于无状态配置,但我还没有做到这一点。一次做一件事,我甚至无法让静态 IPv6 完全工作,或者在委托给我的静态 /56 的第一个 /64 之后完全工作。显然我在这里做错了什么,但这也很糟糕。为什么这么难?

相关内容