Linux网络故障的解决问题的思路

来源:百度文库 编辑:神马文学网 时间:2024/04/30 12:47:53
4.1.2.3 Linux网络故障的解决问题的思路
Linux网络故障排除应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网络都不能解决故障。解决问题的方法可以从自身Linux计算机的网卡查起,然后到服务器、集线器、路由器等硬件。如果确定硬件没有问题了,再来考虑软件的设定。
1、检查网卡工作状况
(1)使用cat /proc/modules查看网卡的模块是否已被加载,驱动硬件是操作系统最基本的功能,操作系统通过各种驱动程序来驾驭硬件设备,和Windows系统不同Linux内核目前采用可加载的模块化设计(LKMs Loadable Kernel Modules),就是将最基本的核心代码编译在内核中,而我们常见的驱动程序就是作为内核模块动态加载的,比如网卡驱动。Windows系统中我们一般“控制面板”的“设备管理器”查看硬件列表,在Linux中可以在命令行下输入:cat /proc/modules 即可显示Linux系统检测到的所有硬件设备。运行cat /proc/modules需要超级用户的权限,你可以使用su命令实现。
[root@www cao]# cat /proc/modules
parport_pc             25096   1 (autoclean)
lp                      8096   0 (autoclean)
parport                34176   1 (autoclean) [parport_pc lp]
sg                     34636   0 (autoclean) (unused)
st                     29488   0 (autoclean) (unused)
sr_mod                 16920   0 (autoclean) (unused)
sd_mod                 13100   0 (autoclean) (unused)
scsi_mod              103284   4 (autoclean) [sg st sr_mod sd_mod]
ide-cd                 33856   0 (autoclean)
nfsd                   74256   8 (autoclean)
af_packet              14952   0 (autoclean)
floppy                 55132   0
8139too                17160   1 (autoclean)
mii                     3832   0 (autoclean) [8139too]
tulip                  44032   1 (autoclean)
ne2k-pci                6720   1 [ne2k-pci]
nls_gb2312               964   5 (autoclean)
nls_cp936             124956   6 (autoclean)
vfat                   11820   5 (autoclean)
fat                    37944   0 (autoclean) [vfat]
supermount             15296   2 (autoclean)
usbmouse                2936   0 (unused)
丛以上粗体字符可以看到笔者Linux计算机中两块网卡模块:NE2000和8139已经加载。如果没有检测到硬件,用硬件检测程序Kuduz检测网卡,它和Windows中添加新硬件差不多。kudzu程序是通过查看/usr/share/hwdata/目录下的文件识别各种硬件设备的。如果核心支持该硬件,并且有该驱动程序就可自动装载。首先说明的是Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.比如我的Top link网卡,就不存在Linux的驱动,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块网卡不能用,在找Linux的驱动程序之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000,etherexpress等等.这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了。对于ISA接口的NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省都是PnP模式,这在Windows下的确能减少很多麻烦,但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有网卡都有带的驱动盘和DOS下可执行的一个设定程序,用该程序将网卡设为 Jumpless。对于PCI网卡,可以使用如下命令来查看:less/proc/pci。在显示的列表中找到“Ethernet Controller”,记下厂商和型号。然后使用modprobe尝试加载正确的模块,比如modprobe 3c509。如果出现错误,说明该模块不存在。这时候你应该找到正确的模块并且重新编译。如果显示说该设备不存在,那也是因为没有正确的模块。找到正确的模块,并且编译,问题一般即可解决。
(2)使用Ifconfig-a命令检查网卡接口
如果已经检测到网卡,网卡硬件就没有问题,接下来检查网卡的软件设定。使用ifconfig -a命令:
[root@www cao]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:00:E8:A0:25:86
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:28 dropped:0 overruns:0 carrier:28
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
Interrupt:11 Base address:0xdc00 eth1      Link encap:Ethernet  HWaddr 00:50:FC:56:75:F5
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b)  TX bytes:2804 (2.7 Kb)
Interrupt:10 Base address:0x7000
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:233 errors:0 dropped:0 overruns:0 frame:0
TX packets:233 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16248 (15.8 Kb)  TX bytes:16248 (15.8 Kb)
丛上面可以看到第二块网卡没有分配IP地址,我们现在可以添加IP地址。以Redhat Linux 9.0为例。以root权限运行命令:neat出现图形化配置界面,然后添加IP地址后保存设置,从新启动网络和网络服务或计算机,见图-3。
 
