我在 ubuntu 10.04 上设置 IPv6 地址时遇到问题。我已禁用网络管理器。我的 /etc/network/interface 文件如下所示:
iface eth0 inet6 static
pre-up modeprobe ipv6
address fe80::1
netmask 10
gateway fe80::2
我已经将 IP 地址设置为 fe80::1,但是当我启动 eth0 时,ifconfig 显示
inet6 addr: fe80::a00:27ff:fe1e:5edf/64 Scope:Link
为什么显示不同的 IP 地址?
当我跑步时
ping6 fe80::a00:27ff:fe1e:5edf/64
它告诉我未知主机。为什么?
答案1
您在评论中提到您使用是否配置来打开接口。在这种情况下,你的问题是是否配置不使用interfaces
文件(它只告诉接口开始接收数据包)。此配置文件特定于 Debian/Ubuntu,并且仅由下拉工具ifup
和ifdown
。因此,您必须使用:
ifup eth0
即使这样,你的配置也会被拒绝,因为配置文件语法使用“iface
“,而不是“ interface
”,来表示一个新的逻辑接口。(见接口(5)手册中提供了完整的语法描述。
(您的pre-up
这一行也是 1)不必要的:它是自动完成的,并且 2)输入错误:它是“ modprobe
”。)
显示该fe80::a00:27ff:fe1e:5edf
地址不是因为任何配置,而是因为 IPv6 需要它。每个接口都需要有一个本地链路根据“接口 ID”(其 MAC 地址)分配地址;这些地址由 Linux 内核自动添加。
(请记住,一个接口可以有多个地址。您可以在同一个接口上同时拥有和fe80::1
,fe80::a00:27ff:fe1e:5edf
并且它仍然可以工作。)
还要记住的fe80::/10
是地址本地链路– 换句话说,他们永远不会被路由,该gateway
配置设置毫无意义。
这意味着每当您尝试访问链路本地地址时,您必须手动指定要使用的接口 - 这是通过添加区域索引到地址。(在 Linux 上,区域索引与接口名称相同。)例如,要通过eth0,您必须添加%eth0
:
ping6 fe80::a00:27ff:fe1e:5edf%eth0
(Oliver Salzburg 的回答也是正确的——在引用单个主机时不能指定子网掩码。)
答案2
我认为您不必提供子网掩码ping
。
ping6 fe80::a00:27ff:fe1e:5edf
应该没事。