用nmcli自定义路由后出现的bug
Tofloor
poster avatar
186******39
deepin
2017-09-21 03:39
Author

  1. $ uname -a
  2. Linux xxx 4.9.0-deepin11-amd64 #1 SMP PREEMPT Deepin 4.9.40-2 (2017-08-12) x86_64 GNU/Linux
  3. $ nmcli connection modify 有线连接 +ipv4.routes "10.0.0.0/8 10.67.40.253"
Copy the Code


使用命令后一切正常,路由也加上了。但是重启后任务栏整个卡死,目测是由于右下角的网络图标显示不出来的原因

手动删除 /etc/NetworkManager/system-connections/有线连接 中的route1,并改回mode=auto后正常

跪求解决方案


Reply Favorite View the author
All Replies
1 / 2
To page
186******39
deepin
2017-09-22 00:13
#1
难道我碰到的是个假bug?
Reply View the author
186******39
deepin
2017-09-22 19:35
#2
啊,没有人关心吗=。=
Reply View the author
duanyao
deepin
2017-09-23 03:13
#3
本帖最后由 duanyao 于 2017-9-22 19:15 编辑

你确定你的局域网有 10.0.0.0/8 这么大?我执行你的命令后根本就无法选中那个网络连接了。

至于任务栏卡死,可能与网络无关,你杀掉 dde-dock 进程试试(它会自动重启)。
Reply View the author
186******39
deepin
2017-09-23 06:11
#4
非常确定。
没错,就是没法在控制中心里面选中网络了。有时又可以,非常让人挠头。
Reply View the author
186******39
deepin
2017-09-23 06:12
#5
我很确定就是因为网络。每次都是卡在网络图标出来之前,删掉自定义的路由就好了。
Reply View the author
duanyao
deepin
2017-09-23 08:42
#6
https://bbs.deepin.org/post/145798
非常确定。
没错,就是没法在控制中心里面选中网络了。有时又可以,非常让人挠头。 ...

那么描述一下你的网络环境和配置吧,还有为什么不在控制中心里配置,而要用 nmcli?

如果 dde-dock 卡死,说明它可能有 bug,卡死时你可以用 strace -f -p xxx 分析一下,xxx 是 dde-dock 的 pid。
此外也可以用 strace 看一下 NetworkManager 进程(需要sudo)。
Reply View the author
186******39
deepin
2017-09-23 10:15
#7
我们这里有一个可以上internet的网关,还有一个可以连接局域网的网关,所以,必须要建个静态路由。
控制中心可以设置2个路由吗?我没看到呢,要是有的话,麻烦详细说下怎么直接用控制中心配置。
现在我是用/etc/rc.local这么用着,就是有时候网线拔一下后,需要重新输入route add感觉很蛋疼,所以才想办法用nmcli的。
话说nmcli本来不就是netmanager的标准配置吗?我不是很理解它和控制中心有什么区别。
Reply View the author
duanyao
deepin
2017-09-23 17:15
#8
只是了解一下情况,不是说nmcli不该用。控制中心对一个接口只能设置一个子网掩码和一个默认网关,你是要再加一对是吗?
我估计 deepin 的 GUI 不能很好的处理这种情况。https://bbs.deepin.org/user/48640 看看?

我也是第一次听说还有网络需要这样配置的,你能具体说一下你的两个路由的设置吗?这样我可以试试在本地重现。
Reply View the author
186******39
deepin
2017-09-24 05:20
#9
很多的吧这种?假如说你们的部门稍微大点,一个部门用内部网络的192.168.1.0/24网段的地址,另外一个用192.168.2.0/24网段。这两个网段都需要通过一个网关上internet,还需要彼此访问。就会形成我这种情况了。
Reply View the author
186******39
deepin
2017-09-24 05:23
#10
重现很简单的了,你随便用nmcli添加一个静态路由就行了。反正我加正确的路由都会出错的,随便你加一下估计就会出现错误了
Reply View the author
duanyao
deepin
2017-09-24 05:54
#11
https://bbs.deepin.org/post/145798
很多的吧这种?假如说你们的部门稍微大点,一个部门用内部网络的192.168.1.0/24网段的地址,另外一个用192. ...

