14.13 解决网络问题

在网络方面,Linux系统通常可以正常工作,但偶尔也会出现问题。以下给出了一些解决网络问题的基本技巧。

如果网络接口看起来已经启动和运行,但是不能访问因特网,这时可以先试着ping一下localhost设备(127.0.0.1)。如果ping不通,就停下来,不要再试了,因为你的系统已经严重损坏了。如果能ping通,就继续ping一下计算机的外部IP地址。如果ping不通这个外部IP,就检查一下计算机是否已经启动了网络。如果能ping通这个外部IP,就再ping一下网络中的其他计算机(假设有其他计算机)。如果没有成功,就是网络接口出了问题(假设路由器是正常的)检查一下网线是否插好了。使用ifconfig(如果是无线网卡,则使用iwconfig)检查一下网络接口的状态,如果必要的话,可以用ifup命令打开网络接口。之后再试着ping一次。

如果能ping通本地的其他计算机,接下来就ping一下路由器。如果能ping通网络上的其他计算机,但是不能ping通路由器,这时就应该用route命令检查路由表(参见14.11节)。如果路由表有找不到的项目,则补充完整丢失的内容(详情可以参考“改变路由表”)。

说明 如果有一个可以参考的基准,那么诊断和修复问题将会容易得多。找台网络正常的计算机,运行route命令,保存结果,这样,如果以后路由表出了问题,需要恢复什么时,也可以有个参考。

如果能够ping通路由器,试着ping一个你知道在因特网上启动并正在运行的主机(如www.google.com 或www.apple.com )。如果ping不通路由器,则尝试再ping一下同一计算机的IP地址。为了在这样的场合下使用,最好事先把一些常用IP地址记在便条上或是计算机的文本文件中以备后用。表14-1列举几个目前还不错的网站及其IP。当然,它们可能会发生变化,所以应该自己查一查。 表 14-1

网  站 IP 地址
www.google.com 72.14.203.99
www.apple.com 17.254.0.91
www.ubuntu.com 82.211.81.166
www.ibm.com 129.42.16.99
www.granneman.com 216.23.180.5

说明 如何得到这些IP地址呢?可以使用某个域名来ping相应的主机,ping就会提供它的IP地址,或者使用traceroute也可以得到相同的信息。一种更快的方法是使用host命令,在14.4节中介绍过这个命令。

如果能ping通IP地址,但ping不通它的域名,那就是有DNS问题了。如果正在使用DHCP,可以运行dhclient命令(参见14.8节)更新DHCP服务器提供的DNS信息。如果你没有使用DHCP,那么为了找到需要的DNS信息,可以查询路由器,也可以向管理员或ISP服务商咨询,然后以root用户的身份,手工在/etc/resolv.conf中添加新的DNS信息,如下所示:

  1. nameserver 24.217.0.5
  2. nameserver 24.217.0.55

每行以nameserver作为开始(必须的),后面是想用作DNS的IP地址。如果路由器支持DNS,而且也知道它的IP地址(假设是192.168.0.1),那么第一行可以试着写成:

  1. nameserver 192.168.0.1

试着运行ifdown,再运行ifup,看看网络是否正常。如果仍然有问题,重新开始,这时通常要从硬件着手。所有硬件安装正确吗?所有硬件插好了吗?在确保这些都正常以后,开始检查软件。最坏的情况是硬件没有Linux版本的驱动程序。虽然这种情况不多见,而且以后会越来越少见,但仍然可能碰巧遇到。

但是,无线网卡可能与Linux非常不兼容,因为保守的硬件制造商并不想帮助Linux开发人员让他们的硬件在Linux系统中工作。为了避免遇到这些令人头疼的问题,在购买无线网卡之前,最好先查看它的网站,确保这种网卡在Linux系统中能很好地工作。这方面的一些优秀网站包括:Madwifi的硬件支持网站(http://madwifi.org/wiki/Compatibility);Linux无线局域网支持网站(http://linux-wless.passys.nl/),这个网站虽然有些过时,但还是依然有用;还有一个网站(http://del.icio.us/rsgranne/wireless),经常在这里更新有关Linux和无线网络连接的书签。对于特定的硬件,推荐使用Netgear WG511T无线PCMCIA卡。在运行最新版本的K/Ubuntu的计算机上,只需把这种网卡插入到计算机中,它就马上能工作了。

噢,解决问题的最后一搏:如果能成功ping通IP地址和域名,那就看到这儿吧。能上网了!玩得开心些吧!