无法通过以太网交换机连接到互联网

无法通过以太网交换机连接到互联网

我正在将我的电脑迁移到 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:

更换了路由器。现在一切正常。

相关内容