我正在将我的电脑迁移到 Ubuntu。第一次安装时一切顺利,但在此过程中,我开始遇到严重的互联网连接问题。我知道这个问题与操作系统无关,因为我网络上的任何 PC 都会遇到这个问题,无论我使用的是哪个版本的 Linux。因为我今后的所有努力都将集中在 Ubuntu 上,所以我认为这是最好的选择。
我有一个使用 DSL 的家庭网络,已经稳定运行了大约 9 个月。两天前,也就是我最初写这篇文章的 3 月 1 日,它开始给我带来连接问题。自从第一次进入这个网络以来,我换了一台新交换机,情况大大改善了。
截至 3 月 5 日的当前状态是,随着新交换机的到位,最初提到的配置(现在标记为“路由 1”和“路由 2”)现在均已正常运行。
我考虑过关闭这个问题,但我打算添加“路由 3”,它是我网络的一部分,但完全可以正常工作。“路由 3”是菊花链关闭主交换机,自从我大约 9 个月前设置以来一直是网络的一部分。从物理上讲,它比替代方案方便得多,替代方案是在我的房子里多铺设 6 条 50 到 100 英尺长的以太网电缆。如果大家一致同意我这样做,我将关闭这个问题。
我使用的测试是:ping www.google.com
下面是“路由 1”的配置,其中“EL”是以太网链路,“SW”是交换机。使用此配置,我从 ping 中得到正常结果,从 www.google.com 收到 64 字节消息。
调制解调器 --> 有线链路 --> 路由器 --> EL --> Ubuntu PC
下面是添加了以太网交换机的“路由 2”。下面显示的配置现在也通过了。
调制解调器 --> 有线链路 --> 路由器 --> EL --> SW --> EL --> Ubuntu PC
最终配置“路线 3”如下所示。
调制解调器 --> 有线链路 --> 路由器 --> EL --> SW1 --> EL --> SW2 --> EL --> Ubuntu PC
我目前有 4 条以太网链路从交换机“SW1”出来。其中一个链路符合“路由 2”图并且正常工作。其他 3 条链路是到计算机的“路由 3”链路。其中两个链路通过。第三个链路失败,错误消息略有不同,大概是因为它们运行的是不同的 Linux 发行版。
当我使用“路由 3”配置从 Ubuntu 主机 ping 时,错误消息是:
ping:www.google.com:名称或服务未知
当我从非 Ubuntu 主机 ping 时,再次使用“路由 3”配置,错误消息是:
ping:www.google.com:名称解析暂时失败
二者均表明该名称正在被转换为 IP 地址。
从任一台计算机我都可以 ping 通路由器,但不能 ping 通 www.google.com。
当我使用“Route 3”运行 lshw 时,得到以下结果:
lshw -C network
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
logical name: enp1s0
version: 06
serial: 00:30:67:cd:16:04
size: 1Gbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168e-3_0.0.4 03/27/12 ip=192.168.0.251 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
resources: irq:26 ioport:e000(size=256) memory:d0004000-d0004fff memory:d0000000-d0003fff
当我使用“Route 2”运行 tracepath 时,我得到:
tracepath www.google.com
1?: [LOCALHOST] pmtu 1500
1: router 0.613ms
1: router 0.566ms
2: router 0.536ms pmtu 1492
2: 10.7.0.69 18.574ms
3: 172.16.10.57 25.352ms
4: no reply
5: no reply
并且“无回复”会重复发生,直到我摆脱跟踪路径。
如果我使用“路由 3”运行 tracepath,则 tracepath 将挂起且没有输出。
吉姆·A.
答案1
我已经安装了 r8168-dkms 包。
此外,我在 /etc/network/interfaces 文件中添加了以下内容:
auto enp1s0
iface enp1s0 inet static
address 192.168.0.251/24
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
mtu 1492
请注意,接口是“enp1s0”,而不是“eno1”,因为我暂时使用的是 debian 主机。一旦我在新的 Ubuntu PC 上获得网络,我就会使用它。
通过这些更改,我现在可以使用路由获得跟踪路径:
路由器 --> EL --> PC
tracepath www.google.com
1?: [LOCALHOST] pmtu 1492
1: router 0.412ms
1: router 0.353ms
2: 10.7.0.69 18.506ms
3: 172.16.10.57 34.332ms
4: no reply
使用路线:
路由器 --> EL --> 交换机 --> EL --> PC
我得到以下信息:
tracepath www.google.com
tracepath: www.google.com: Temporary failure in name resolution
注意:显示‘暂时失败’消息之前可能有 30 到 60 秒的延迟。
使用路线开关,
ping www.google.com
产量:
ping www.google.com
ping: www.google.com: Temporary failure in name resolution
另一件值得注意的事情是,在我对路径中的交换机进行一些测试时,当我执行 ping 操作然后用 cntl-C 中断它时,ping 统计数据出现并表明数据包失败率为 95%。我不明白为什么这些统计数据有时会显示,但有时不会显示。
我的配置设置为:
路由器-->交换机-->PC
我尝试运行“ping -c xx -M do -s xxx 8.8.8.8”海因内玛建议。在所有情况下,我都得到了相同的结果。以下是示例:
$ sudo ping -c 4 -M do -s 1400 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 1400(1428) bytes of data.
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3079ms
我的配置设置为:
路由器-->电脑
我再次运行了 ping,结果看起来
$ ping -c 4 -M do -s 1464 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 1464(1492) bytes of data.
76 bytes from 8.8.8.8: icmp_seq=1 ttl=57 (truncated)
76 bytes from 8.8.8.8: icmp_seq=2 ttl=57 (truncated)
76 bytes from 8.8.8.8: icmp_seq=3 ttl=57 (truncated)
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 21.980/23.742/25.505/1.444 ms
$ ping -c 4 -M do -s 1465 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 1465(1493) bytes of data.
ping: local error: Message too long, mtu=1492
ping: local error: Message too long, mtu=1492
ping: local error: Message too long, mtu=1492
因此,看起来 -s 1464 处有错误。
但对我来说最重要的是,当我使用以下配置时,ping 显示 100% 数据包丢失:
路由器-->交换机-->PC。
对我来说这仍是一个大谜团。
答案2
开关
我认为您不能级联非管理型以太网交换机。
你的配置应该看起来更像这样:
DSL modem-->router(1)-->switch(1-8)-->PCs(1-8)
router(2)-->switch(1-8)-->PCs(9-16)
router(3)-->PC
router(4)-->PC
为了避免长距离开放式电缆布线,请考虑使用电力线适配器。
DSL
对于 DSL,您的 MTU 应该不是是 1500,但可能类似于 1492。
对于 DSL,常见的 MTU 设置是 1492。请先尝试此值,然后查看您的网站现在是否可以访问。
要确定正确的设置,请从所有 MTU 设置 = 1500 和 VPN = 关闭开始。(VPN 需要不同的测试)。
在里面terminal
:
ping [-c 计数] [-M 执行] [-s 数据包大小] [主机]
使用的选项是:
c count
:ping 次数M hint
:选择路径 MTU 发现策略。可以是do
(禁止碎片,即使是本地碎片),want
(进行 PMTU 发现,当数据包大小较大时在本地进行碎片),或dont
(不设置 DF 标志)。s packet_size
:指定要发送的数据字节数。
您应该始终从 1472 开始,然后每次减少 10。一旦收到回复,就增加 1,直到收到碎片数据包。取该值(最后一个好值)并将 28 添加到该值以考虑各种 TCP/IP 标头。例如,假设 1452 是合适的数据包大小(您第一次收到对 ping 的 ICMP 回复)。实际的 MTU 大小将是 1480,这是我们正在使用的网络的最佳值。
ping -c 4 -M do -s 1472 8.8.8.8
# 这可能会显示碎片
ping -c 4 -M do -s 1462 8.8.8.8
# 可能会显示碎片
ping -c 4 -M do -s 1452 8.8.8.8
# 没有碎片?
ping -c 4 -M do -s 1453 8.8.8.8
# 仍然没有碎片?
参考:如何使用 ICMP ping 确定适当的 MTU 大小
以太网驱动程序
r8169 驱动程序有缺陷。最好安装r8168-dkms
、重启并重新测试。
更新#1:
更换了路由器。现在一切正常。