使用 Debian 7.10 和wicd
网络管理器,当以太网电缆断开并再次重新连接时,网络将不再工作,直到设备重新启动(以太网接口 [eth0] 无法切换)。如果“网络重新启动”完成(eth0 消失),也会发生同样的情况。
网络配置为接受静态 IP,因此/etc/network/interfaces
文件配置如下:
# Loopback
auto lo
iface lo inet loopback
# Primary network interface
auto eth0
iface eth0 inet static
address 10.1.1.100
netmask 255.255.255.0
network 10.1.1.0
broadcast 10.1.1.255
gateway 10.1.1.1
dns-nameserver 8.8.8.8
为了解决这个问题,wicd
网络管理器被删除并更改为connman
.安装后connman
,必须检查服务名称并配置网络:
$ connmanctl services
*AR Wired ethernet_544a16cac68f_cable
$ connmanctl config ethernet_544a16cac68f_cable --ipv4 manual 10.1.1.100 255.255.255.0 10.1.1.1 --nameservers 8.8.8.8
至此,ifconfig -a
网络配置检查完毕,一切正常。现在,如果以太网电缆断开并重新连接或重新启动网络服务,以太网接口 (eth0) 始终会恢复。
但是,问题是没有互联网连接,网络无法到达网关。也不ping
是主机,因为主机不能完成,除了本地主机或其自己的IP,10.1.1.100。
# From host to gateway
$ ping 10.1.1.1
From 10.1.1.100 icmp_seq=1 Destination Host Unreachable
然后,我检查了/etc/hosts
文件:
127.0.0.1 localhost
127.0.1.1 device
并且,/etc/resolv.conf
文件:
nameserver 127.0.0.1
nameserver ::1
我手动添加了 Google DNS 服务器 8.8.8.8,并重新启动了网络服务,但行为是相同的。它无法到达网关或互联网(该文件不会永久修改,重新启动后它具有原始值)。
接下来的问题routing table
是
$ route
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.1.1.1 0.0.0.0 UG 0 0 0 eth0
8.8.8.8 10.1.1.1 255.255.255.255 UGH 0 0 0 eth0
10.1.1.0 * 255.255.255.0 U 0 0 0 eth0
10.1.1.1 * 255.255.255.255 UH 0 0 0 eth0
$ arp -n
Address HWtype HWaddress Flags Mask Iface
10.1.1.1 (incomplete) eth0
无法读取网关的 MAC。
此外,它已禁用 IPv6 /etc/sysctl.conf
,:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
和,
$ sysctl -p
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
没有什么比 ping 到自己的 IP 更有效的了。
- 这是了解网络接口发生了什么情况的另一种方法吗?
编辑1: 经过一些测试,当线路断开时,IPv4 配置似乎会丢失,并且在线路重新连接时无法恢复。
以太网接口启动设备后:
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 54:4A:16:CA:CB:FF
inet addr:10.1.1.100 Bcast:10.1.1.255 Mask 255.255.255.0
inet6 addr: FE80::564A:16FF:FECA:CBFF/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Rx packets:4524 errors:0 dropped:303 overruns:0 frame:0
Tx packets:161 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen: 1000
Rx bytes:808019 (789.0 kiB) Tx bytes:18200 ( KiB)
Interrupts:56
以太网接口断开电线后:
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 54:4A:16:CA:CB:FF
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Rx packets:6332 errors:0 dropped:417 overruns:0 frame:0
Tx packets:167 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen: 1000
Rx bytes:1154018 (1.1 MiB) Tx bytes:18680 (18.2 KiB)
Interrupts:56
以太网接口重新连接电线后:
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 54:4A:16:CA:CB:FF
inet6 addr: FE80::564A:16FF:FECA:CBFF/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Rx packets:6332 errors:0 dropped:417 overruns:0 frame:0
Tx packets:167 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen: 1000
Rx bytes:1154018 (1.1 MiB) Tx bytes:18680 (18.2 KiB)
Interrupts:56
IPv4 缺失。
- 根本原因可能是什么?如何解决(配置、驱动...)?