最近,每当我尝试连接到以太网时,Ubuntu 都会检测到 LAN 线,但需要很长时间(大约 10 分钟)才能获取 IP 地址。
输出nm-tool
:
Type: Wired
Driver: r8169
State: connecting (getting IP configuration)
Default: no
HW Address: ----------
Capabilities:
Carrier Detect: yes
Speed: 100Mb/s
Wired Properties:
Carrier: on
DHCP服务器没有问题。Windows连接同一个局域网非常快。
内容/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
什么可能导致这个问题?
编辑:
输出ifconfig
eth0 Link encap:Ethernet HWaddr e8:03:9a:b6:d1:2a
inet addr:10.2.64.198 Bcast:10.2.95.255 Mask:255.255.224.0
inet6 addr: fe80::ea03:9aff:feb6:d12a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1123164 errors:0 dropped:0 overruns:0 frame:0
TX packets:582761 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1503341500 (1.5 GB) TX bytes:56327121 (56.3 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:119202 errors:0 dropped:0 overruns:0 frame:0
TX packets:119202 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7588901 (7.5 MB) TX bytes:7588901 (7.5 MB)
输出dmesg
:Pastebin 链接
答案1
以下是一些建议,但绝不是明确的答案:
尝试不同的 dhcp 客户端
如果您使用 搜索apt-cache search dhcp | less
,您将看到很多默认的 dhcp 替代方案。例如,我建议获取dhcpcd
。我不确定 NetworkManager 是否在您安装 dhcpcd 后自动更改其设置,但我建议打开/etc/NetworkManager/NetworkManager.conf
并在[main]
部分下指定 dhcp=dhcpcd,如下所示。至少根据man NetworkManager.conf
:
目前支持 dhclient 和 dhcpcd。此处配置的客户端也应在您的系统上可用。如果缺少此键,则按以下顺序查找可用的 DHCP 客户端:dhclient、dhcpcd。
禁用 dnsmasq 插件
dns=dnsmasq
是 中指定的另一个选项NetworkManager.conf
。我之所以禁用它,是因为 dnsmasq 会从默认网关(即路由器)获取 dns 服务器,这也是“获取 ip 配置”过程中的元素之一。只需注释掉该插件,就像这样# dns=dnsmasq
。需要记住的小事是 NetworkManager 不会解析域名。因此,我建议更改 DNS 设置完全。另外,考虑删除/etc/resolv.conf
以让一切重置,或者至少sudo dpkg-reconfigure resolvconf
。
删除连接配置并重新连接
这可以通过连接编辑器(下拉菜单中的“编辑连接”选项或nm-connection-editor
从终端)完成。同样,也sudo rm -i /etc/NetworkManager/system-connections/*
可以达到目的。
禁止 NetworkManager 创建默认有线连接
再次,它在NetworkManager.conf
[main] 下,选项应该是no-auto-default=*
尝试 WICD 网络管理器
我想这是不言自明的……
检查 /etc/dhcp/dhclient.conf 文件
您可以与我的配置进行比较:
#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
supersede domain-name-servers 208.67.222.222,208.67.220.220,8.8.8.8;
# prepend domain-name-servers 208.67.222.222,208.67.220.220;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers,
dhcp6.fqdn, dhcp6.sntp-servers;
除此以外,我还建议您将 ifconfig 中的信息、您拥有的以太网卡以及 dmesg 的输出添加到您的问题中。干杯!
答案2
您必须将以太网接口添加到 /etc/network/interfaces 列表中,如下所示
iface eth0 inet dhcp
反过来,如果您想手动执行 dhcp 过程,请输入:
sudo dhclient eth0
答案3
我觉得这可以是一个评论,但我的声誉还不够高,无法发表评论。
因此,在我的 Ubuntu 服务器严重崩溃后,我遇到了类似的问题。恢复后,谢天谢地,一切都恢复了启动,然后幸运的是,没有互联网,因为网卡似乎卡在询问但从未收到 IP 地址。它所做的只是发送如上所述的 DHCPDISCOVER 请求。
经过几个小时/几天的修修补补,我发现 realtek 驱动程序 r8169(如第一个屏幕截图角落所示)无法正常使用。除了 Sergiy 建议的故障排除方法外,还可以查看
dmesg | grep -e r8169 -e <NICName>
您可能会看到链接已断开且尚未准备好,但是可能并不十分明显,因为在 ifdown ; ifup 重置期间,卡似乎仍会发送 DHCPDISCOVER 消息。
回滚驱动程序非常容易,我遵循此网页作为指南: https://unixblogger.com/2016/08/11/how-to-get-your-realtek-rtl8111rtl8168-working-updated-guide/
即使没有互联网连接,也可以将驱动程序加载到 USB 记忆棒上并将其安装到服务器上。
希望这会有所帮助,并且至少希望当我将来用谷歌搜索这个问题时它会出现,因为我确信这会再次发生!
答案4
您可能遇到的是自动协商问题。(因为没有进行过 wireshark,很难说,但这就是它的味道。)几年前,当恐龙在地球上漫游时,以太网从 10 MBit 发展到 100 MBit 时,这些问题更为常见。
因此,以 an 开头ethtool --change eth0 autoneg off speed 100 duplex half
,然后以 a:开头sudo dhclient -r&&sleep 5&&sudo dhclient
,这样应该正好需要 5 秒,而不是 10 分钟。
一旦成功,我们将着手进行永久修复,使其在冷启动后仍然可用(具体取决于您的硬件,这可能已经可以在热启动后继续可用)