并没有,我们公司有 172.16.0.0/24 和 172.16.1.0/24 和 192.168.0.0/24 等网段,可以上外网也可以互相访问,但并不需要在一台机器上配置多个网段和网关。
Reply View the author
duanyao
deepin
2017-09-24 06:08
#12
https://bbs.deepin.org/post/145798
重现很简单的了,你随便用nmcli添加一个静态路由就行了。反正我加正确的路由都会出错的,随便你加一下估计 ...

我在 WIFI 上随便试了,并不能重现。
nmcli connection modify "CU_DBdx" +ipv4.routes "192.168.2.0/24 192.168.2.1" ,并没有什么效果。route 命令显示的路由表没有任何变化,原来的网段是 192.168.1.0/24 网关是 192.168.1.1 ,仍然可以正常使用。dock 也没有卡死的现象。
Reply View the author
duanyao
deepin
2017-09-24 06:33
#13
多说一句,求助的时候应提供尽量多的信息,因为不同的人的软硬件和网络环境千差万别,求助者觉得提供的信息已经足够重现问题了,但实际上可能并不够。觉得可能相关也可能不相关的信息,应当提供,而不是相反。
论坛交流远不如现场交流高效,用网络术语来比喻是RTT很高,所以请尽量一次性的提供足够信息,以节约大家的时间。
Reply View the author
186******39
deepin
2017-09-25 16:23
#14
本帖最后由 l0rraine 于 2017-9-25 08:31 编辑

能问下你重启了吗?我这不重启时一切也正常的。
还有,或许你那条路由并没有被添加进去,你可以进/ etc/NetworkManager/system-connections/ 里面找到自己的网络连接,看看是不是有route1?
我也只是提供一条自己认为的bug,并不是专门的测试人员啊,我也只能提供我认为详尽的说明,提供不了你认为详尽的说明呀。
要是因为自己提的问题不够详尽就不能提的话,那deepin就无法进步了不是吗?
我现在也是网络断了就自己运行下写好的.sh命令,麻烦不到哪里去。解决了bug也并不能为我带来什么太大的好处。就这样吧。
不管怎样,还是很感谢你帮我做测试的。至少有人理我,呵呵
Reply View the author
duanyao
deepin
2017-09-25 18:34
#15
本帖最后由 duanyao 于 2017-9-25 10:35 编辑

我这里重启与不重启现象没有区别,插拔网线就可以引起 NM 重新配置网络了。具体操作和输出:

$nmcli connection modify "有线连接" +ipv4.routes "10.0.0.0/8 10.67.40.253"

$ sudo cat /etc/NetworkManager/system-connections/有线连接
[connection]
id=有线连接
uuid=f7207aad-37d0-3db0-cb2c-847f77043054
type=ethernet
permissions=
timestamp=1506306152

[ethernet]
mac-address=F0E:F1:E9:4A:0B
mac-address-blacklist=

[ipv4]
address1=172.16.0.163/24,172.16.0.1
dns=114.114.114.114;8.8.8.8;
dns-search=
ignore-auto-dns=true
method=manual
route1=10.0.0.0/8,10.67.40.253

[ipv6]
addr-gen-mode=eui64
dns-search=
method=auto

$ sudo journalctl -a -f | grep -i NetworkManager
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.4616] device (enp4s0): state change: ip-config -> unavailable (reason 'carrier-changed', internal state 'managed')
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.4701] manager: NetworkManager state is now CONNECTED_LOCAL
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5611] device (enp4s0): link connected
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5627] device (enp4s0): state change: unavailable -> disconnected (reason 'carrier-changed', internal state 'managed')
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5636] policy: auto-activating connection '有线连接'
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5659] device (enp4s0): Activation: starting connection '有线连接' (f7207aad-37d0-3db0-cb2c-847f77043054)
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5662] device (enp4s0): state change: disconnected -> prepare (reason 'none', internal state 'managed')
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5666] manager: NetworkManager state is now CONNECTING
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5688] device (enp4s0): state change: prepare -> config (reason 'none', internal state 'managed')
9月 25 10:18:28 duanyao-laptop NetworkManager[825]:   [1506305908.5693] device (enp4s0): state change: config -> ip-config (reason 'none', internal state 'managed')
9月 25 10:18:28 duanyao-laptop NetworkManager[825]: [1506305908.5724] platform-linux: do-add-ip4-route[2: 10.0.0.0/8 100]: failure 101 (网络不可达)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.0.1      0.0.0.0         UG    100    0        0 enp4s0
172.16.0.0      0.0.0.0         255.255.255.0   U     100    0        0 enp4s0
192.168.250.0   0.0.0.0         255.255.255.0   U     0      0        0 anbox0

