鸟哥自由软件整合应用研究室 Love U ^^
Linux 常用网络命令介绍
最近升级日期:2006/08/02
网络参数配置命令:
任何时刻如果你想要做好你的网络参数配置,包括 IP 参数、路由参数与无线网络等等, 就得要了解底下这些相关的命令才行!其中以 route 及 ip 这两支命令算是较重要的喔! ^_^ 当然,比较早期的用法,我们都是使用 ifconfig 的啦!
ifconfig, ifup, ifdown
这三个命令的用途都是在启动网络接口,不过, ifup 与 ifdown 仅能就 /etc/sysconfig/network-scripts 内的 ifcfg-ethx (x 为数字) 进行启动或关闭的动作,并不能直接修改网络参数,除非手动调整 ifcfg-ethx 文件才行。至于 ifconfig 则可以直接手动给予某个接口 IP 或调整其网络参数! 底下我们就分别来谈一谈先!
路由修改 route
我们在 网络基础的时候谈过关于路由的问题, 两部主机之间一定要有路由才能够互通 TCP/IP 的协议,否则就无法进行联机啊! 一般来说,只要有网络接口,该接口就会产生一个路由,例如在鸟哥实验室内部的主机有一个 eth0 及 lo , 所以:
如果是传送到 Yahoo 的主机呢? Yahoo 的主机 IP 是 202.43.195.52,我通过判断 1)不是 192.168.10.0/24, 2)不是 169.254.0.0/16 结果到达 3)0/0 时,OK!传出去了,透过 eth0 将封包传给 192.168.10.30 那部 gateway 主机啊!所以说,路由是有顺序的。 因此当你重复配置多个同样的路由时, 例如在你的主机上的两张网络卡配置为相同网域的 IP 时,会出现什么情况?会出现如下的情况:
ip
ip 是个命令喔!并不是那个 TCP/IP 的 IP 啦!这个 ip 命令的功能可多了! 基本上,他就是整合了 ifconfig 与 route 这两个命令啰~不过, ip 可以达成的功能却又多更多! 真是个相当厉害的命令。如果您有兴趣的话,请自行 vi /sbin/ifup ,就知道整个 ifup 就是利用 ip 这个命令来达成的。好了,如何使用呢?让我们来瞧一瞧先!
ip link 可以配置与装置 (device) 有关的相关配置,包括 MTU 以及该网络接口的 MAC 等等, 当然也可以启动 (up) 或关闭 (down) 某个网络接口啦!整个语法是这样的:
如果说 ip link 是与 OSI 七层协议 的第二层数据连阶层有关的话,那么 ip address (ip addr) 就是与第三层网络层有关的参数啦! 主要是在配置与 IP 有关的各项参数,包括 netmask, broadcast 等等。
呵呵,这个项目当然就是路由的观察与配置啰!事实上, ip route 的功能几乎与 route 这个命令差不多,但是,他还可以进行额外的参数设计,例如 MTU 的规划等等,相当的强悍啊!
事实上,这个 ip 的命令实在是太博大精深了!刚接触 Linux 网络的朋友,可能会看到有点晕~ 不要紧啦!您先会使用 ifconfig, ifup , ifdown 与 route 即可, 等以后有经验了之后,再继续回来玩 ip 这个好玩的命令吧! ^_^ 有兴趣的话,也可以自行参考 ethtool 这个命令喔! (man ethtool)。
iwlist, iwconfig
这两个命令您必须要有无线网卡才能够进行喔!这两个命令的用途是这样的:
dhclient
如果你是使用 DHCP 协议在局域网络内取得 IP 的话,那么是否一定要去编辑 ifcfg-eth0 内的 BOOTPROTO 呢? 嘿嘿!有个更快速的作法,那就是利用 dhclient 这个命令~因为这个命令才是真正发送 dhcp 要求工作的程序啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:
网络侦错与观察命令:
在网络的互助论坛中,最常听到的一句话就是:『
高手求救!我的 Linux 不能连上网络了!』我的天吶!不能上网络的原因多的很!而要完全搞懂也不是一件简单的事情呢! 不过,事实上我们可以自己使用测试软件来追踪可能的错误原因,而很多的网络侦测命令其实在 Linux 里头已经都默认存在了,只要您好好的学一学基本的侦测命令,那么一些朋友在告诉您如何侦错的时候, 您应该就立刻可以知道如何来搞定他啰!好了,底下我们就简单的来谈一谈几个很基本的网络常用的侦错命令啦!
ping
这个 ping 是很重要的命令,ping 主要透过 ICMP 封包 来进行整个网络的状况报告,当然啦,最重要的就是那个 ICMP type 0, 8 这两个类型, 分别是要求回报与主动回报网络状态是否存在的特性。要特别注意的是, ping 还是需要透过 IP 封包来传送 ICMP 封包的, 而 IP 封包里面有个相当重要的 TTL (Time To Live) 属性,这是很重要的一个路由特性, 详细的 IP 与 ICMP 表头数据请参考 网络基础的详细介绍。
用 ping 追踪最大 MTU 数值 我们由前几章的网络基础里面谈到加大讯框 (frame) 时, 对于网络效能是有帮助的,因为封包打包的次数会减少,加上如果整个传输的媒体都能够接受这个 frame 而不需要重新进行封包的拆解与重组的话,那么效能当然会更好,那个修改 frame 大小的参数就是 MTU 啦!好了,现在我们知道网络卡的 MTU 可以透过 ifconfig 或者是 ip 等来达成, 那么追踪整个网络传输的最大 MTU 时,又该如何查询?呵呵!最简单的方法当然是透过 ping 传送一个大封包, 并且不许中继的路由器或 switch 将该封包重组,那就能够处理啦!没错!可以这样的:
不过这个 MTU 不要随便调整啊!除非真的有问题。通常调整 MTU 的时间是在这个时候:
如果是要连上 Internet 的主机,注意不要随便调整 MTU ,因为我们无法知道 Internet 上面的每部机器能够支持的 MTU 到多大,因为......不是我们能够管的到的嘛! ^_^
另外,其实每种联机方式都有不同的 MTU 值,常见的各种接口的 MTU 值分别为︰
网络上也有免费帮忙查询 MTU 与传输相关数据的网站,例如底下这个网站:
traceroute
我们前面谈到的命令大多数都是针对主机的网络参数配置所需要的,而 ping 是两部主机之间的回声与否判断, 那么有没有命令可以追踪两部主机之间通过的各个节点 (node) 通讯状况的好坏呢? 举例来说,如果我们联机到 yahoo 的速度比平常慢,你觉得是 (1)自己的网络环境有问题? (2)还是外部的 Internet 有问题?如果是 (1) 的话,我们当然需要检查自己的网络环境啊, 看看是否又有谁中毒了?但如果是 Internet 的问题呢?那只有『等等等』啊! 判断是 (1) 还是 (2) 就得要使用 traceroute 这个命令啦!
另外,如果在默认的 5 秒钟之内 traceroute 听不到节点的回声,那么屏幕上就会跑出一个『 * 』的符号, 告知该节点无法有顺利的响应。由于我们的 traceroute 用的是 ICMP 封包,有些防火墙或者主机可能会将 ICMP 可通过的权力拿掉,因此就会造成等不到回声的状态!另外,有些 gateway 本来就不支持 traceroute 的功能,因此也会产生那个『 * 』的状况。所以分析时得要注意一下吶! netstat
如果你觉得你的某个网络服务明明就启动了,但是就是无法造成联机的话,那么应该怎么办? 首先你应该要查询一下自己的网络接口所监听的端口 (port) 来看看是否真的有启动, 因为有时候屏幕上面显示的 [OK] 并不一定是 OK 啊! ^_^
通常鸟哥都是建议加上『 -n 』这个参数的,因为可以避过主机名与服务名称的反查,直接以 IP 及端口号码 (port number) 来显示,显示的速度上会快很多!至于在输出的信息当中, 我们先来谈一谈关于网络联机状态的输出部分,他主要是分为底下几个大项:
至于传统的 Unix socket 的数据,记得使用 man netstat 查阅一下吧! 这个 Unix socket 通常是用在一些仅在本机上运行的程序所开启的插槽接口文件, 例如 X Window 不都是在本机上运行而已吗?那何必启动网络的 port 呢?当然可以使用 Unix socket 啰,另外,例如 Postfix 这一类的网络服务器,由于很多动作都是在本机上头来完成的, 所以以会占用很多的 Unix socket 喔!
host
这个命令可以用来查出某个主机名的 IP 喔!举例来说,我们想要知道 tw.yahoo.com 的 IP 时, 可以这样做:
nslookup
这玩意儿的用途与 host 基本上是一样的,就是用来作为 IP 与主机名对应的检查, 同样是使用 /etc/resolv.conf 这个文件来作为 DNS 服务器的来源选择。
远程联机命令:
啥是远程联机呢?其实就是在不同的计算机之间进行登陆的情况啦! 我们可以透过 telnet, ssh 或者是 ftp 等协议来进行远程主机的登陆, 底下我们就分别来介绍一下这些基本的命令吧!另外,相关的服务器我们则会在后续进行说明的。
telnet
telnet 是早期我们在个人计算机上面要链接到服务器主机上工作时,最重要的一个软件了! 他不但可以直接连接到服务器上头,还可以用来连结 BBS 呢!非常棒! 不过, telnet 本身的数据在传送的时候是使用明码 (原始的数据,没有加密) , 所以数据在 Internet 上面跑的时候,会比较危险一点 (就怕被别人监听啊)。 更详细的数据我们会在『 远程联机服务器』章节内做介绍的。
除了连结到服务器以及连结到 BBS 站之外, telnet 还可以用来连结到某个 port (服务) 上头吶! 举例来说,我们可以用 telnet 连接到 port 110 ,看看这个 port 是否有正确的启动呢?
ftp
常常会听到『FTP』这个咚咚吧!举例来说,如果你想要下载 Linux 的光盘刻录映象文件时,要去哪里下载啊? 不是说要去义守大学吗?也可以到成大或昆山科大等等的 FTP 网站,嘿嘿!没错~那就是 FTP 提供者啦! 那我们要如何去下载呢?当然就是透过 ftp 的客户端软件了。在 Linux 底下,我们可以透过 ftp 这个软件, 也可以透过下一小节会提到的 lftp 说~
登陆 FTP 主机后,就能够使用 ftp 软件的功能进行上传与下载的动作, 几个常用的 ftp 内命令如上表,不过,鸟哥建议您可以连到大学的 FTP 网站后, 使用 help (或问号 ?) 来参考可用的命令,然后尝试下载以测试使用一下这个命令吧! 这样以后没有浏览器的时候,你也可以到 ftp 下载了呢!不错吧! ^_^ 另外,如果由于某些理由,让你的 FTP 主机的 port 开在非正规的端口时, 那你就可以利用底下的方式来连接到该部主机喔!
lftp
早期当我们要登陆提供匿名登录的主机时,很多时候都是使用 ncftp 这个软件, 不过,现在有更棒的选择,那就是 lftp 啦!这个软件甚至可以在 ftp 里面使用类似 bash 的命令功能, 实在是非常的完美!而整个使用的方法与上面提到的 ftp 又非常类似吶!
gaim
我想,现在应该大家都知道什么是 MSN, 雅虎实时通以及其他的通讯软件吧? 那么要连上这些服务器时,该怎么处理哪?很简单,在 X Window 底下使用 gaim 就好了! 简直简单到不行~ ^_^ 请先进入 X Window 系统,然后开启一个终端机窗口,接着直接输入 gaim (请注意您必须已经安装了 gaim 了) 然后就会出现如下的窗口啦:
图一、gaim 使用范例图 在输入你的账号与口令,并选择相对应的实时通讯服务器 (如 MSN 或 Yahoo 实时通) ,就可以进入到如下画面: 图二、gaim 使用范例图 若一切都没有问题后,按下『登陆』嘿嘿~您就可以在 Linux 上头使用实时通讯软件啦!方便的很哩! ^_^ 文字接口网页浏览
什么?文字界面竟然有浏览器!别逗了好不好?呵呵!谁有那个时间在逗您呦!真的啦!有这个东西, 是在文字界面下上网浏览的好工具!分别是 lynx 及 wget 这两个宝贝蛋,但是,您必需要确定您已经安装了这两个套件才行。 底下就让我们来聊一聊这两个好用的家伙吧!
lynx
这个命令可以让我们来浏览网页,但鸟哥认为,这个文件最大的功能是在『
查阅 Linux 本机上面以 HTML 语法写成的文件数据 (document)』 怎么说呢?如果你曾经到 Linux 本机底下的 /usr/share/doc 这个目录看过文件数据的话, 就会常常发现一些网页文件,使用 vi 去查阅时,老是看到一堆 HTML 的语法!有碍阅读啊~ 这时候使用 lynx 就是个好方法啦!可以看的清清楚楚啊! ^_^
图三、lynx 使用范例图 在特殊字体的部分是我们可以使用
图四、lynx 使用范例图 当然啦!因为您的环境可能是在 Linux 本机的 tty1~tty6 ,所以无法显示出中文, 这个时候你就得要配置为:『LANG=en_US』之类的语系配置才行喔! 而如果你常常需要浏览中文语系的网页,那就可以直接修改配置文件,例如 /etc/lynx.cfg 这个文件内:
wget
如果说 lynx 是在进行网页的『浏览』,那么 wget 就是在进行『网页数据的取得』。 举例来说,我们的 Linux 核心是放置在 www.kernel.ort 内,主要同时提供 ftp 与 http 来下载。 我们知道可以使用 lftp 来下载数据,但如果想要用浏览器来下载呢? 那就利用 wget 吧!
封包撷取功能
很多时候由于我们的网络联机出现问题,使用类似 ping 的软件功能却又无法找出问题点, 最常见的是因为路由与 IP 转递后所产生的一些困扰 (请参考防火墙与 NAT 主机部分), 这个时候要怎么办?最简单的方法就是『
分析封包的流向』啰! 透过分析封包的流向,我们可以了解一条联机应该是如何进行双向的联机的动作, 也就会清楚的了解到可能发生的问题所在了!底下我们就来谈一谈这个 tcpdump 与图形接口的封包分析软件吧!
tcpdump
说实在的,对于 tcpdump 这个软件来说,你甚至可以说这个软件其实就是个黑客软件, 因为他不但可以分析封包的流向,连封包的内容也可以进行『监听』, 如果你使用的传输数据是明码的话,不得了,在 router 上面就可能被人家监听走了! 很可怕吶!所以,我们也要来了解一下这个软件啊!(注:这个 tcpdump 必须使用 root 的身份运行)
再来,一个网络状态很忙的主机上面,你想要取得某部主机对你联机的封包数据而已时, 使用 tcpdump 配合管线命令与正规表示法也可以,不过,毕竟不好捉取! 我们可以透过 tcpdump 的表示法功能,就能够轻易的将所需要的数据独立的取出来。 在上面的范例一当中,我们仅针对 eth0 做监听,所以整个 eth0 接口上面的数据都会被显示到屏幕上, 不好分析啊!那么我们可以简化吗?例如只取出 port 21 的联机封包,可以这样做:
更神奇的使用要来啦!如果我们使用 tcpdump 在 router 上面监听『明码』的传输数据时, 例如 FTP 传输协议,你觉得会发生什么问题呢? 我们先在主机端下达『 tcpdump -i lo port 21 -nn -X 』然后再以 ftp 登陆本机,并输入账号与口令, 结果你就可以发现如下的状况:
另外你得了解,为了让网络接口可以让 tcpdump 监听,所以运行 tcpdump 时网络接口会启动在 『错乱模式 (promiscuous)』,所以你会在 /var/log/messages 里面看到很多的警告信息, 通知你说你的网络卡被配置成为错乱模式!别担心,那是正常的。 至于更多的应用,请参考 man tcpdump 啰!
ethereal
除了 tcpdump 这个软件之外,其实你还可以使用 ethereal 这个好用的网络使用分析软件吶! ethereal 分为文字接口与图形接口,文字接口的用法与 tcpdump 相当的类似,不过他的命令名称为 tethereal 就是了。因为用法差不多,所以建议您直接使用 man tethereal 查阅吧! 在 CentOS 上原本就有 ethereal 了,所以请拿出光盘来安装即可喔! 需要安装 ethereal 与 ethereal-gnome 才行吶!
启动的方法很简单,你必须要在 X Window 底下,先开启一个终端机,然后直接输入 ethereal 后, 就会出现如下的画面了: 图五、ethereal 使用范例图 简单的作法,你可以点选如上图显示的那个按钮,会出现挑选监听的接口窗口,如下所示: 图六、ethereal 使用范例图 你应该选择要监听的接口,在这里因为是测试用的,所以鸟哥使用的是 lo 这个内部接口, 你当然应该要选择你自己的网络接口才是。然后按下 start 后,就会出现开始侦测的画面了: 图七、ethereal 使用范例图 在这个画面当中你可以看到很多类型的封包协议,在等你处理完毕后,就可以按下『stop』结束监听, 而开始进入如下的封包分析画面。 图八、ethereal 使用范例图 封包分析画面共分为三大区块,如上图所示,第一区块主要显示的是封包的标头数据, 内容就有点类似 tcpdump 的显示结果,第二区块则是详细的表头数据, 包括讯框的内容、通讯协议的内容以及 socket pair 等等信息。 第三区块则是 16 进位与 ASCII 码的显示结果。透过这个 ethereal 您就可以一口气得到所需要的所有封包内容啦! 而且还是图形接口的,很方便吧!透过在第一区块选择不同的封包,就能够查阅每个封包的数据内容啰! nc, netcat
这个 nc 可以用来作为某些服务的检测,因为他可以连接到某个 port 来进行沟通, 此外,还可以自行启动一个 port 来倾听其他用户的联机吶!非常的不错用! 如果在编译的时候给予『GAPING_SECURITY_HOLE』参数的话,嘿嘿! 这个软件还可以用来取得客户端的 bash 哩!可怕吧!我们的 CentOS 比较人性化,并没有给予上面的参数,所以我们不能够用来作为黑客软件~ 但是用来取代 telnet 也是个很棒的功能了!(有的系统将运行文件改名为 netcat 啦!)
重点回顾
课后练习
ifconfig eth0 192.168.1.100
route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0
traceroute tw.yahoo.com
以 root 的身份进行『netstat -anp |more』查出该联机的 PID,然后以『 kill -9 PID 』踢掉该联机。
方法很多,可以利用 host green.ev.ncku.edu.tw 或 dig green.ev.ncku.edu.tw 或 nslookup green.ev.ncku.edu.tw 等方法找出
请利用『ping -c 3 -M do -s MTU yourIP 』找出您的 IP 的 MTU 数值。 事实上,你还可以先以 ip 配置网络卡较大的 MTU 后,在进行上述的动作,才能够找出网域内适合的 MTU。
要浏览可以使用 lynx ,至于要下载则使用 wget 这个软件。
利用 telnet bbs.sayya.org 即可连接上
参考数据
2002/07/31:第一次完成日期! 2003/08/19:重新编排版面,加入 jmcce 的安装以及 MTU 的相关说明 2003/08/20:加入课后练习去 2003/09/19:加入参考用解答咯! 2005/03/24:route 的命令参数写错了!已经订正! 2006/07/24:将旧的文章移动到 此处 2006/07/24:拿掉相关性不高的 JMCCE 中文终端机; 将 Windows 系统的 MTU 检测修改方法移除。 也拿掉 ncftp 的说明 2006/08/02:修改了很多部分,加入一些封包侦测的功能程序,tcpdump, nc 等命令! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||