我的问题很简单,但我没有找到解决方案,可能是因为我缺乏网络知识。
我有一台专用服务器,我通过 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 前缀是分配给单个主机的非常大的地址块。不过,我现在先不考虑这个问题,而是给你一些建议。
尝试 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
通过查看邻居表看看是否能够确定本地路由器的地址:
# 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
,然后您就可以开始了。