我最近在已经安装了 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?
答案2
我遇到了类似的问题,通过禁用 IPv6(没有用,但据说有帮助)并最终安装解决了插件
这似乎起了作用,因为我的网络连接现在已经稳定了几个星期。