Networkmanager

註冊數千個 IPv6 地址的網路管理器

  • February 17, 2019

我注意到網路管理器和 nm-applet 佔用了大量 CPU,在檢查它的過程中,我執行了ip a. 我的乙太網設備有數千個臨時地址。為了給出一個想法,這裡是一個字數:

ip a | wc
 23128  120541 1537623

這是一個小(編輯)摘錄。我今天拿了這個,輸出要短得多(正常執行 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

一旦我插入乙太網電纜,網路管理器就會以大約每秒 2 個地址的速度註冊臨時 IPv6 地址。

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...

但他們會在一段時間後停下來。

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

Feb 15 17:12:51 pulga kernel: [  639.006713] IPv6: ipv6_create_tempaddr: retry temporary address regeneration

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

您可能配置錯誤的路由器傳遞了衝突的 IPv6 自動地址。

作為臨時措施禁用 IPv6,並與您正在使用的網路的網路管理員/幫助台服務進行友好交談。

要在執行時禁用 IPv6,請執行以下操作:

sudo  sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo  sysctl -w net.ipv6.conf.default.disable_ipv6=1

在系統中應用這些指令後,您還可以利用降低的背景噪音來嘗試進一步調試問題。

對於偵聽 IPv6 數據包,即使在核心中禁用該服務後,您也可以執行以下操作:

sudo tcpdump -i eth0 -vv ip6

要在啟動時永久禁用它,請添加/etc/sysctl.conf以下行:

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

請注意,根據發行版的不同,禁用 IPv6 可能會破壞奇怪的服務(在某些情況下是 xinetd、postfix 或 Apache),但是您會注意到這些服務不會啟動,並且修復通常相當簡單(並且很容易被搜尋)。

引用自:https://unix.stackexchange.com/questions/500953