我有 Ubuntu 14.10 和 Windows 10 的双启动。
启动 Windows 后不存在任何网络问题。
但是,每当我启动 Ubuntu 时,我甚至无法连接到我的路由器(ZTE ZXDSL 931VII)。DHCP 似乎无法获取 IP(我从未获得过 ipv4 地址,而 ipv6 只获得基于 MAC 的自动配置地址),尽管 tcpdump 确实列出了一些(我假设是传出的)ARP 和其他 UDP 数据包。
以前有线连接是可以工作的,但是由于我几个月没开机了,所以我不确定这个问题是什么时候开始的。我猜可能是由于一些更新。:-/
顺便说一句,无线连接无需任何额外配置即可工作。
我尝试了几种方法,但都无法解决问题(从上到下):
- 重启
- ifconfig eth0 启动和关闭
- 将 DNS 服务器配置为 8.8.8.8 和 8.8.4.4
- 重新配置 DHCP(dhclient.conf)
- 在 /etc/network/interfaces 中指定 auto eth0 和 iface eth0 inet[6] dhcp 的变体(最终导致 eth0 iface 不受管理)
- 更改我的主机名
- 手动设置静态 IPv4 地址
- 禁用 ipv4,启用 ipv6,反之亦然
- 删除 Docker 接口
- 通过网络管理器 GUI 进行各种其他设置
简而言之,从配置的角度来看一切都看起来很正常,我觉得我已经用尽一切办法来修复这个问题。
在我看来,根本没有实现任何 IP 连接。我没有费心通过 MAC 探测路由器。
我也没有尝试更新驱动程序或任何相关软件,但一旦我尝试更新,我会在这里回复。
这是我的网卡:
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
Subsystem: Gigabyte Technology Co., Ltd Motherboard
Flags: bus master, fast devsel, latency 0, IRQ 74
I/O ports at b000 [size=256]
Memory at fe600000 (64-bit, non-prefetchable) [size=4K]
Memory at d0000000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Kernel driver in use: r8169
ifconfig 给我:
eth0 Link encap:Ethernet HWaddr 74:d4:35:xx:yy:zz
inet6 addr: fe80::76d4:35ff:fexx:yyzz/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:1440 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
当我检查网卡的状态时,它显示检测到链接。
$ ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
有任何想法吗?
答案1
听起来像是一个可怕的独白,但我似乎已经解决了这个问题。
问题出在 Realtek 以太网卡驱动程序上,很可能是由我不记得是否进行过的更新造成的。
我意识到安装的驱动程序是 r8169,但应该安装的是 r8168。
解决方案是下载适合您的内核的最新驱动程序(我的是 3.xx)并安装它们。
Realtek r8168 驱动程序(Linux): http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2
请参阅里面的 README 文件来了解安装说明。
安装后,请确保重新启动。
如果需要从内核模块中手动删除 r8169,可以这样做:
sudo modprobe -r r8169
还是没有网络?
检查 /etc/resolv.conf(为名称服务器添加 8.8.8.8 和 8.8.4.4 应该可以解决问题)。
希望它能为某些人节省几个小时。:-)
干杯!