$ cat /etc/resolv.conf
# Generated by NetworkManager

从日志可以看出,NetworkManager 出错了,因为“10.0.0.0/8 网络不可达”,这条路由规则并没有加上;一个副作用是 /etc/resolv.conf 清空,造成域名无法解析。dock 或其它GUI界面并没有异常。要恢复正常,逆向操作就行了:nmcli connection modify "有线连接" -ipv4.routes "10.0.0.0/8 10.67.40.253" 。

因为我们网络环境的差异,似乎我并没有办法简单地重现你的问题。

Reply View the author
duanyao
deepin
2017-09-25 18:57
#16
本帖最后由 duanyao 于 2017-9-25 11:06 编辑

我也只是个 deepin 的用户而已,与官方毫无关系,似乎你误会了什么。

至于怎么算“详尽的说明”,这当然一是靠经验,二是看帮助你的人的要求。如果帮助你的人说“请提供更详细的说明”或类似的话,那就是说你之前的说明不够详细,很简单吧?我在7楼9楼两次提出这样的要求,但你仍然没有说明你的网络环境和具体配置。你在15楼说“你可以进/etc/NetworkManager/system-connections/ 里面找到自己的网络连接,看看是不是有route1?”这不就对了,说明你也知道哪些信息是相关的。但是为什么没有一开始就把自己的配置文件贴出来呢?

我已开始觉得你也是个有相当经验的 Linux 用户,否则也不会做这么复杂的网络设置,所以并没有把要求的信息说得很明确,而是等你自己提供。看来是个失误。我重新具体提一次吧:
1. 网络环境的具体情况:IP地址、网络号、子网掩码、默认网关、自定义路由等,不要有任何遗漏。
2. /etc/NetworkManager/system-connections/ 里的配置文件的内容。
3. 日志:插拔网线前后 sudo journalctl -a -f | grep -i NetworkManager 的输出。
4. route -n 的输出。
5. /etc/resolv.conf 的内容。
6. 不能上网的话,ping 外网和 ping 网关的输出。
7. 你在 /etc/rc.local 里加的脚本的内容。

关于“要是因为自己提的问题不够详尽就不能提的话,那deepin就无法进步了不是吗”的问题,我不代表 deepin,只说一下自己的看法:可以提,但是问题被解决的可能性会大大下降,特别是一些疑难杂症。这跟到医院看病一样,如果不能详细描述自己症状,就会影响医生的判断,其中的利害自己权衡吧。医院自然还有仪器检查的手段,但deepin的人以及论坛上的人却不在你的机器跟前,能获得的信息是很有限的,望你理解。

Reply View the author
186******39
deepin
2017-09-25 22:05
#17
sorry,我没啥经验,你可以看看我的发帖,最早是问怎么自动启动。搞这么复杂也是被逼的啊,我们这里网络环境就是这样了,windows得加,linux也得加。其实现在基本也能用了,只是在网上看到nmcli可以完美解决这才折腾折腾的。抱歉耽误你的时间了,就此打住吧。
另外,我在第一帖就说过了
手动删除 /etc/NetworkManager/system-connections/有线连接 中的route1,并改回mode=auto后正常


嗯,要是你想研究这个问题的话,我再提供下我的网络环境。
1.  固定ip,无拨号,只是单纯的局域网
2.  通过一个网关上Internet,一个网关上局域网。
3.  nameserver 114.114.114.114
4.  nmcli命令添加路由后,一切正常,只是有时候打开控制中心的网络时压根看不到网卡接口
5. 重启后dock卡住,目测是卡在右下角的网络图标那
6. route -n
  1. Kernel IP routing table
  2. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  3. 0.0.0.0         10.67.40.215    0.0.0.0         UG    100    0        0 enp2s0
  4. 10.0.0.0        10.67.40.253    255.0.0.0       UG    0      0        0 enp2s0
  5. 10.67.40.128    0.0.0.0         255.255.255.128 U     100    0        0 enp2s0
Copy the Code

7. sudo journalctl -a -f | grep -i NetworkManager 返回空



