为什么即使 ISP 已分配 IPv4 地址,我仍无法访问互联网?

为什么即使 ISP 已分配 IPv4 地址,我仍无法访问互联网?

我有一个有线 ADSL 连接,带有调制解调器兼路由器。我通常使用 PPPoE 连接到互联网,即路由器本身在我打开它时立即与我的 ISP 建立连接。并且路由器使用以太网电缆连接到我的 PC,无需在 Ubuntu 中进行任何进一步配置即可为其提供互联网。

但是,昨天我的路由器出现了一些问题,所以我将其切换到了 DSL(桥接)模式。此设置要求我使用sudo pppoeconfUbuntu 知道我的 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 和桥接模式下都尝试过):

sudo pppoeconf 的输出

看到没有任何输出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。

相关内容