我使用 cPanel 运行 CloudLinux 8,并按照以下指南操作:https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-get-started-with-ipv6/#add-a-single-ipv6-address-to-your-server并将以下内容添加到 /etc/sysconfig/network-scripts/ifcfg-eth0 中:
IPV6INIT=yes
IPV6ADDR=2602:fe90:200:55::2/128
IPV6_DEFAULTGW=2602:fe90:200:55::1
然后我运行,service network restart
但是 IPv6 IP 不响应外部 ping 请求(它确实从服务器本身响应)。
我注意到没有显示默认网关,我不明白为什么会出现这种情况。
ip -6 ro
unreachable ::/96 dev lo metric 1024 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 pref medium
2602:fe90:200:55::2 dev eth0 proto kernel metric 256 pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
请注意,出于隐私原因,上述输出已进行调整,并不代表分配给该服务器的实际 IPv6 空间。
答案1
博客和教程并不总是完全准确。
由于地址上使用了 aa /128 网络掩码,因此内核无法自动添加任何本来可以提供到网关的路由的 LAN 路由。因此不存在到 2602:fe90:200:55::1 的路由。添加依赖于无法访问的 2602:fe90:200:55::1 的路由失败,如下所示:
# ip address add 2602:fe90:200:55::2/128 dev eth0
# ip route add default via 2602:fe90:200:55::1 dev eth0
RTNETLINK answers: No route to host
至少有三种方法可以使其发挥作用。我首先手动描述内容,稍后将展示可以使用 RHEL 的 ifcfg 样式配置进行配置的内容。
首先显式路由到网关
# ip address add 2602:fe90:200:55::2/128 dev eth0 # ip route add 2602:fe90:200:55::1/128 dev eth0 # ip route add default via 2602:fe90:200:55::1 dev eth0
否则,点对点/对等地址
因此内核向“对等体”添加了一条路由,该对等体将成为网关
# ip address add 2602:fe90:200:55::2 peer 2602:fe90:200:55::1/128 dev eth0 # ip route add default via 2602:fe90:200:55::1 dev eth0
否则,链接路线
这表明可以创建路由而无需通过预先存在的路由进行验证。
# ip address add 2602:fe90:200:55::2/128 dev eth0 # ip route add default via 2602:fe90:200:55::1 dev eth0 onlink
添加的单个路由也可以正确到达网关本身。
CloudLinux 基于 CentOS,而 CentOS 又基于(或者是其上游……)RHEL。我无法访问任何 CloudLinux,也没有找到任何有关 ifcfg 式网络配置的特定 CloudLinux 文档。此配置在 RHEL 8 中也已弃用,建议使用 NetworkManager 代替,但它仍然可用并且 OP 仍然使用它。
在 ifcfg 式网络配置中,方法 2. 似乎不切实际。方法 1. 或 3. 可以通过附加的方法来实现配置文件/etc/sysconfig/network-scripts/route6-eth0
。对于 IPv6,仅支持 ip 路由样式语法:它将反映ip route
上面的命令。
IPV6_DEFAULTGW
在这两种情况下,请删除中的参数ifcfg-eth0
:它将由 处理route6-eth0
。
首先显式路由到网关
route6-eth0
:2602:fe90:200:55::1/128 dev eth0 default via 2602:fe90:200:55::1 dev eth0
跳过
或者其他链接路由
route6-eth0
:default via 2602:fe90:200:55::1 dev eth0 onlink
在不带 NetworkManager 的 CentOS7 和带或不带 NetworkManager 的 CentOS8 上进行了测试。 NM 可能会使用需要更改的其他设置(例如删除自动路由的使用)。
应该选择设置 1. 以获得最大兼容性。如果NM存在,一旦重新加载其配置,它将根据需要自动转换配置。