Reply View the author
duanyao
deepin
2017-09-25 22:40
#18
https://bbs.deepin.org/post/145798
sorry,我没啥经验,你可以看看我的发帖,最早是问怎么自动启动。搞这么复杂也是被逼的啊,我们这里网络环 ...
1.  固定ip,无拨号,只是单纯的局域网

是要你给出具体的“IP地址、网络号、子网掩码、默认网关、自定义路由等”,不是笼统地说。给的信息不具体,别人很难帮你。
2.  通过一个网关上Internet,一个网关上局域网。

同上,两个网关的具体IP地址是?
7. sudo journalctl -a -f | grep -i NetworkManager 返回空

这是用来实时输出日志的,你需要在运行这个命令期间,拔插一次网线,才能看到输出。

再说一次,提供 /etc/NetworkManager/system-connections/ 下的文件。
Reply View the author
186******39
deepin
2017-09-25 23:53
#19
  1. journalctl -a -f | grep -i NetworkManager
  2. 9月 25 15:51:55 idn-lee-PC NetworkManager[452]:   [1506325915.4187] device (enp2s0): link connected
  3. 9月 25 15:52:00 idn-lee-PC NetworkManager[452]:   [1506325920.3017] device (enp2s0): state change: activated -> unavailable (reason 'carrier-changed', internal state 'managed')
  4. 9月 25 15:52:00 idn-lee-PC NetworkManager[452]:   [1506325920.3045] manager: NetworkManager state is now CONNECTED_LOCAL
  5. 9月 25 15:52:00 idn-lee-PC NetworkManager[452]:   [1506325920.3051] manager: NetworkManager state is now DISCONNECTED
  6. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.4974] device (enp2s0): link connected
  7. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.4986] device (enp2s0): state change: unavailable -> disconnected (reason 'carrier-changed', internal state 'managed')
  8. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.4999] policy: auto-activating connection '有线连接'
  9. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5042] device (enp2s0): Activation: starting connection '有线连接' (289f727e-f4da-3957-b42b-df455ba9e3c2)
  10. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5046] device (enp2s0): state change: disconnected -> prepare (reason 'none', internal state 'managed')
  11. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5048] manager: NetworkManager state is now CONNECTING
  12. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5055] device (enp2s0): state change: prepare -> config (reason 'none', internal state 'managed')
  13. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5066] device (enp2s0): state change: config -> ip-config (reason 'none', internal state 'managed')
  14. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5093] device (enp2s0): state change: ip-config -> ip-check (reason 'none', internal state 'managed')
  15. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5099] device (enp2s0): state change: ip-check -> secondaries (reason 'none', internal state 'managed')
  16. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5101] device (enp2s0): state change: secondaries -> activated (reason 'none', internal state 'managed')
  17. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5102] manager: NetworkManager state is now CONNECTED_LOCAL
  18. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5827] manager: NetworkManager state is now CONNECTED_GLOBAL
  19. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5828] policy: set '有线连接' (enp2s0) as default for IPv4 routing and DNS
  20. 9月 25 15:52:06 idn-lee-PC NetworkManager[452]:   [1506325926.5830] device (enp2s0): Activation: successful, device activated.
Copy the Code





  1. [connection]
  2. id=有线连接
  3. uuid=289f727e-f4da-3957-b42b-df455ba9e3c2
  4. type=ethernet
  5. autoconnect-priority=-999
  6. permissions=
  7. timestamp=1506325209

  8. [ethernet]
  9. mac-address=B0:83:FE:5D:E7:65
  10. mac-address-blacklist=

  11. [ipv4]
  12. address1=10.67.40.184/25,10.67.40.215
  13. dns=114.114.114.114;
  14. dns-search=
  15. ignore-auto-dns=true
  16. method=manual
  17. route1=10.0.0.0/8,10.67.40.253

  18. [ipv6]
  19. addr-gen-mode=stable-privacy
  20. dns-search=
  21. method=auto
Copy the Code



Reply View the author
186******39
deepin
2017-09-25 23:59
#20
网络配置肯定是没有问题的,我这配置都上了10年网了……
我也不知道为什么你重现不了,在我来看,只要你在 连接 配置文件里加上route1,然后把method改成manual,然后再重启,也就重现完毕了。
好了,不折腾了,你也不是官方的人,我也不是啥专业测试人员,就这样了,我改回去喽。
Reply View the author
1 / 2
To page