关于Linux网络排错

无法连接网络的原因无非是硬件问题或者软件问题。

硬件问题:网线,网线设备,网络布线等

  1. 网线: 网线被截断;网线过渡扭曲变形造成信号不良;网络接头与设备接触不良。
  2. 网卡,Hub及Router等网络设备的问题,常见 的问题如下:
    ..网卡不稳定,质量不佳,或者与整体系统的兼容性不好
    .各网络设备的接头质量不佳,接触不良,造成信号衰减
    .由于网络设备所处环境恶劣(如过热)导致的宕机问题
    .各网络设备使用方法不良,造成设备功能衰减(switch常常插电/断电容易损坏)
  3. 设备配置的规则
    ..使用错误的网线
    .架设的网线过长,导致信号衰减严重
    .其他噪音的干扰(如较强的电磁场)
    .局域网上面,节点或其他的设备太多(常见的543原则)

软件问题:IP参数设置,路由设置,网络负荷,通讯协议不相符与防火墙设置等

这些问题都属于软件设置问题,只要将设置改一改,利用一些检测软件查一查,就知道问题出在哪里了。

问题的处理

既然问题发生了,就要处理它。以星形连接拓扑为例,应把握两个原则:

  1. 先从自身的环境开始检测。可以由自身PC上的网卡查起,再到网络,Hub,调制解调器等硬件。在这个步骤当中,最好用的软件就是ping,而你最好能有两台以上的主机来进行连接的测试。
  2. 确定硬件没问题后,再来思考软件的设置问题。
    实际上,如果网络不通时,你可以依序这样处理:
    1)了解 问题:这个问题是刚刚发生的,还是因为之前做了什么动作而导致无法连接?
    2)确认IP:‘先看自己的网卡有无驱动?是否取得正确的IP相关参数来连接?
    整个主机最重要的配置就是“先驱动网卡”,否则主机连网卡都识别不到,怎么配置IP参数都是没有用的,那如何确定网卡已经被Linux操作系统捕捉到(即发现网卡的存在并加载了相应的网卡驱动程序)
    网卡(Network Interface Card,NIC)却是以网卡内核模块对应的设备名称来表示的,而默认的网卡名称为eth0,第二张网卡则为eth1,以此类推;
    网卡其实是硬件,当然需要内核的支持才能驱动它。其实有的时候Linux的默认网卡模块可能无法在每台主机上编译成功,有时候还需要你自行编译网上的模块,当然那个网卡的模块就需要你在网卡开发商的网站下载。不过如果你的网卡是自行编译安装的,那么每次重新安装其他版本的内核时,都必须要重新手动编译该模块。因为模块与内核是有相关性的。
    利用dmesg来查看网卡的捕捉信息:
    dmesg | grep -in eth
    输出信息为: 377:e1000:eth0:e1000_probe:Interl® Pro/1000…
    除了使用dmesg来检测硬件产生的信息外,我们也可以通过lspci来查询相关的设备芯片数据。
    lspci | grep -i ethernet
    观察网卡的模块(通过dmesg可知,主机所使用的模块是e1000),那么内核是否已经将其顺利加载了呢?可以利用lsmod去查看:
    lsmod | grep 1000
    // e1000 119384 0 <===确实已经加载到内核中!
    或者 modinfo e1000
    等一切就绪之后,需要查看网卡模块是否可以顺利的配置好IP,我们可以手动给它一个私有IP:
    ~ ]# ifconfig eth0 192.168.1.100
    然后ifconfig查看

什么叫取得正确的IP参数?如果顺利连接上Internet的话,必须可以跟Public IP进行沟通才行,而与Public IP取得沟通的方法,比较常见的有ADSL,Cable Modem,学术网络,电话拨号等。在centos中我们可以通过修改/etc/sysconfig/network-scripts/ifcfg-eth0,或者利用rp-pppoe进行拨号,无论如何都要连接到某个ISP中去。
3)确认局域网连接: 利用ping 来沟通两台主机(或路由器),确认网络与中继器的Hub/switch工作是否正常。

~ ]# ping -c 3 168.95.1.1 // -c 3规定检测次数 或者ping域名都可以
如果你的主机与待测主机并不在同一网络内,那么TTL默认使用255,如果是同一网络内,那么TTL则默认使用64.
ttl 与IP数据包中的TTL是相同的,每经过一个带有MAC的节点时,例如router,birdge时,TTL就会减少1.
例如:写一个脚本程序ping.sh ,通过这个脚本程序,你可以用ping检测整个网络的主机是否有响应。此外,每台主机的检测仅等待1s,也仅检测一次(本机所在的局域网为192.168.1.0/24),你可以在Vim
/root/bin/ping.sh

#! /bin/bash
for siteip in $ (seq 1 254)
do
	site = "192.168.1.$ {siteip}"
	ping -c 1 -W 1  $ {site} &> /dev/null
	if ["$?"=="0"];then
		echo "$site is up"
	else
		echo "$site is down"
	fi
done
如果一个网络服务器明明已经启动了,但就是无法进行连接,那怎么办?首先你要查询一下网络接口所监听的端口(Port),来看看是否真的已经启动,因为有时候屏幕上显示的“OK”并不一定真的就是OK了。
]# netstat -[rn] <==== 与路由有关的参数
]# netstat -[antulpc] <==== 与网络接口有关的参数

4)确认对外连接:看主机或IP路由器是否能顺利取得IP参数(用ifconfig查看,route -n查看)并以ping的方法确认对外连接可以的,见上
5) 确认DNS查询:利用nsloolup,host或dig 检查www.google.com
6) 确认Internet节点: 可以用traceroute检查各节点是否有问题
7)确认对方服务器是否宕机
8)确认我方服务器是否宕机:可用netstat进行检查主机是否启动某些服务
9)防火墙或权限的问题: 是否由于权限设置错误所致?是否由于你的机器有防火墙忘记启用可连接的端口所致?这个可通过tcpdump来处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值