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)
您可能配置错误的路由器传递了冲突的 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),但是您会注意到这些服务不会启动,并且修复通常相当简单(并且很容易通过谷歌搜索)。