有线网络连接不断中断(双启动)

有线网络连接不断中断(双启动)

我最近在已经安装了 Windows 10 的台式机上安装了 Ubuntu 16.04 以实现双启动,但在 Ubuntu 中遇到了网络问题。在 Windows 中,连接工作正常。我使用的是有线连接。

在 Ubuntu 中,似乎我只能让连接工作几秒钟,最多一分钟。大多数时候,当我尝试访问新网页时,它会失败。每次我都可以通过手动断开连接(Ubuntu 似乎认为它仍然处于连接状态,只是 Firefox 实际上找不到任何页面)并重新连接来相当一致地解决这个问题。然后它会工作几秒钟,我可以利用这段时间快速浏览到我想要访问的页面。

我确实发现了很多其他类似的问题和答案,但大多数答案似乎都是关于根据特定用户的输出专门编辑某些文件或输入终端命令。所以......我认为,盲目遵循其他人给出的答案中的任何此类指示并不是一个好主意,因为他们的输出可能与我的情况不同,而应该在这里具体询问我的情况。

我确实按照在 Windows 中在某处找到的以下步骤进行操作,但这并不能解决我的问题:

Right click my computer and choose "Properties"
--> "Hardware" tab   --> Device Manager
 --> Network Adapters
  --> "double click" Realtek ...
   --> Advanced tab
    --> Wake-On-Lan After Shutdown
     --> Enable

我还看到某处提到,完全关闭 Windows 并再次手动打开 PC 可能会有所帮助,而不是从 Windows 重新启动然后启动 Ubuntu,但这对我来说也没有什么区别。

我从 Ubuntu 收到的一些命令和输出:

在:

$ lspci | grep -i eth

输出:

06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

在:

$ ifconfig -a

输出:

enp6s0    Link encap:Ethernet  HWaddr d0:17:c2:d3:d8:19  
      inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
      inet6 addr: fe80::5eb0:b570:8edf:ddf7/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:18521 errors:0 dropped:0 overruns:0 frame:0
      TX packets:16981 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:11094182 (11.0 MB)  TX bytes:1719007 (1.7 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:7164 errors:0 dropped:0 overruns:0 frame:0
      TX packets:7164 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:528834 (528.8 KB)  TX bytes:528834 (528.8 KB)

在:

$ sudo 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:06:00.0
   logical name: enp6s0
   version: 15
   serial: d0:17:c2:d3:d8:19
   size: 1Gbit/s
   capacity: 1Gbit/s
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress msix 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=rtl8168h-2_0.0.2 02/26/15 ip=192.168.2.1 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
   resources: irq:123 ioport:d000(size=256) memory:f7104000-f7104fff memory:f7100000-f7103fff

还请让我知道我上面粘贴的内容是否确实是敏感内容,以及我是否应该删除它:P


编辑

在:

sudo lshw -C CPU

出去:

  *-cpu                   
   description: CPU
   product: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
   vendor: Intel Corp.
   physical id: 43
   bus info: cpu@0
   version: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
   serial: To Be Filled By O.E.M.
   slot: LGA1151
   size: 900MHz
   capacity: 3600MHz
   width: 64 bits
   clock: 100MHz
   capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp cpufreq
   configuration: cores=4 enabledcores=4 threads=4

在:

sudo lshw -C network | grep -i driver

出去:

configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168h-2_0.0.2 02/26/15 ip=192.168.2.1 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s

在:

free -h

出去:

total        used        free      shared  buff/cache   available

内存:15G 1.5G 12G 46M 1.1G 13G 交换:15G 0B 15G

在:

swapon -s

出去:

Filename                Type        Size    Used    Priority

/dev/sdb7 分区 15998972 0 -1


编辑2:

在:

dkms status

出去:

r8168, 8.041.00: added

在:

sudo apt-get install dkms r8168-dkms

出去:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
r8168-dkms is already the newest version (8.041.00-1).
dkms is already the newest version (2.2.0.3-2ubuntu11.3).
0 upgraded, 0 newly installed, 0 to remove and 100 not upgraded.

编辑3:

在:

dkms status

出去:

r8168, 8.042.00, 4.10.0-28-generic, x86_64: installed

编辑4:

在:

ls -al /usr/src

出去:

total 28
drwxr-xr-x  7 root root 4096 Sep 10 20:00 .
drwxr-xr-x 11 root root 4096 Aug  1 13:24 ..
drwxr-xr-x 27 root root 4096 Aug  1 13:23 linux-headers-4.10.0-28
drwxr-xr-x  7 root root 4096 Aug  1 13:23 linux-headers-4.10.0-28-generic
drwxr-xr-x 27 root root 4096 Sep 10 20:00 linux-headers-4.10.0-33
drwxr-xr-x  7 root root 4096 Sep 10 20:00 linux-headers-4.10.0-33-generic
drwxr-xr-x  2 root root 4096 Sep 10 16:16 r8168-8.042.00

答案1

您有一个 r8168 以太网控制器,并且它使用有缺陷的 r8169 驱动程序。

按照以下方式替换驱动程序:

terminal...

sudo apt-get update

sudo apt-get install dkms r8168-dkms

reboot

secure boot在您的 BIOS 中禁用。

更新#1:

dkms status显示 r8168 尚未完成安装,因此我们必须手动完成。

terminal...

sudo dkms build r8168/8.041.00 -k "$(uname -r)/$(uname -p)"
sudo dkms install r8168/8.041.00 -k "$(uname -r)/$(uname -p)"

dkms status
   # should show "r8168, 8.041.00: installed"

reboot

sudo lshw -C network
    # should show ethernet driver=r8168

笔记:由于用户实际运行的是 16.04.1/2/3,因此需要稍新一些的 r8168 版本。请参阅r8168-dkms 在 ubuntu 16.04.2 上构建失败

wget http://mirrors.kernel.org/ubuntu/pool/universe/r/r8168/r8168-dkms_8.042.00-2_all.deb
sudo dpkg -i r8168-dkms_8.042.00-2_all.deb

更新 #2:

您的 DSL 连接的 MTU 设置也存在问题。

对于 DSL,常见的 MTU 设置是 1492。请先尝试此值,然后查看您的网站现在是否可以访问。

要确定正确的设置,请从所有 MTU 设置 = 1500 和 VPN = 关闭开始。(VPN 需要不同的测试)。

在终端:

ping [-c count] [-M do] [-s packet_size] [host]

使用的选项是:

  • 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 # this will probably show fragmentation

ping -c 4 -M do -s 1462 8.8.8.8 # may show fragmentation

ping -c 4 -M do -s 1452 8.8.8.8 # no fragmentation?

ping -c 4 -M do -s 1453 8.8.8.8 # still no fragmentation?

参考:如何使用 ICMP ping 确定适当的 MTU 大小

答案2

我遇到了类似的问题,通过禁用 IPv6(没有用,但据说有帮助)并最终安装解决了插件

这似乎起了作用,因为我的网络连接现在已经稳定了几个星期。

相关内容