我已经安装了在内核 2.6.32-5-amd64 上运行的 Debian 6.0.6,安装后我为 eth0 接口分配了一个静态 IPv6 地址。
这是我的 /etc/network/interfaces 文件的样子:
自动 lo
iface lo inet 环回自动 eth0
iface eth0 inet6 静态Run Code Online (Sandbox Code Playgroud)address fe80::a:1 netmask 64 gateway fe80::1
这是“ifconfig eth0”输出的样子:
eth0 Link encap:Ethernet HWaddr 10:1f:74:c6:27:5f
inet6 addr: fe80::121f:74ff:fec6:275f/64 Scope:Link
inet6 addr: fe80::a:1/64 Scope:Link
UP广播运行多播 MTU:1500 指标:1
RX 数据包:45 错误:0 丢弃:0 溢出:0 帧:0
TX 数据包:48 错误:0 丢弃:0 溢出:0 载波:0
冲突:0 txqueuelen:1000
RX 字节: 6427 (6.2 KiB) TX 字节:7969 (7.7 KiB)
中断:20 内存:d0700000-d0720000
如您所见,有 2 个 IPv6 地址;
一个自动生成的 IPv6 地址
一个通过 /etc/network/interfaces 静态分配的 IPv6 地址
现在我的问题是如何禁用自动生成的 IPv6 地址?
大多数站点告诉我将以下行添加到文件 /etc/sysctl.conf 中:
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
但是在系统重新启动后没有任何反应。所以我通过运行命令手动删除了第一个 IPv6 地址:
ip -6 地址 del fe80::121f:74ff:fec6:275f/64 dev eth0
确实第一个 IPv6 地址被删除了,但在重新启动后地址又回来了。
有关如何解决此问题的任何线索?
提前谢谢
您以错误的方式使用链接本地地址(以 fe80: 开头的地址)。让我描述一下 IPv6 的工作原理:
当接口出现时,系统将始终自动为该接口配置链路本地地址。此链路本地地址不可路由,仅适用于同一链路 (LAN) 上的系统之间的通信。它在许多地方使用,并且对 IPv6 设置正常运行至关重要。即使系统获得可路由地址,链路本地地址仍然存在。
来自RFC 4861:“路由器上的所有接口都必须具有链路本地地址。”
当路由器发出路由器广告 (RA) 时,系统可以使用 RA 中的信息自动配置其其他地址。这是您可以使用 autoconf 禁用的部分。
在您的配置中,您fe80::a:1
在接口上配置了一个附加的本地链路地址 ( ),然后尝试将 LAN 外部的流量路由到地址为 的默认网关fe80::1
。使用本地链路地址作为默认网关没问题,并且一直发生,但使用本地链路地址作为本地 LAN 以外目的地的源地址将永远无法工作。
把它们加起来:
为您的系统使用可路由地址。有多种获取可路由地址的方法:
/48
或一个/56
前缀。/48
.
然后使用/64
您在上面为每个 LAN 获得的前缀中的一个前缀。不要在 LAN 上使用不同的前缀长度,除非您真的知道自己在做什么。
fe80::1
的默认网关是罚款(如果确实有路由器听课程的本地链路上的地址)