|
最近更新日期:2003/08/19
Linux 最强的,也是最让人称道的地方,就是他的网络功能了,不论是
Mail server、Web server、Proxy server等等,都好好用喔!但是,我们也常在网络上看到一堆常见的问题,就是在问『我的
Linux 没有办法连上网络,该如何是好....』等等的问题,问来问去的重点大概都是一样的状况!伤脑筋!那鸟哥就把一些在
Linux 上面可能会发生的网络问题把他整理一下,看看您是不是有这方面的问题,参考看看吧!
|
了解发生网络问题的可能状况:
Linux 最强的,也是最让人称道的地方,就是他的网络功能了,不论是 Mail
server、Web server、Proxy server等等,都好好用喔!但是,我们也常在网络上看到一堆常见的问题,就是在问『我的
Linux 没有办法连上网络,该如何是好....』等等的问题,问来问去的重点大概都是一样的状况!伤脑筋!那鸟哥就把一些可能的问题把他整理一下,看看您是不是有这方面的问题,参考看看吧!
问题的解决顺序应该是从自己可以掌握的地方着手,再慢慢的向上面来查核问题所在!基本上,问题的解决流程可以如下:
-
了解一下可能的问题发生状况:
-
看自己的网络卡是否正常工作;
-
能不能 ping 到同一网域中的计算机 IP 呢 ( 局域网络 );
-
看自己的 DNS 是否设定正确 ;
-
局域网络中 NAT 不能工作?看看 /etc/sysconfig/network;
-
看看 ADSL 或者是 Router 有没有问题?traceroute 拨接的问题;
-
是否主机的服务被关掉了? check 看看 inetd.conf /etc/xinetd.d
;
-
一些服务的权限与允许浏览权是否有开放;
底下我们先来谈一谈有哪些常见的可能网络问题状况,先以简单的局域网络联机架构图<下图>的表示方式:
图一、局域网络的联机状态示意图
如上面的局域网络接线法中,一般而言,造成网络问题的情况可以粗分为
-
网络硬件传输的部分;与
-
操作系统、通讯协议或者相关服务的设定之软件问题!
我们分别来谈一谈这些问题吧!
网络硬件传输的问题:
-
网络线材的问题:
在上面的图示中,可以发现,其实网络接口设备中,使用最多的就是网络线啦!由于网络线分成并行线与跳线
( RJ-45接头 ) 以及以前较流行的同轴电缆线,且,其实网络线常常是接在门缝处,有可能被压毁的!所以,您需要注意一下这些事情:
-
网络线被截断;
-
网络线过度扭曲变形造成讯号不良;
-
自制网络接头 ( 如RJ-45跳线头 ) 品质不良;
-
网络接头与设备 ( 如 Hub )接触不良;
-
网络卡、Hub 及 Router 等网络设备的问题:
另外,还有一些网络设备也会有问题,常见的问题如下:
-
网络卡不稳定、质量不佳,或者与整体系统的兼容度不佳;
-
各网络设备的接头不佳,接触不良,造成讯号衰减;
-
各网络设备使用方法不良,造成设备功能衰减;
-
设备配置的规则;
在各个设备的配置上是有一定的规则的,而最容易发生的问题就是太长的网络线会造成讯号的衰减,导致网络联机的时间太长甚至无法联机:
-
使用错误的网络线,最常发生在并行线与跳线的分别!
-
路设网络线过长,导致讯号衰减太严重。以最常见的最高质量
( CAT5等级,亦即目前在市面上最常看到的产品,最大传输速度可达 100 Mbps )
RJ-45 并行线来说,他的限制长度大概是在 90 公尺左右,也就是说,在两个设备之间
( 如网络卡与 Hub 的距离� ) 荦萚u长度当然以不超过 90 公尺为原则了;
-
其他噪声的干扰,最常发生在网络线或者网络设备旁边有太强的磁波;
-
局域网络上面,节点或者其他的设备太多,过去我们常以所谓的
543 原则来说明:
-
5个网段(segment)。所谓segment就在物理连接上最接近的一组计算机﹐在一个BNC网段里面最多只能接30台计算机﹐且网线总长不能超过185m。
-
4个增益器(repeater)。也就是将信号放大的装置。
-
3个计算机群体(population)。这个不好理解﹐也就是说前面所说的5个segment之中﹐只能有3个可以装计算机﹐其它两个不行。
软件设定的问题:
-
网络卡的 IP 设定错误:
例如:同一个 IP 在同一个网段中出现造成IP冲突、子屏蔽网络设定错误、网络卡的驱动程序使用错误、网络卡的
IRQ、 I/O Address 等等;
-
路由的问题 ( Router ):
这方面的问题出在 Gateway 的设定错误,或者是路由设定不正确,导致数据封包没有办法顺利的送出去;
-
通讯协议的问题 ( Protocol ):
最常发生在不同的接口设备的通讯了!例如 windows2000 与 98 之间的『网络上的芳邻』之沟通中,以增加安装
NetBEUI 这个通讯协议似乎是比较好的解决方案!
-
网络负荷问题 ( Loading ):
当同时有大量的数据封包涌进 Server 或者是 Hub 或者是同一个网域中,就有可能造成网络的停顿甚至挂点!
-
其他问题:
例如:一些 port 被防火墙挡住了,造成无法执行某些网络资源;应用程序本身的
Bug 问题;应用程序中用户的网络设定错误;以及不同的操作系统的兼容性问题等等。
解决问题的方法:
-
知道问题之后当然就要解决了!以上图为例,我们需要由自身的
PC 上的网络卡查起,到网络线、到 Hub 在到 ATU-R 等等的硬件先检查完;
-
确定硬件没问题了,再来思考软件的设定问题!
由下一节开始,我们就一个步骤一个步骤的进行 Linux
的网络检验吧!
步骤一:网络卡工作确认
其实,网络一出问题的时候,您应该从自己可以检查的地方检查起,因此,最重要的地方,就是您的网络卡是否有工作的问题啦!检查网络卡是否正常工作的方法如下:
-
使用 lsmod
看看网络卡的模块是否已被加载:
除非您曾经自行编译过核心,否则网络卡的驱动程序应该是以模块的型态存在才对!由于网络卡是最基本的网络组件之一啦!没有他,自然也就无法连上
Internet ,所以啰,请先确认一下您的网络卡是否已经被驱动吧!这个时候当然就要使用
lsmod
来看看啦!
[root@test
root]# lsmod
Module
Size Used by Tainted: P
ipt_MASQUERADE
1216 1 (autoclean)
iptable_filter
1696 1 (autoclean)
ip_conntrack_irc
2592 0 (unused)
ip_conntrack_ftp
3328 0 (unused)
ip_nat_irc
2400 0 (unused)
ip_nat_ftp
2976 0 (unused)
iptable_nat
13588 3 [ipt_MASQUERADE ip_nat_irc ip_nat_ftp]
ip_tables
11232 5 [ipt_MASQUERADE iptable_filter iptable_nat]
ip_conntrack
13356 3 [ipt_MASQUERADE ip_conntrack_irc ip_conntrack_ftp ip_nat_irc
ip_nat_ftp iptable_nat]
ppp_async
6240 1 (autoclean)
8139too
14208 2 <==这个就是我的螃蟹卡模块啦!
usbcore
29632 0 (unused) |
呵呵!没错!我的网络卡已经挂上去啦!所以没有问题!那么如果没有发现呢?嗯!那么很可能是没有捉到硬件啰!这个时候请先以
dmesg 确认一下是否已经捉到了网络卡啰!
[root@test
root]# dmesg
....略....
PPP generic
driver version 2.4.1
NET4: Linux
TCP/IP 1.0 for NET4.0
IP Protocols:
ICMP, UDP, TCP, IGMP
IP: routing
cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables
configured (established 4096 bind 4096)
Linux IP multicast
router 0.06 plus PIM-SM
NET4: Unix
domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted
root (ext2 filesystem) readonly.
8139too Fast
Ethernet driver 0.9.24 <==确实有捉到啰!
eth0: RealTek
RTL8139 Fast Ethernet at 0x6100, 00:50:fc:22:9c:57, IRQ 10
eth0:
Identified 8139 chip type 'RTL-8139C'
eth1: RealTek
RTL8139 Fast Ethernet at 0x6300, 00:50:fc:22:9a:cb, IRQ 11
eth1:
Identified 8139 chip type 'RTL-8139C'
eth0: Setting
half-duplex based on auto-negotiated partner ability 0000.
eth1: Setting
100mbps full-duplex based on auto-negotiated partner ability 41e1. |
嗯!确实是有捉到我的网络卡啦!是 Ethernet 的网络卡呦!
-
使用 ifconfig 看看是否有网络卡的运作出现:
在确定网络卡已经被捉到之后,硬件就没有问题了,再来就是网络卡的软件设定问题。通常使用了
ifconfig
之后,会出现目前网络卡的 IP 状态说明,如果没有任何网络硬件被驱动的话,那就以
ifup
eth0 来启动,再以 ifconfig
来看看网络设备的运作!如果还是没有办法启动的话,就需要来重新安装网络卡的驱动程序!如何确定网络卡有无正常工作呢?简单的很,就是使用
ifconfig 这个指令来检查一下吧!
[root@test
root]# ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:FC:22:9A:CB
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35747 errors:0 dropped:0 overruns:0 frame:0
TX packets:38701 errors:0 dropped:0 overruns:0 carrier:0
collisions:567 txqueuelen:100
Interrupt:11 Base address:0x6300
eth1
Link encap:Ethernet HWaddr 00:90:CC:08:49:13
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:79570 errors:0 dropped:0 overruns:0 frame:0
TX packets:69642 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6100
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:4553 errors:0 dropped:0 overruns:0 frame:0
TX packets:4553 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
ppp0
Link encap:Point-to-Point Protocol
inet addr:140.116.141.114 P-t-P:140.116.141.253 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:27577 errors:0 dropped:0 overruns:0 frame:0
TX packets:25980 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10 |
如上所示,是我的网络的设定,我共有两个网络卡,设备名称分别为 eth0
(对内,私有 IP )及 eth1 (对外),而由于我是使用 ADSL
拨接的,所以就有 ppp0 这个网络接口啰!至于第三个
lo 是主机内部的递归网络,这是每部机器都会有的。如上所述,那我的三个接口都有出来,并且
eth0 的 IP 是 192.168.1.2 这一个,那就表示设备应该没有问题才对!如果想要确定一下到底网络有没有通,您可以使用
ping
的功能:
[root@test
root]# ping -c 5 192.168.1.2
PING 192.168.1.2
(192.168.1.2) from 192.168.1.2 : 56(84) bytes of data.
64 bytes from
192.168.1.2: icmp_seq=0 ttl=255 time=0.2 ms
64 bytes from
192.168.1.2: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from
192.168.1.2: icmp_seq=2 ttl=255 time=0.2 ms
64 bytes from
192.168.1.2: icmp_seq=3 ttl=255 time=0.2 ms
64 bytes from
192.168.1.2: icmp_seq=4 ttl=255 time=0.1 ms
--- 192.168.1.2
ping statistics ---
5 packets transmitted,
5 packets received, 0% packet loss
round-trip
min/avg/max = 0.1/0.1/0.2 ms |
如果有响应的话,如上面所示,那就是正常啦!
-
不必拨接的已知固定式 IP 的检查方式:
假如已经知道您的公共 IP 、 通讯闸 (GateWay),且不必拨接的情况 (Giga
的 ADSL 不算这一种!),您可以直接修改 /etc/sysconfig/network 以及 /etc/sysconfig/network-scripts/ifcfg-eth0
这两个档案,然后以 ifup eth0
启动网络卡,并以
ping 您的网络卡
IP 来看看是否有正常工作。
[root@test
root]# vi /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=your.domain.name |
例如上面的范例,需要注意的地方是在
GATEWAY=及 GATEWAYDEV=eth0 这个地方 (只需要有一个即可) ,例如成大环工的
gateway IP 是 140.116.44.253 ,那您只要将您的 gate way 设定成那个 IP 就是了(就是
GATEWAY=140.116.44.253 )!而您的公共
IP 的修改方法为:
[root@test
root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=140.116.44.255
IPADDR=140.116.44.125
NETMASK=255.255.255.0
NETWORK=140.116.44.0
GATEWAY=140.116.44.253
ONBOOT=yes |
在上面的例子中,您的
IP 是 140.116.44.125,则您可以广播的地址共有
140.116.44.1-255( 140.116.44.255那一个 ),而您的子屏蔽网络为 255.255.255.0。好了!都设定完成之后,那就直接以下面的方式来启动:
[root@test
root]# /etc/rc.d/init.d/network restart
[root@test
root]# ifup eth0
[root@test
root]# ping -c 5 140.116.44.125 |
看看网络卡是否正常的启动了呢?
-
需拨接的网络卡 IP :
通常建议直接在 /etc/sysconfig/network 及 /etc/sysconfig/network-scripts/ifcfg-eth0
中,给予一个虚拟 IP 后,再 ping 您的网络卡 IP 。这是由于拨接式 ADSL 在拨接之前是没有公共
IP 的,所以我们先以私有 IP 来测试看看网络卡是否可以正常启动吧:
[root @test
/root]# vi /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=your.domain.name |
网友们最常发生问题的地方在于,您是以 eth1 来作为拨接的网络卡,但是却将
GATEWAYDEV 设定成 eth0 ,那样的话,您对外要求的封包将都会透过 eth0 这个私有
IP 的网络卡向外要求数据,由于私有 IP 没有办法连上 Internet ,所以,您的网络就完全上不了
Internet 啦!所以这里的设定要注意一下啰!
[root @test
/root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=no
GATEWAYDEV=ppp0 |
在上面的例子中,您将网络卡的私有
IP 设定成为 192.168.1.2 这一个!有一个习惯的错误在于将
BOOTPROTO ( 通讯协议 ) 设定成 DHCP ,这是不对的,因为您的网络是透过拨接的方式,在拨接的过程中就会由
rp-pppoe 拨接程序连接到 ISP 以 PPP 协议来设定好您自己的网络参数,所以这里设定
DHCP 是没有意义的!这里只要设定成 none 就行了!千万注意了!然后再以下面的方式来确认网络卡的运作与否:
[root@test
root]# /etc/rc.d/init.d/network restart
[root@test
root]# ifup eth0
[root@test
root]# ping -c 5 192.168.1.2 |
请注意呦!这个部分不需要修改也没有关系,如果您的设定是『 ONBOOT=no 』,嘿嘿!所以开机的时候并不会启动网络卡,那么实际拨接的时候就不会有干扰啰!如果需要启动拨接系统来确认拨接是否可行,可以按照上面的方式修改完两个档案,然后将
adsl-setup
设定完成,之后以下面的方式来启动 ADSL 试试看:
[root@test
root]# ifdown eth0
[root@test
root]# /etc/rc.d/init.d/network restart
[root@test
root]# adsl-start |
事实上,在 ADSL 拨接之前有没有启动
eth0 都没有关系,不过,有时候就是那么悬疑,启动了 eth0 就是没有办法拨接成功,那么您就可以将
eth0 先关闭再进行拨接试看看,通常就可以成功了。启动之后,再以 ping 的方式来确定一下网络:
[root@test
root]# ping -c 5 your.IP
[root@test
root]# ping -c 5 168.95.1.1
[root@test
root]# ping -c 5 tw.yahoo.com |
如果确定可以连上 Internet 之后,就将
adsl-start 写进 /etc/rc.d/rc.local 中吧!
-
重新安装网卡驱动程序:
如果上面的方式都没有办法来正常启动您的网络卡时,那就只好再捉一次您的网卡驱动程序了。首先看看驱动程序对不对吧!
假设您买的是螃蟹卡,那么您的 /etc/modules.conf 内容就会有点像这样 ( 在
Red Hat 6.x 以前的档案,档名为 /etc/conf.modules !):
[root@test
root]# vi /etc/modules.conf
alias eth0
rtl8139
alias eth1
viarhine |
在上面的例子中,由于我有两块网络卡,第一块是属于螃蟹卡
(芯片为 RelTeck8139) ,第二块是 VIA 的芯片 ( 直接以 viarhine 来驱动 ) 第三行是将
viarhine 这个芯片驱动的意思。万一您插了两张相同的网络卡,那要如何来区分网络卡的先后次序呢?!例如插了两块
rtl8139 的网络卡,那您可以这样写
(
增加 io 及 irq 的控制参数 ):
[root@test
root]# vi /etc/modules.conf
alias eth0
rtl8139
alias eth1
rtl8139
options rtl8139
io=0x300,0x320 irq=3,5 |
上面是说,两块卡的io 与 irq 分别为
0x300, 3 及 0x320, 5。至于这方面的相关信息,您可以进入
windows 系统中看过 ( 所以说,可以安装成多成操作系统啦! ) 再来修改吧!好了,那如果要重新安装网络卡的驱动程序呢?!嗯!翻回连上
Internet 那一章节察看吧!通常的网卡驱动程序安装方法步骤如下:
-
下载您的网卡驱动程序;
-
编译并安装模块;
-
修改 /etc/conf.module 档案;
-
修改 /etc/sysconfig/network 档案;
-
修改 /etc/sysconfig/network-scripts/ifcfg-eth0 档案;
-
以 ifup eth0 来启动您的 网络卡 试试看啰!
您只要将您的网络设备与您的芯片名称写上正确的,再加上将该芯片的驱动程序编译完成,并摆在
/lib/modules/`uname
-r`/kernel/drivers/net 里面即可 ( 若核心为 2.2.xx 则需要摆在
/lib/modules/2.X.X/net里面即可啰!)
VBird 的建议:
其实,在架设 Linux 服务器的过程中,大概最麻烦的地方就是在网络的设定这里了,尤其是后续的一些局域网络的联机设定
( 如果涉及 NAT 主机来分享网络带宽的话,将会更麻烦! ) ,所以这里 VBird
要给大家一个建议,就是遇到网络卡设定的瓶颈的时候,干脆先买一块很便宜,但是支持度很高的螃蟹卡
( 我去大卖场看过,最便宜的只要 250 不到就有了! ) ,先将网络架设起来再说!否则一个新手花了很多的时间去搞一块莫名的网络卡,常常会磨损一个
Linux 爱好者的耐心! |
步骤二:局域网络硬件联机确认
在确认完了最重要的网络卡设定之后,并且确定网络卡是正常的之后,在接着下来是局域网络内的网络连接情况了!假设您是按照图一所设定的局域网络架构,那么您的局域网络内的要求有下面几点:
-
关于 IP 的设定:假设您的私有
IP 段为 192.168.1.0/24 ,那您的局域网络内的所有计算机的
IP 应该介于
192.168.1.1 - 192.168.1.254,且所有的计算机的
子屏蔽网络
( Netmask ) 均为 255.255.255.0
,并且
IP 在所有的计算机都不可以重复;
-
关于 Gateway 与 DNS 的设定:假设您的
Linux 对内 IP 为 192.168.1.2,那么所有局域网络内,其他的个人计算机的
通讯闸
应该是 192.168.1.2 这一个,此外,您的 DNS 应该设定为 ISP 给您的
DNS IP 呢!例如 Hinet 的 168.95.1.1 ,如果您不晓得您的
DNS 应该设定多少,那就设定为 168.95.1.1 即可!『注意!不要设定为
192.168.1.2』;
-
关于 Windows 端的通讯协议:局域网络内其他的
windows 系统的通讯协议仅需要 TCP/IP 即可,不过,您也可以额外安装
NetBEUI
,除非您的网域内尚有其他的 Windows 服务器的服务,否则不要安装额外的通讯协议了!安装过多的通讯协议可能会造成联机过慢的情况;
-
关于 Windows 端的工作组与计算机名称:假如您还需要资源共享,那么您就必须在
windows 系统中开放档案分享,并且建议所有的计算机将『工作组』设定相同,但『计算机名称』则不能相同!
反正就是我们在 网络基础
里面谈到的网络参数设定啦!那些设定都需要正确无误才行。好了,那若要问您:局域网络内的计算机是否联机成功?最简单的方是就是以
ping
来测试啦!假设我是在 Linux 主机端 ( 192.168.1.2 这一个 IP ) 那我只要在主机端下达:
[root@test
root]# ping -c 5 192.168.1.100 |
就可以知道 192.168.1.100 这部计算机是否可以跟我的主机相通!如果不能连通呢?!说说可能的原因:
-
Windows 端的设定不对:
仔细看一下刚刚提到的几个基本要求的设定,也就是
Netmask, Network, Broadcast, Gateway 等等,是不是都正确呢!如果不确定的话,请再回到
局域网络的联机架构
章节去看一下 Windows 的设定。
-
联机线材不对:
要晓得,两块网络卡之间是以『跳线』来直接连接,至于网络卡与
Hub/Switch 是以『并行线』连接。因为网络线(RJ-45)分成并行线与跳线,两种规格并不相同。而在
Hub 的形式方面,目前较新的 ADSL 调制解调器,连接到 Hub 都必须要连到 uplink
这个孔了,所以必须以跳线连接 Hub 到 ADSL 调制解调器才行!此外,目前 ADSL 调制解调器大都有一个私有
IP 为 192.168.1.1,那您可以在您的主机端下达
ping 192.168.1.1 来看看两者是否有连通!这时请注意,将您的网络卡连接到
调制解调器 的那一个,设定的 IP 成为 192.168.1.2,并且重新启动 ifup eth0 ,才可以进行测试!注:还有一个简单的检视方法,那就是接到
Hub 上面之后,并且开启所有的装置电源,则全部的有接上装置的 Hub 插孔应该要『亮灯』才是对的,如果灯不亮,那就『肯定』有问题!当然啦,目前新的具有
Auto MDI/MDIX 功能的 Switch 可以自动分辨跳线与否,而中华电信的调制解调器规格也很多变~所以,还是得仔细的参考您的硬件说明书喔!
-
网络卡或 Hub 坏掉了:
不要怀疑!网络卡与 Hub 是会坏掉的!得小心一下这一个情况。
-
讯号太弱了:
这个最常发生在电话线接很长,或者是网络线接很长的情况,由于您的线材可能不是很好,所以就会造成您的网络会断断续续的!当然,也有可能是中华电信的机房本身提供给您的讯号就不够强,这时,您就必须请中华电信的工程师来帮您处理处理了!
步骤三:确认路由表数据没有问题
在一般正常的情况之下,当您下达 route
这个指令的时候,您的路由表 ( route table ) 应该会很快的显示出来,如果万一不幸显示的速度非常之慢,那么通常就是您的网络设定可能『有点怪怪的』,当然啦,如果是您的系统还有设定了
IP alias 的话,那么就真的会有点慢慢的~不过没有关系,我们还是可以来测试一下是否有问题呢!?
[root@test
root]# route
Kernel IP routing
table
Destination
Gateway Genmask
Flags Metric Ref Use Iface
140.116.141.253
*
255.255.255.255 UH 0 0
0 ppp0
192.168.1.0
*
255.255.255.0 U 0
0 0 eth0
127.0.0.0
*
255.0.0.0 U
0 0
0 lo
default
140.116.141.253 0.0.0.0
UG 0 0
0 ppp0 |
请注意,由于我有两块网络卡( 一块对内一块对外,我的系统架构就如同
图一
所显示的那样! ),加上我是以拨接的方式连上 Internet 的,所以自然就会有
eth0, eth1, ppp0 及本来就会有的 lo 这三个接口,而由于 eth1 这个接口是依附在
ppp0 上面的( 我的 ppp0 的拨接适配卡使用的是 eth1 呦!),所以自然也就没有
eth1 这个接口的设定!好了,那么我的路由接口自然就应该会有 eth0, ppp0, lo
这三个啦!那由于 lo 是 127.0.0.1 ,加上他是 A Class 的网络循环,因此就会得到上面的那一行!同时,我的默认通讯闸自然选择可以连上
Internet 的 ppp0 那块,所以也就成为 default 那一行啰!无论如何,我的 route
可以这样就设定妥当没有问题!
如果发生错的话,最常发生在这个地方的情况就是有点像底下的样子:
[root@test
root]# route
Kernel IP routing
table
Destination
Gateway Genmask
Flags Metric Ref Use Iface
140.116.141.253
*
255.255.255.255 UH 0 0
0 ppp0
192.168.1.0
*
255.255.255.0 U 0
0 0 eth0
127.0.0.0
*
255.0.0.0 U
0 0
0 lo
default
192.168.1.2 0.0.0.0
UG 0 0
0 eth0 |
发现哪里有问题了吗?对啦!那个 default 怎么 gateway 为 192.168.1.2
呢?对啦!唯一有问题的地方就是在那儿!因为预设的 GATEWAY 变成了 192.168.1.2
这个私有 IP ,自然无法连接上 Internet ,那么当您使用『ping
-c 5 202.1.237.21』当然也就会显示出封包递送的 IP 为 192.168.1.2
,呵呵!完全连不出去!怎么办?!很简单啦!除了手动以 route 这个指令修改之外,也可以修改
/etc/sysconfig/network-scripts/ifcfg-eth0
这个档案,将里头的 GATEWAY 或 GATEWAYDEV
的设定修正一下,就可以啦!加油!!
步骤四:确认 DNS 的 IP 设定
如果通过上面的问题确认,这个时候您的网络情况应该是:
-
网络卡与室内的联机材料都是好的;
-
并且局域网络内的计算机都可以互通;
-
同时,adsl-start 已经正确的工作了;
-
ping IP 可以 ping 的到,但是可能没有办法以浏览器直接浏览网站。
该如何是好!?嘿嘿!这时就需要注意您的
DNS 设定了!通常,如果是 DNS 设定的问题的时候,发生的现象是这样的:(我们以雅虎站
tw.yahoo.com, IP:202.1.237.21 来说明)
-
以 IP 来 ping 雅虎有数据可以传递:
有点像这样:
[root@test
root]# ping -c 5 202.1.237.21
PING 202.1.237.21
(202.1.237.21) from 211.74.152.23 : 56(84) bytes of data.
64 bytes from
202.1.237.21: icmp_seq=0 ttl=246 time=103.6 ms
64 bytes from
202.1.237.21: icmp_seq=1 ttl=246 time=105.3 ms
64 bytes from
202.1.237.21: icmp_seq=3 ttl=246 time=112.8 ms
64 bytes from
202.1.237.21: icmp_seq=4 ttl=246 time=87.7 ms
64 bytes from
202.1.237.21: icmp_seq=5 ttl=246 time=92.0 ms
--- 202.1.237.21
ping statistics ---
6 packets transmitted,
5 packets received, 16% packet loss
round-trip
min/avg/max = 87.7/100.2/112.8 ms |
-
以 领域名 来 ping 却没有回应:
有点像这样:
[root@test
root]# ping -c 5 tw.yahoo.com
ping: unknown
host tw.yahoo.com |
这时就需要改变您的主机的
DNS 设定了!您可以修改 /etc/resolv.conf 档案:
[root@test
root]# vi /etc/resolv.conf
nameserver
168.95.1.1
nameserver
139.175.10.20
nameserver
163.28.113.1 |
上面只是一个简单的表示方法,您的主要的
DNS 主机为 168.95.1.1 (Hinet的 DNS 主机),而备用的 DNS 则为 139.175.10.20
及 163.28.113.1 这两个。何谓备用的 DNS 主机呢?这是由于 168.95.1.1 可能会因为某些正常或不正常原因而停止服务的时候,则您的主机只要侦测不到
主要 DNS 主机,将会继续往下寻找另一个 DNS 主机,直到没有 DNS 主机为止。通常我至少都会设定两个以上。
那如果是 windows 端的设定呢?常常初学者会搞错的地方就是在
windows 的设定了!要注意:Windows 端的 DNS 设定与主机端
/etc/resolv.conf 的内容相同即可!很多初学者都以为 TCP/IP 内的 DNS
主机是填上自己的 Linux 主机,这是不对的(除非您自己的
Linux 上面有 DNS 服务)!您只要填上您的
ISP 给您的 DNS 主机 IP 位置就可以了!
步骤五:NAT 功能( 或 IP 分享器 )是否正常
NAT 可以先简单的想成是一个 IP 分享器,NAT 无法正确的工作原因有很多,不过,如果您确定您的局域网络联机已经正常,而且主机可以正确的连上
Internet,另外,客户端的 DNS 设定也是正确的(这一步常常有人搞错!),那么可能发生的问题大概就是没有将
IPv4 打开吧!虽然 /etc/sysconfig/network 当中已经设定了FORWARD_IPV4=yes
的项目,但是仍然有可能没有开启这一个项目,那么就以下面的指令来开启吧!
echo 1 > /proc/sys/net/ipv4/ip_forward
您可以将这个指令写入 /etc/rc.d/rc.local 这个档案中。另外,还有一点,就是您的
GateWay 设定错误了!这个在上面的 network 档案说明中已经提到了,您可以再详细的看一看!或者是使用
route -n 这个指令来察看一下您的 route table
(路由表)例如:
[root@test
root]# route -n
Kernel IP routing
table
Destination
Gateway Genmask
Flags Metric Ref Use Iface
192.168.1.2
0.0.0.0 255.255.255.255
UH 0 0
0 eth0
172.16.11.8
0.0.0.0 255.255.255.255
UH 0 0
0 ppp0
192.168.1.0
0.0.0.0 255.255.255.0
U 0 0
0 eth0
127.0.0.0
0.0.0.0 255.0.0.0
U 0 0
0 lo
0.0.0.0
172.16.11.8 0.0.0.0
UG 0 0
0 ppp0 |
仔细看到上面喔:
-
第六行显示您的对内网域为
192.168.1.0 这一个,且在 Iface 的地方,显示了您的界面卡使用的是
eth0 这一个界面卡;
-
另外,您的对外通讯闸(就是最后一行,由于是对外,所以会写出
0.0.0.0 的 Destination )是以 172.16.11.8 这一个,且您的界面是
ppp0 这一个!
了解了吗?对内与对外的 route table 是不一样的,如果您的对外
Iface 显示 eth0 的话,那就表示您的路由设定错误了!这时您就必须要修改一下您的
/etc/sysconfig/network-scripts/ifcfg-eth0 档案啰!然后再以
/etc/rc.d/init.d/network restart
来重新启动!
除了这些问题之外,您的
ipchains/iptables 是否正确的工作呢?这都需要注意的!而在 Red Hat 7.X 的版本之后,由于
ipchains 与 iptables 并存的环境下,会有问题发生,因此您必须取消任何一个防火墙机制才行!如果对于
ipchains 与 iptables 不是很熟悉的话,可以看一下这一篇讨论:
小州先生的
iptables 相关 NAT 与安全防护说明:
http://linux.vbird.org/linux_server/0150detect_network_1.php
好了!除了这些问题之外,还有一个小问题,就是发生在 Windows 的系统中,可能会有
MTU 的问题存在,也就是说,可能有部分的网站您没有办法连上去,那要如何是好?您可以翻到前一章去看一看如何修改您的
MTU 吧!至于更多的 NAT 功能与错误确认,我们会在 NAT
主机的设定一节再详细的说明喔!
步骤六:ADSL 调制解调器或 router 的问题
在您确认了上面的几个问题点之后,大概已经可以让您的网络畅通了!不过,如果还是没有办法连上
Internet 呢?那就很有可能是外部的问题了!我们需要注意的大概是这样:
-
ADSL 的 modem 灯号是否都是正常的?如果不正常的话,先处理
modem 吧!
-
连接到中华电信的 gateway 是否正常?这可以从 ifconfig
当中得到的信息,去 ping 那个 gateway 试试看!再不然的话,直接打电话到中华电信的机房去询问一下是否有问题;
-
是否有部分的 router 出现问题了:
基本上,前两点都很好解决,直接看一下 ADSL 的灯号就可以知道是否正常了!第三点才是我们这里所要探讨的!万一您从成大要联机到您高雄家中的以
seednet 作为 ISP 的您的主机时,您可以使用
traceroute
这样做:
[root@test
root]# traceroute tsai.adsldns.org
traceroute
to tsai.adsldns.org (211.74.251.208), 30 hops max, 38 byte packets
1
140.116.44.253 (140.116.44.253) 7.373 ms 8.732 ms 9.560
ms
2
203.72.191.42 (203.72.191.42) 0.932 ms 1.050 ms 0.716
ms
3
203.72.191.218 (203.72.191.218) 0.906 ms 1.209 ms 0.867
ms
4
R56-161.seed.net.tw (139.175.56.161) 2.229 ms 1.877 ms
2.154 ms
5
R58-38.seed.net.tw (139.175.58.38) 3.283 ms 3.639 ms
5.303 ms
6
br011008.seed.net.tw (139.175.11.8) 4.344 ms 3.941 ms
3.602 ms
7
swks251-208.adsl.seed.net.tw (211.74.251.208) 50.058 ms 52.567
ms 53.109 ms |
在这样的过程中,您就可以知道,您向您家中要求的数据封包是怎样传送的!而一个一个的去了解到底您的网络传输速度是在哪一个环节被挡了下来而有延迟的问题!又例如我从家里联机到雅虎的网站时,数据封包时如何传送的呢?例如下面的说明:
[root@test
root]# /usr/sbin/traceroute tw.yahoo.com
traceroute
to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets
1
172.16.11.8 (172.16.11.8) 46.181 ms 45.028 ms 39.722
ms
2
139.175.15.1 (139.175.15.1) 37.972 ms 36.554 ms 40.228
ms
3
R58-194.seed.net.tw (139.175.58.194) 45.332 ms 46.370 ms
46.140 ms
4
R58-90.seed.net.tw (139.175.58.90) 46.814 ms 55.286 ms
46.401 ms
5
211.22.41.174 (211.22.41.174) 46.326 ms 57.491 ms 45.398
ms
6
211.22.35.230 (211.22.35.230) 46.813 ms 57.740 ms 46.117
ms
7
211.22.35.169 (211.22.35.169) 46.319 ms 51.316 ms 52.549
ms
8
203.69.65.65 (203.69.65.65) 46.342 ms 46.185 ms 58.698
ms
9
* * * |
最后面出现了 * 的符号,这表示从 203.69.65.65 这一个 router 到下一个 router
的过程中可能有点小问题,所以造成了您的网络有点不是很正常的情况发生!这时您就必须要去了解下原因了。像早先新竹的一条光缆被挖断的时候,由于那条光缆是主要的网络干道之一,所以被挖断了,将使得数据封包必须经过东部的以及备份的网络流量较小的备援网络系统来处理,所以也就造成大塞车的问题了!另外,本站前一阵子由于教育部的
UPS 在进行维护的工程,结果也是导致成大部分的网络流量受阻,造成我们的网友无法联机进来的结果,您可以到鸟哥的私房菜首页(http://linux.vbird.org)看一下在
2001/12/6-10 日之间的公告,这样的检验也可以让我们了解到网络流量的瓶颈喔!
步骤七:主机服务是否关掉了与服务权限的问题
另外一个常见的问题是,无法登入主机执行『某些』功能,也就是说,您可以
ping 的到网络上的某部主机,但是就是无法执行这个主机的某些特定的功能,例如
FTP, WWW, mail 等等。以鸟哥的某个主机为例,我的主机仅提供 mail 及 www 的服务,因此您使用
telnet 及 ftp 都是没有用的!所以啰,必须先去了解到该主机提供的服务才行!
那如果是您的主机呢?最常见到的就是新版的
Linux 中,ftp 与 telnet 已经预设不开放了!那您当然无法以
ftp 及 telnet 连接到您的主机里面!这时,就必须要到
/etc/xinetd.d 去修改几个服务的设定,以 telnet 为例,您可以在
/etc/xinetd.d/telnet 中看到如下的咚咚:
[root@test
root]# vi /etc/xinetd.d/telnet
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait
= no
user
= root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
} |
看看上面,请将 disable = yes 改成 disable = no 就可以开启啦!然后再以 /etc/rc.d/init.d/xinetd
restart 来启动您的 telnet 服务!不过,基本上也有可能是
firewall 挡住了您的服务通道,这时,就需要先开启防火墙了!
还有一个要检查的是各个档案或者是程序的权限了!例如您的
/etc/hosts.allow 中是否有开启?您的 mail server
是否有设定 relay ?您的 httpd.conf 中是否有开放
PHP 或者是 MySQL 的服务,或者是其他相关的 CGI 程序执行的可行性?您的
FTP 是否有开放匿名登录?等等等,都是需要特别的检查的,不过,这都属于一般性的
FAQ 了,这里就不多做说明。
Linux
网络侦错
2002/07/31:第一次完成日期!
2003/08/19:重新修订一些数据,与前面的章节比较好配合!
|
|