我有一个有线 ADSL 连接,带有调制解调器兼路由器。我通常使用 PPPoE 连接到互联网,即路由器本身在我打开它时立即与我的 ISP 建立连接。并且路由器使用以太网电缆连接到我的 PC,无需在 Ubuntu 中进行任何进一步配置即可为其提供互联网。
但是,昨天我的路由器出现了一些问题,所以我将其切换到了 DSL(桥接)模式。此设置要求我使用sudo pppoeconf
Ubuntu 知道我的 ISP 用户名和密码,以便它可以与 ISP 建立连接。进行更改后,会话期间互联网运行正常。
但是,重启后,Ubuntu 无法再访问互联网。因此,我再次将路由器切换到 PPPoE 模式,互联网在双启动的 Windows 7 上正常工作,但在 Ubuntu 上却不行。即使在进行此更改后(即恢复到一直正常工作的状态),我仍然无法使用 Ubuntu 访问互联网。但是,我可以看到我的 ISP 已为我分配了 IPv4 地址。
以下是我采取的一些故障排除步骤(在 PPPoE 模式下):
$ ifconfig
eth0 Link encap:Ethernet HWaddr 94:de:80:34:47:7b
inet6 addr: fe80::96de:80ff:fe34:477b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:78 (78.0 B) TX bytes:4642 (4.6 KB)
Interrupt:18
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:107 errors:0 dropped:0 overruns:0 frame:0
TX packets:107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7923 (7.9 KB) TX bytes:7923 (7.9 KB)
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
$ ping -c 1 www.google.com
ping: unknown host www.google.com
然后,我尝试再次运行sudo pppoeconf
,结果给出了以下输出(我在 PPPoE 和桥接模式下都尝试过):
看到没有任何输出route
,我运行了:
$ sudo route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
但这并没有什么帮助。
$ ping -c 1 www.google.com
ping: unknown host www.google.com
$ ping -c 1 8.8.8.8
connect: Network is unreachable
$ dig @8.8.8.8
; <<>> DiG 9.9.5-3-Ubuntu <<>> @8.8.8.8
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
我觉得名称服务器还不错:
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
我尝试访问 上的调制解调器配置页面192.168.1.1
,但无法连接。我必须使用以下命令更改调制解调器的网关才能访问它(之前一切正常时,我无需进行任何更改即可访问此页面):
sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
在 Ubuntu 和 Windows 上对我的调制解调器运行诊断测试得到以下输出:
在我的 Windows 7 双启动系统上一切都正常运行,但在 Ubuntu GNOME 14.04 上则不再正常运行。
我曾尝试使用 Live USB 运行 Ubuntu,并且互联网也能正常运行。
为什么即使 ISP 已分配 IPv4 地址,我仍无法访问互联网?我需要做什么才能在 Ubuntu 上访问互联网?
我的/etc/networking/interfaces
:
#############################################################################
#############################################################################
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider
auto eth0
iface eth0 inet manual
以下是dmesg
拔下并重新插入以太网电缆时的输出:
$ dmesg | tail -2
[ 187.051150] alx 0000:02:00.0 eth0: Link Down
[ 214.085755] alx 0000:02:00.0 eth0: NIC Up: 100 Mbps Full
我已编辑/etc/network/interfaces
如下:
$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#auto dsl-provider
#iface dsl-provider inet ppp
#pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
#provider dsl-provider
#auto eth0
#iface eth0 inet manual
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.1
如果我sudo dhclient -d -v -nw eth0
每次重启时都运行,它有时会工作,有时则不工作。这非常随机。以下是它工作时的输出:
$ sudo dhclient -d -v -nw eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/94:de:80:34:47:7b
Sending on LPF/eth0/94:de:80:34:47:7b
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x51e3cec7)
DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67 (xid=0x51e3cec7)
DHCPOFFER of 192.168.1.8 from 192.168.1.1
DHCPACK of 192.168.1.8 from 192.168.1.1
bound to 192.168.1.8 -- renewal in 18451 seconds.
^C
当它不起作用时,会出现以下情况:
$ sudo dhclient -d -v -nw eth0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/94:de:80:34:47:7b
Sending on LPF/eth0/94:de:80:34:47:7b
Sending on Socket/fallback
DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67 (xid=0x67dfb451)
DHCPACK of 192.168.1.8 from 192.168.1.1
bound to 192.168.1.8 -- renewal in 20076 seconds.
^C
$ sudo cat /var/log/daemon.log | grep Network
cat: /var/log/daemon.log: No such file or directory
192.168.1.1
当此命令不起作用时,我甚至无法访问。
答案1
最有可能的问题是您的路由器没有提供 DHCP 租约,或者网络管理器没有接受它们。使用sudo dhclient -d -v -nw eth0
应该可以让您知道谁是罪魁祸首。如果它有效,那么网络管理器配置就乱了,您需要修复它。如果它不工作,那么您需要检查您的路由器配置,在这种情况下路由器手册是必要的。
修复网络管理器的一种方法是,只需在“网络设置”中打开配置界面,选择所需的网络(比如说有线),查找齿轮按钮,然后选择“自动”修复配置。
还有一个选择选项,您可以在其中选择“重置”(不要使用“忘记),它将恢复默认值。
当然,如果您已经在 中配置了设备,网络管理器将不会配置您的设备/etc/networking/interfaces
。只需删除/注释掉这些行,然后重试。
这些选项假设您正在使用类似 GNOME 的环境,其他环境可以有类似的选项。
答案2
我通过编辑文件解决了这个问题/etc/network/interfaces.conf
我只留下了这两行:
# Interfaces (5) file used by ifup (8) and ifdown (8)
auto io
iface io inet loopback
然后我重新启动了 Ubuntu。