图-3 图形界面添加IP地址
(4)编译网卡
如果Linux内核没有检测到网卡通常要重新安装网卡的驱动程序,网卡驱动程序安装方法步骤如下:
a、 编译并安装模块;
b、 修改/etc/conf.module 文件;
c、 修改/etc/sysconfig/network文件;
d、 修改/etc/sysconfig/network-scripts/ifcfg-eth0 文件;
e、 给网卡添加IP地址:打开网卡IP地址配置文件/etc/sysconfig/network-script/ifcfg-eh0.
文件内容是:
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.12
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=yes
PEERDNS=no
GATEWAY=192.168.1.1
TYPE=Ethernet
e、然后用以下命令启动网络服务:
#service network restat
说明网卡问题:使用ifconfig来进行配置。如果运行ifconfig,将会给出所有已经安装了的网卡。如果没有显示可用的网卡,那么很有可能是以下原因之一:1. 网卡没有被Linux检测到;2. 没有与之相应的内核模块;3. 该模块没有被加载;4. Linux系统不支持你的网卡。就现在来说,出现问题4的可能性很小,一般来说都是问题2和3,也可能是1。
Linux下无线网卡的安装:
目前经过www.Linux.org 认证的PCMCIA网卡有两大类。使用基于朗讯(Lucent)芯片组的PCIMCIA无线网卡和使用基于intersil PRISM2-based cards 芯片组的PCMCIA的无线网卡见表-1。不过由于基于intersil PRISM2-based cards 芯片组的PCMCIA的无线网卡价格比较便宜(相当于朗讯(Lucent)芯片组的PCIMCIA无线网卡的三分之一),所以国内的PCMCIA的无线网卡以后者居多。
Lucent chipset-based cards  intersil PRISM2-based cards
Lucent Wavelan/IEEE and Orimoco Linksys(WPC11 v2.5)
Cabletron/Enterays RoarmAbout SMS(2632W)
Compaq(WL110、WL210、 WL215)  Compaq(WL100、WL200)
Apple Airport Cisco Aironet Wireless 802.11b(340、350)
IBM High Rate Wireless LAN Dlink DWL-650
HP 802.11bWiewless LAN Nokia
DELL TrueMobile Intel PRO/Wireless 2100
3Com AirConnect SAMSUNG 11Mbps WLAN Card
LA4111 Spectrum24 Wireless LAN PC Card PROXIM LAN PC CARD HARMONY 80211B
NCR WaveLAN/IEEE Adapter
随着Linux网络技术的快速增长,硬件厂商大大加速对硬件产品对Linux的技术支持。使得Linux 支持的无线网卡的数量在过去的一两年里增长显著。对于有些设备,配置无线连接非常简单:只要在您使用的 Linux 发行版本,插入无线网卡,在设置过程中单击鼠标,并输入正确的联网参数就可以了。通常基于朗讯(Lucent)芯片组的PCIMCIA无线网卡的安装比较简单,笔者使用的Cisco Aironet Wireless 802.11b 在Mandrake 8.2 Linu安装程序可以顺利地找到设备驱动, 使用基于intersil PRISM2-based cards 芯片组的PCMCIA的无线网卡安装就比较复杂了。需要一个第三方工具安装。
总的来说Linux下无线网卡的安装顺序一般是:
采取全部安装方式安装Linux发行版本,重新编译内核,并除去任何对内核提供的 PCMCIA 驱动程序的部分。
了解网卡的规格并且下载并编译相应的 PCMCIA-CS 库和驱动程序
下载、编译并安装无线网卡必需的所有驱动程序。这一步骤对于有些网卡是可选的,而对于有些网卡是必须执行的。做与不做很大程度上取决于您所选的无线网卡。
修改和无线网卡的相关设定。从新启动Linux系统和网络。
2、 Ping 127.0.0.1 验证本机TCP/IP协议是否安装
Linux中一个概念:封闭回路。使用TCP/IP协议的Linux计算机,都会拥有一个IP地址,彼此间相互以IP地址确认对方,传递信息与数据。在有些情况下,我们为了进行某项测试(比如网卡是否正确安装),或者是没有另外一台电脑作为接收端。这时,我们可利用本机扮演信息的发送端和接收端,这就是所谓的封闭回路。 封闭回路的IP地址是127.0.0.1。这个Ping命令被送到本地计算机的IP软件,在Linux下该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。
3、确认局域网内网络连接情况
网卡设定确认没有问题之后,接下来要确认局域网内网络连接情况。根据图-2网络拓扑结构,对集线器1组成的局域网的要求有下面几点:
(1)客户机IP的设定
假设子网为192.168.1.0/24,那么局域网内所有计算机的IP应该介于192.168.1.1~192.168.1.254,且所有的计算机子屏蔽网络均为255.255.255.0,IP在所有的计算机都不可以重复。
(2)网关
假设Linux IP为192.168.1.2,那么局域网内所有客户机的网关是192.168.1.2 。
(3)Windows端的通信协议
局域网内其它的Windows系统的通信协议仅需要TCP/IP及NetBUEI即可,如果安装过多的通信协议可能会造成联机过慢。
(4)Windows 端工作组与计算机名称
假如需要资源共享,那么就必须在Windows系统中建立文件共享,并且所有的计算机工作组必须相同,但计算机名称不能相同。