设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> Linux应用技巧 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux下WWW服务器配置全…
Linux中文环境的解决办法
Linux下的中文输入法简介
Linux的中文输出简介
Linux中文延伸安装套件概…
Linux中文输入三剑客
Linux中文化简述
Linux中文化的简要历史
Linux中文化现状及其它
Linux中文化和GB18030标…
  管理Linux系统下的TCP/IP         ★★★★★
管理Linux系统下的TCP/IP
 

【导读】简要介绍Linux系统下的TCP/IP管理。
每当装入一个网卡驱动模块,系统会为它分配一个设备名字,命名规则是:第一个以

太网卡是eth0,第二个是eth1,....以此类推。分配可以用dmesg命令显示,例如:



rtl8139.c:v1.07 5/6/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/dri

vers/r



tl8139.html



eth0: RealTek RTL8139 Fast Ethernet at 0xd800, IRQ 19, 00:50:ba:d0:8d:ec.



表明rtl8139的设备名字是eth0,MAC地址是十六进制0050bad08dec。



下面需要为设备分配IP地址和网络广播地址以便启动TCP/IP。这要使用ifconfig命令

,其语法是



ifconfig [设备名][IP地址]netmask[网络掩码] broadcast [广播地址] ....



例如,要为eth0分配ip地址202.199.248.145,掩码为255.255.255.0,广播地址是20

2.199.248.255,那么命令是



/sbin/ifconfig eth0 202.199.248.145 netmask 255.255.255.0 broadcast 202.19

9.248.255



同样的方式可以用来配置eth1,eth2,等等,通常netmask和broadcast只要设置一个

就可以了。



不带参数的ifconfig命令可以显示当前启动的网络接口:



[openlab]# ifconfig



eth0Link encap:EthernetHWaddr 00:50:BA:D0:8D:EC



inet addr:202.199.248.6Bcast:202.199.248.255Mask:255.255.255

.0



UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1



RX packets:1930 errors:0 dropped:0 overruns:0 frame:0



TX packets:841 errors:0 dropped:0 overruns:0 carrier:0



collisions:1 txqueuelen:100



Interrupt:19 Base address:0xd800





loLink encap:Local Loopback



inet addr:127.0.0.1Mask:255.0.0.0



UP LOOPBACK RUNNINGMTU:3924Metric:1



RX packets:0 errors:0 dropped:0 overruns:0 frame:0



TX packets:0 errors:0 dropped:0 overruns:0 carrier:0



collisions:0 txqueuelen:0



lo是look-back网络接口,从IP地址127.0.0.1就可以看出,它代表“本机”。无论系

统是否接入网络,这个设备总是存在的,除非你在内核编译的时候禁止了网络支持。



如果你只是关心某个设备是否正常,可以在ifconfig后面加上接口名字:



[openlab]# ifconfig eth0



eth0Link encap:EthernetHWaddr 00:50:BA:D0:8D:EC



inet addr:202.199.248.6Bcast:202.199.248.255Mask:255.255.255

.0



UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1



RX packets:2284 errors:0 dropped:0 overruns:0 frame:0



TX packets:889 errors:0 dropped:0 overruns:0 carrier:0



collisions:1 txqueuelen:100



Interrupt:19 Base address:0xd800



表示eth0设备已经正常工作。



有时需要为某个设备接口配置多个IP地址,办法是使用设备别名,例如,eth0设备可

以有eth0,eth0:0,eth0:1....多个别名,每个都可以有一个独立的IP地址:



ifconfig eth0 202.199.248.2 netmask 255.255.255.0 broadcast 202.199.248.25

5



ifconfig eth0:0 202.199.248.3 netmask 255.255.255.0 broadcast 202.199.248.

255



这样,202.199.248.2和202.199.248.3都会被绑定在eth0设备上,使用同样的网络设

备,不同的IP地址。



如果你要暂停某个网络接口的工作,使用down参数:



ifconfig eth0 down



将取消eth0网络接口。与之对应的是有一个参数up,不过由于是缺省值,所以从来不

用。



4.2.3 协议和路由配置



配置了网络接口之后,通常本地网络就可以通信了,通过ping命令可以显示子网内能

否相互访问:



[openlab]# ping 202.199.248.1



PING 202.199.248.1 (202.199.248.1) from 202.199.248.6 : 56(84) bytes of da

ta.



64 bytes from 202.199.248.1: icmp_seq=0 ttl=255 time=0.9 ms



64 bytes from 202.199.248.1: icmp_seq=1 ttl=255 time=0.9 ms



64 bytes from 202.199.248.1: icmp_seq=2 ttl=255 time=0.8 ms



64 bytes from 202.199.248.1: icmp_seq=3 ttl=255 time=0.8 ms



64 bytes from 202.199.248.1: icmp_seq=4 ttl=255 time=0.8 ms



64 bytes from 202.199.248.1: icmp_seq=5 ttl=255 time=0.8 ms



?--- 202.199.248.1 ping statistics ---



6 packets transmitted, 6 packets received, 0% packet loss



round-trip min/avg/max = 0.8/0.8/0.9 ms



注意ping命令会反复试验直到你按下^C为止,上面的信息说明本地网的相互通信已经

正常了。但是如果你现在ping子网外面的机器,就会得到一个“网络不可达”的信息,

因为还没有设置路由:



[openlab]# ping 202.112.58.200



connect: Network is unreachable



路由路径的设置是由route命令完成的,通常,你用ifconfig命令启动一个网络接口的

时候会启动一个子网内的路由,这可以用route命令显示出来:



[openlab]# route



Kernel IP routing table



Destination Gateway Genmask Flags Metric RefUse If

