Debian - IPv6 禁用“无状态地址自动配置”

Debian - IPv6 禁用“无状态地址自动配置”

我安装了运行在内核 2.6.32-5-amd64 上的 Debian 6.0.6,安装后我为 eth0 接口分配了一个静态 IPv6 地址。
我的 /etc/network/interfaces 文件如下所示:

自动 lo
iface lo inet 环回

自动 eth0
iface eth0 inet6 静态

 address fe80::a:1
 netmask 64
 gateway fe80::1

“ifconfig eth0”的输出如下:

eth0 链路封装:以太网 HWaddr 10:1f:74:c6:27:5f
inet6 地址:fe80::121f:74ff:fec6:275f/64 范围:链接
inet6 地址:fe80::a:1/64 范围:链接
上行广播正在运行多播 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 地址确实被删除了,但重启后该地址又恢复了。

关于如何解决这个问题有什么线索吗?

提前谢谢

答案1

您使用 Link-Local 地址(以 fe80: 开头的地址)的方式不正确。让我来描述一下 IPv6 的工作原理:

  1. 当接口启动时,系统将始终自动为该接口配置一个链路本地地址。此链路本地地址不可路由,仅适用于同一链路(LAN)上的系统之间的通信。它用于许多地方,对于正常运行的 IPv6 设置至关重要。即使系统获得可路由的地址,链路本地地址仍然保留。

    RFC 4861:“路由器上的所有接口都必须具有链路本地地址。”

  2. 当路由器发出路由器通告 (RA) 时,系统可以使用 RA 中的信息自动配置其其他地址。您可以使用 autoconf 禁用此部分。

fe80::a:1在您的配置中,您在接口上配置了一个额外的链路本地地址 ( ),然后尝试将 LAN 外部的流量路由到地址fe80::1为 的默认网关。使用链路本地地址作为默认网关是可以的,而且经常发生,但使用链路本地地址作为本地 LAN 以外目的地的源地址永远不会奏效。

把它们加起来:

  • 不要管链接本地地址。删除它会破坏你的 IPv6 配置。

  • 为您的系统使用可路由地址。有多种方法可以获取可路由地址:

    • 从您的 ISP 获取前缀。您通常会获得一个/48或一个/56前缀。
    • 从获得隧道六XS或者飓风电气并请求一个委托前缀。它将是一个/48
    • 生成 ULA 前缀。您无法将其路由到全球互联网,但您可以在自己的组织内路由它。使用ULA 发电机根据您某个设备的某个 MAC 地址生成 ULA 前缀。

    然后为每个 LAN 使用上面得到的前缀中的 `/64` 前缀。除非您 *真正* 知道自己在做什么,否则不要在 LAN 上使用不同的前缀长度。
  • 用作fe80::1默认网关就可以了(当然,如果本地链路上确实有一个路由器在监听该地址)

相关内容