如何从一个接口中只删除一个 IPv6 地址?

Ram*_*ddy 6 networking ipv6

我的板子linux kernel 2.6.23.12eth0接口上有两个 IPv6 地址。

root@ramana:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FF:AB:CD:EF:85:94  
          inet addr:192.168.20.107  Bcast:192.168.20.255 Mask:255.255.255.0
          inet6 addr: fe80::20d:b9ff:fe3c:8594/64 Scope:Link
          inet6 addr: 2001:1890:110e:1111::a245/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6289 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:587799 (574.0 KiB)  TX bytes:2057305 (1.9 MiB)
          Interrupt:10 Base address:0x4000
Run Code Online (Sandbox Code Playgroud)

我想在此禁用第一个 ipv6 地址。我怎么做?

那么有一个问题在这里。但是我的内核中没有这样的文件。

use*_*686 11

通常,您真的不应该删除链路本地地址,因为它是核心 IPv6 功能运行所必需的,例如邻居发现(即 IPv6 ARP)。

也就是说,您可以使用ip addr添加或删除 IPv4/6 地址:

ip addr del 2001:1890:110e:1111::a245/64 dev eth0
Run Code Online (Sandbox Code Playgroud)

ip是现代 Linux 网络配置工具,ifconfig应避免在 Linux 上使用。它仍然可以删除单个地址,但仅限于 IPv6:

ifconfig eth0 del 2001:1890:110e:1111::a245/64
Run Code Online (Sandbox Code Playgroud)

  • +1表示不删除它。它会给你带来比你想象的更多的麻烦。 (2认同)