ace



202.199.248.0 * 255.255.255.0 U 000 et

h0



127.0.0.0 * 255.0.0.0 U 000 lo



这两行表示目标地址在C类网202.199.248.0(也就是,202.199.248.0到202.199.248.

255)中的数据包要送到eth0设备去广播,而目标为A类地址127.0.0.0的数据包直接送到

lo接口。



那么,下一步需要给出目标地址不在这个子网内的数据包的递送地址,route命令可以

用来加入这种静态递送路径:



route [add/del] [-net/-host] [目标地址] [gw] 网关地址或者



route [add/del] default gw [网关地址]



route [add/del] –net [子网地址] dev [网络接口]



add/del表示在路由表中增加还是删除一条路径,而-net或者-host则表示投递的目标

地址是一个地址还是一个网络,如果是网络的话,可以使用netmask参数。gw后边跟路由

器地址。例如,要把目标地址是202.118.x.x的数据包通过202.199.248.1路由出去,使

用



route add –net 202.118.0.0 netmask 255.255.0.0 gw 202.199.248.1



如果要撤销这个路由路径,照样重敲一遍并且使用del替换add:



route del -net 202.118.0.0 netmask 255.255.0.0 gw 202.199.248.1



当然,实际上,大部分比较小的网络使用缺省路由,即“除了本地地址,全都投递到

路由器”,这可以使用default参数来完成,例如,我们的缺省路由器是202.199.248.1

,那么,使用命令



route add default gw 202.199.248.1



有时也需要设定对某个主机的确定路由路径,这可以把-net选项换成-host,另外主机

地址不能使用掩码,其他和上面说的一样。route命令还有一个特殊的参数metric,用来

设置路由器的缺省跳数,不过事实上没有人用。



route的最后一个常用参数是dev,用于设定设备接口,这个功能一般用在你有多片网

卡的时候。例如,要强制让所有目标地址是202.199.248.0的包通过eth0送出,使用



route add –net 202.199.248.0 netmask 255.255.255.0 dev eth0



最后可以用route和ping命令检测一下是否正确:



[openlab]# route



Kernel IP routing table



Destination Gateway Genmask Flags Metric RefUse If

ace



202.199.248.0 * 255.255.255.0 U 000 et

h0



127.0.0.0 * 255.0.0.0 U 000 lo



default router.asnc.edu 0.0.0.0 UG000 et

h0



[openlab]# ping 202.112.58.200



PING 202.112.58.200 (202.112.58.200) from 202.199.248.6 : 56(84) bytes of 

data.



64 bytes from 202.112.58.200: icmp_seq=0 ttl=247 time=586.0 ms



64 bytes from 202.112.58.200: icmp_seq=1 ttl=246 time=562.2 ms



64 bytes from 202.112.58.200: icmp_seq=2 ttl=246 time=617.6 ms



?--- 202.112.58.200 ping statistics ---



4 packets transmitted, 3 packets received, 25% packet loss



round-trip min/avg/max = 562.2/588.6/617.6 ms



一般来说,经过这样的配置之后,Linux系统已经可以使用网络了。但是,域名系统需

要额外配置,我们这里不涉及DNS Server,相反,假定你已经有了一个可以使用的域名

服务器,并且知道它的IP地址,那么,你需要修改一个文件,即/etc/resolv.conf,这

个文件用于寻找正确的DNS服务器地址:



[openlab]# cat /etc/resolv.conf



search asnc.edu.cn



nameserver 202.199.248.2



search子句定义了缺省的域名后缀,例如,现在这个配置中,当你输入ping myhost时

,系统自动将myhost解释成myhost.asnc.edu.cn。nameserver子句给出名字服务器的IP

地址,可以有多个nameserver子句。



接下来是/etc/host.conf和/etc/nsswitch.conf两个文件,这两个文件定义名字解析

的顺序。需要指出的是不同的Linux内核可能使用不同的定义,有的使用/etc/host.con

f,有的使用/etc/nsswitch.conf,没有确定的标准,目前的版本主要是使用/etc/nssw

itch.conf。一般系统安装后这两个文件的内容已经是正确的,不过为了完整,这里解释

一下:/etc/host.conf的内容是



order hosts,bind



multi on



第一个order子句用于说明域名的搜索顺序,hosts其实就是/etc/hosts文件的内容,

这个文件用来定义某些需要在启动时使用的地址,例如,一个典型的/etc/hosts文件的

内容是



[openlab]# cat /etc/hosts



202.199.248.6 localhost.localdomain localhost



202.199.249.2 openlab.asnc.edu.cn openlab



202.199.248.5 solaris7.asnc.edu.cnsolaris7



202.199.248.149 tvt.asnc.edu.cn tvt



每一行定义了一个ip地址、主机名和别名。



bind指代一个dns服务。连起来的意思就是先查找本地/etc/hosts文件,然后再查询D

NS服务器。



multi on的含义是允许一个名字有多个ip。



/etc/nsswitch.conf文件比较长,你在其中应该能看到类似这样的行:



hosts:files dns



这一行的效果和/etc/host.conf里的order hosts,bind是类似的。



现在你有了一个可以使用网络的系统了,但是除了resolv.conf和host.conf/nsswitc

h.conf之外,这些内容并没有被记忆下来,而是一旦重起就会丢失,因此,很自然的想

法是把相关的命令放到启动脚本中,一开机就自动执行。往系统的缺省运行级目录里写

一个脚本是不错的主意,或者写在rc.inet1,rc.sysinit等等地方,但是,如果喜欢有

序,你可以看看基于菜单的配置工具。

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2006-10-10
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:admin    责任编辑:admin 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持