网络管理员注册数千个 IPv6 地址

giu*_*sti 6 networkmanager ipv6

我注意到网络管理器和 nm-applet 占用了大量 CPU,在检查它的过程中,我运行了ip a. 有数以千计的临时地址与我的以太网设备相关联。为了给出一个想法,这是一个字数:

ip a | wc
  23128  120541 1537623
Run Code Online (Sandbox Code Playgroud)

这是一个小的(编辑)摘录。我今天拿了这个,输出要短得多(在 3 小时正常运行后,ip a大约 2700 行)。今天使用网络的人并不多。

2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether (MAC) brd ff:ff:ff:ff:ff:ff
    inet 10.*.*.*/16 brd 10.*.255.255 scope global dynamic noprefixroute enp2s0
       valid_lft 6533sec preferred_lft 6533sec
    inet6 fd9d:*******/128 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fd6d:*******/64 scope global temporary dynamic 
       valid_lft 7122sec preferred_lft 1722sec
    inet6 fd6d:*******/64 scope global dynamic mngtmpaddr noprefixroute

    (several lines skipped)

    inet6 fd9d:*******/64 scope global temporary deprecated dynamic 
       valid_lft 4593sec preferred_lft 0sec
Run Code Online (Sandbox Code Playgroud)

我一插入以太网电缆,网络管理器就会开始注册临时 IPv6 地址,大约每秒 2 个地址。

daemon.log 显示多条类似于以下内容的消息

Feb 15 17:12:36 pulga nm-dispatcher: req:18 'dhcp6-change' [enp2s0]: new request (1 scripts)
Feb 15 17:12:36 pulga nm-dispatcher: req:18 'dhcp6-change' [enp2s0]: start running ordered scripts...
Run Code Online (Sandbox Code Playgroud)

但他们会在一段时间后停止。

另一方面,syslog充斥着如下消息:

Feb 15 17:12:51 pulga kernel: [  639.006713] IPv6: ipv6_create_tempaddr: retry temporary address regeneration
Run Code Online (Sandbox Code Playgroud)

messages当连接到我们的无线网络时,我也不断收到重复的 IP 警告。这是无关的,还是表明我们的网络配置有问题?

Feb 15 17:13:49 pulga kernel: [  696.702519] IPv6: wlp3s0: IPv6 duplicate address fd9d:*:*::* used by e0:d5:*:*:*:* detected!
Feb 15 17:13:49 pulga NetworkManager[693]: <info>  [1550265229.6930] device (wlp3s0): ipv6: duplicate address check failed for the fd9d:*:*::*/128 lft forever pref forever lifetime 668-0[*****,*****] dev 3 flags permanent,noprefixroute,tentative,0x8 src kernel address
Run Code Online (Sandbox Code Playgroud)

Rui*_*iro 3

您可能配置错误的路由器传递了冲突的 IPv6 自动地址。

禁用 IPv6 作为临时措施,并与您正在使用的网络的网络管理员/帮助台服务进行友好的交谈。

要在运行时禁用 IPv6,请执行以下操作:

sudo  sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo  sysctl -w net.ipv6.conf.default.disable_ipv6=1
Run Code Online (Sandbox Code Playgroud)

在系统中应用这些指令后,您还可以利用降低的背景噪音来尝试进一步调试问题。

为了监听 IPv6 数据包,即使在内核中禁用该服务后,您也可以执行以下操作:

sudo tcpdump -i eth0 -vv ip6
Run Code Online (Sandbox Code Playgroud)

要在启动时永久禁用它,您可以添加/etc/sysctl.conf以下行:

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
Run Code Online (Sandbox Code Playgroud)

请注意,根据发行版的不同,禁用 IPv6 可能会破坏奇怪的服务(某些情况下为 xinetd、postfix 或 Apache),但是您会注意到这些服务不会启动,并且修复通常相当简单(并且很容易通过谷歌搜索)。