如何在 CentOS 7 上配置已静态路由的 IPv6 块

如何在 CentOS 7 上配置已静态路由的 IPv6 块

我的问题很简单,但我没有找到解决方案,可能是因为我缺乏网络知识。

我有一台专用服务器,我通过 IPMI 远程操作它。最近我向管理员请求 IPv6 支持,以下是我得到的回复

IP Range: 2604:881:39c::/48 has been statically routed to your server. 我尝试将此块内的 IP(2604:881:39c::2)分配给我的服务器,但我发现他们没有提供网关地址。然后我问

我:请问一下 ipv6 网关地址是多少?
管理员:这是静态路由,不包含网关。所有 IP 都路由到您的服务器。

我尝试配置它,但我完全不知道正确的路径是什么。因为我不太了解 IPv6 寻址以及上游的“静态路由”在这里是什么意思。到目前为止,我随机选择一个地址2604:881:39c::2并将其设置2604:881:39c::1为网关。这里:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
UUID=6d049769-68a1-4631-83d4-46b0f3afdf59
DEVICE=eno1
ONBOOT=yes
IPADDR=XX.XXX.XX.XX
PREFIX=30
GATEWAY=XX.XXX.XX.XX
DNS1=8.8.8.8
IPV6_PRIVACY=no
ZONE=public
DNS2=2001:4860:4860::8888
IPV6ADDR=2604:881:39c::2/48
IPV6_DEFAULTGW=2604:881:39c::1
IPV6_PEERROUTES=no

当我这样做时tracepath6,我有:

PING ipv6.google.com(dfw28s04-in-x0e.1e100.net (2607:f8b0:4000:815::200e)) 56 data bytes
From myhostname (2604:881:39c::2) icmp_seq=1 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=2 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=3 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=4 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=5 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=6 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=7 Destination unreachable: Address unreachable
From myhostname (2604:881:39c::2) icmp_seq=8 Destination unreachable: Address unreachable

看起来它成功解析了 DNS,但没有通往全球互联网的路由。另外,我试过了,ip -6 route add但没有成功。

有人对此有什么想法吗?我被难住了。

答案1

如果网络管理员确实拒绝向您提供网关地址,您只需 ping IPv6 所有路由器多播地址,它就会响应。然后您将知道至少一个地址。

例如:

[root@localhost ~]# ping6 -c 1 ff02::2%eno1
PING ff02::2%eno1(ff02::2%eno1) 56 data bytes
64 bytes from fe80::5054:ff:fefc:d4da%eno1: icmp_seq=1 ttl=64 time=0.265 ms

答案2

IPv6 /48 前缀是分配给单个主机的非常大的地址块。不过,我现在先不考虑这个问题,而是给你一些建议。

  1. 尝试 IPv6 autoconf。IPv6 的优点之一是,除了某些用例外,您不需要定义手动配置。以下是根据您提供的配置启用 autoconf 的示例配置:

    # IPv6 autoconf example
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_AUTOCONF=yes
    IPV6_ADDR_GEN_MODE=eui64
    NAME=eno1
    UUID=6d049769-68a1-4631-83d4-46b0f3afdf59
    DEVICE=eno1
    ONBOOT=yes
    IPADDR=XX.XXX.XX.XX
    PREFIX=30
    GATEWAY=XX.XXX.XX.XX
    DNS1=8.8.8.8
    IPV6_PRIVACY=no
    ZONE=public
    DNS2=2001:4860:4860::8888
    
  2. 通过查看邻居表看看是否能够确定本地路由器的地址:

    # ip -4 neighbor show
    # ip -6 neighbor show
    

    您应该在 -4 邻居表中看到 IPv4 网关的 IP 和 MAC 地址。然后,在 -6 邻居表的输出中查找相同的 MAC 地址。可能有多个具有该 MAC 的 IPv6 地址 - 这是可以的。以 开头的地址fe80::是路由器的链路本地地址,完全可以使用。否则,您可能会看到与您分配的同一块中的另一个地址,您可以使用静态配置将其用作 IPv6 网关。

答案3

在我的 VPS 上,默认网关定义为:

IPV6_DEFAULTGW="fe80::1%eth0"

在我的家庭网络上,它是:

IPV6_DEFAULTGW="fe80::218:7dff:fe05:dd11%eth0"

fe80::/10是链路本地地址,基于网关设备网络接口的 MAC 地址。就我的 VPS 而言,他们只是将其视为fe80::1一切都是虚拟的。

Michael Hampton 的回答看起来是正确的,我已投了赞成票。如果您按照他的建议操作,您应该会得到一个fe80::*地址 - 将其设置为您的默认网关,并在最后修复%interface-name,然后您就可以开始了。

相关内容