Linux常用网路指令
2016-07-10 16:47
706 查看
原文地址:http://linux.vbird.org/linux_server/0140networkcommand.php
| 繁体主站 | 简体主站 | 基础篇 | 伺服器 | 企业应用 | 桌面应用 | 安全管理 | 讨论板 | 酷学园 | 书籍戡误 | 鸟哥我 | 昆山资传 |
本网页主要以firefox配合解析度1024x768作为设计依据http://linux.vbird.org is
designed by VBird during 2001-2011. ksu.edu
第五章、Linux常用网路指令
5.1.1 手动/自动设定与启动/关闭IP参数:ifconfig , ifup, ifdown 5.1.2 路由修改: route 5.1.3 网路参数综合指令: ip 5.1.4 无线网路: iwlist, iwconfig 5.1.5 手动使用DHCP自动取得IP参数:dhclient 5.2 网路侦错与观察指令 5.2.1 两部主机两点沟通: ping , 用ping追踪路径中的最大MTU数值 5.2.2 两主机间各节点分析: traceroute 5.2.3 察看本机的网路连线与后门: netstat 5.2.4 侦测主机名称与IP对应:host , nslookup 5.3 远端连线指令与即时通讯软体 5.3.1 终端机与BBS连线: telnet 5.3.2 FTP连线软体:ftp , lftp (自动化脚本) 5.3.3 图形介面的即时通讯软体: pidgin (gaim的延伸) 5.4 文字介面网页浏览 5.4.1 文字浏览器: links 5.4.2 文字介面下载器: wget 5.5 封包撷取功能 5.5.1 文字介面封包撷取器: tcpdump 5.5.2 图形介面封包撷取器: wireshark 5.5.3 任意启动TCP/UDP封包的埠口连线: nc, netcat 5.6 重点回顾 5.7 本章习题 5.8 参考资料与延伸阅读 5.9 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=26123 5.1 网路参数设定使用的指令 任何时刻如果你想要做好你的网路参数设定,包括IP 参数、路由参数与无线网路等等,就得要了解底下这些相关的指令才行!其中以 ifconfig 及route 这两支指令算是较重要的喔!^_^!当然,比较新鲜的作法,可以使用ip 这个汇整的指令来设定IP 参数啦! ifconfig :查询、设定网路卡与IP网域等相关参数; ifup, ifdown:这两个档案是script,透过更简单的方式来启动网路介面; route :查询、设定路由表(route table) ip :复合式的指令,可以直接修改上述提到的功能; 5.1.1 手动/自动设定与启动/关闭IP 参数: ifconfig, ifup, ifdown 这三个指令的用途都是在启动网路介面,不过, ifup 与ifdown 仅能就/etc/sysconfig/network-scripts 内的ifcfg-ethX (X 为数字) 进行启动或关闭的动作,并不能直接修改网路参数,除非手动调整ifcfg-ethX 档案才行。至于ifconfig 则可以直接手动给予某个介面IP 或调整其网路参数!底下我们就分别来谈一谈! ifconfig ifconfig 主要是可以手动的启动、观察与修改网路介面的相关参数,可以修改的参数很多啊,包括IP 参数以及MTU 等等都可以修改,他的语法如下:
eth0,则仅会秀出这张介面的相关资料,而不管该介面是否有启动。所以如果你想要知道某张网路卡的Hardware Address,直接输入『 ifconfig "网路介面代号" 』即可喔!^_^!至于上表出现的各项资料是这样的(资料排列由上而下、由左而右): eth0:就是网路卡的代号,也有lo这个loopback ; HWaddr:就是网路卡的硬体位址,俗称的MAC是也; inet addr:IPv4的IP位址,后续的Bcast, Mask分别代表的是Broadcast与netmask喔! inet6 addr:是IPv6的版本的IP ,我们没有使用,所以略过; MTU:就是第二章谈到的 MTU啊! RX:那一行代表的是网路由启动到目前为止的封包接收情况, packets代表封包数、errors代表封包发生错误的数量、 dropped代表封包由于有问题而遭丢弃的数量等等 TX:与RX相反,为网路由启动到目前为止的传送情况; collisions:代表封包碰撞的情况,如果发生太多次,表示你的网路状况不太好; txqueuelen:代表用来传输资料的缓冲区的储存长度; RX bytes, TX bytes:总接收、传送的位元组总量 透过观察上述的资料,大致上可以了解到你的网路情况,尤其是那个RX, TX 内的error 数量, 以及是否发生严重的collision 情况,都是需要注意的喔!^_^
eth0 up即可!这个动作经常在无线网卡当中会进行,因为我们必须要启动无线网卡让他去侦测AP存在与否啊! ifup, ifdown 即时的手动修改一些网路介面参数,可以利用ifconfig 来达成,如果是要直接以设定档, 亦即是在/etc/sysconfig/network-scripts 里面的ifcfg-ethx 等档案的设定参数来启动的话,那就得要透过ifdown 或ifup 来达成了。
不过,由于这两支程式主要是搜寻设定档(ifcfg-ethx)来进行启动与关闭的,所以在使用前请确定ifcfg-ethx是否真的存在于正确的目录内,否则会启动失败喔!另外,如果以ifconfig eth0 ....来设定或者是修改了网路介面后,那就无法再以ifdown eth0的方式来关闭了!因为ifdown会分析比对目前的网路参数与ifcfg-eth0是否相符,不符的话,就会放弃该次动作。因此,使用ifconfig修改完毕后,应该要以ifconfig eth0 down才能够关闭该介面喔! 5.1.2 路由修改: route 我们在第二章网路基础的时候谈过关于路由的问题,两部主机之间一定要有路由才能够互通TCP/IP的协定,否则就无法进行连线啊!一般来说,只要有网路介面,该介面就会产生一个路由,所以我们安装的主机有一个eth0的介面,看起来就会是这样:
= 0.0.0.0/0.0.0.0,而上面的资讯有哪些你必须要知道的呢? Destination, Genmask:这两个玩意儿就是分别是network与netmask啦!所以这两个咚咚就组合成为一个完整的网域啰! Gateway:该网域是通过哪个gateway连接出去的?如果显示0.0.0.0表示该路由是直接由本机传送,亦即可以透过区域网路的MAC直接传讯;如果有显示IP的话,表示该路由需要经过路由器(通讯闸)的帮忙才能够传送出去。 Flags:总共有多个旗标,代表的意义如下: U (route is up):该路由是启动的; H (target is a host):目标是一部主机(IP) 而非网域; G (use gateway):需要透过外部的主机(gateway) 来转递封包; R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标; D (dynamically installed by daemon or redirect):已经由服务或转port 功能设定为动态路由 M (modified from routing daemon or redirect):路由已经被修改了; ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!) Iface:这个路由传递封包的介面。 此外,观察一下上面的路由排列顺序喔,依序是由小网域(192.168.1.0/24是Class C),逐渐到大网域(169.254.0.0/16 Class B)最后则是预设路由( 0.0.0.0/0.0.0.0)。然后当我们要判断某个网路封包应该如何传送的时候,该封包会经由这个路由的过程来判断喔!举例来说,我上头仅有三个路由,若我有一个传往192.168.1.20的封包要传递,那首先会找192.168.1.0/24这个网域的路由,找到了!所以直接由eth0传送出去; 如果是传送到Yahoo 的主机呢?Yahoo 的主机IP 是119.160.246.241,我们通过判断1)不是192.168.1.0/24, 2)不是169.254.0.0/16 结果到达3)0/0 时,OK!传出去了,透过eth0 将封包传给192.168.1.254 那部gateway 主机啊!所以说,路由是有顺序的。 因此当你重复设定多个同样的路由时, 例如在你的主机上的两张网路卡设定为相同网域的IP 时,会出现什么情况?会出现如下的情况:
5.1.3 网路参数综合指令: ip ip 是个指令喔!并不是那个TCP/IP 的IP 啦!这个ip 指令的功能可多了!基本上,他就是整合了ifconfig 与route 这两个指令啰~不过, ip 可以达成的功能却又多更多!真是个相当厉害的指令。如果你有兴趣的话,请自行 vi /sbin/ifup ,就知道整个ifup 就是利用ip 这个指令来达成的。好了,如何使用呢?让我们来瞧一瞧先!
关于装置介面(device) 的相关设定: ip link ip link 可以设定与装置(device) 有关的相关参数,包括MTU 以及该网路介面的MAC 等等,当然也可以启动(up) 或关闭 (down) 某个网路介面啦!整个语法是这样的:
关于额外的IP 相关设定: ip address 如果说ip link是与OSI七层协定 的第二层资料连阶层有关的话,那么ip address (ip addr)就是与第三层网路层有关的参数啦!主要是在设定与IP有关的各项参数,包括netmask, broadcast等等。
这个项目当然就是路由的观察与设定啰!事实上, ip route 的功能几乎与route 这个指令差不多,但是,他还可以进行额外的参数设计,例如MTU 的规划等等,相当的强悍啊!
proto:此路由的路由协定,主要有redirect, kernel, boot, static, ra 等, 其中kernel 指的是直接由核心判断自动设定。 scope:路由的范围,主要是link ,亦即是与本装置有关的直接连线。 再来看一下如何进行路由的增加与删除吧!
5.1.4 无线网路: iwlist, iwconfig 这两个指令你必须要有无线网卡才能够进行喔!这两个指令的用途是这样的: iwlist:利用无线网卡进行无线AP 的侦测与取得相关的资料; iwconfig:设定无线网卡的相关参数。 这两个指令的应用我们在第四章里面的无线网卡设定谈了很多了,所以这里我们不再详谈,有兴趣的朋友应该先使用man iwlist与man iwconfig了解一下语法,然后再到前一章的无线网路小节查一查相关的用法,就了解了啦!^_^ 5.1.5 手动使用DHCP 自动取得IP 参数: dhclient 如果你是使用DHCP 协定在区域网路内取得IP 的话,那么是否一定要去编辑ifcfg-eth0 内的BOOTPROTO 呢?嘿嘿!有个更快速的作法,那就是利用dhclient 这个指令~因为这个指令才是真正发送dhcp 要求工作的程式啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:
5.2 网路侦错与观察指令 在网路的互助论坛中,最常听到的一句话就是:『高手求救!我的Linux不能连上网路了!』我的天呐!不能上网路的原因多的很!而要完全搞懂也不是一件简单的事情呢!不过,事实上我们可以自己使用测试软体来追踪可能的错误原因,而很多的网路侦测指令其实在Linux里头已经都预设存在了,只要你好好的学一学基本的侦测指令,那么一些朋友在告诉你如何侦错的时候,你应该就立刻可以知道如何来搞定他啰! 其实我们在第四章谈到的五个检查步骤已经是相当详细的网路侦错流程了!只是还有些重要的侦测指令也得要来了解一下才好! 5.2.1 两部主机两点沟通: ping 这个ping是很重要的指令,ping主要透过ICMP封包 来进行整个网路的状况报告,当然啦,最重要的就是那个ICMP type 0, 8这两个类型,分别是要求回报与主动回报网路状态是否存在的特性。要特别注意的是, ping还是需要透过 IP封包来传送ICMP封包的,而IP封包里面有个相当重要的TTL属性,这是很重要的一个路由特性,详细的IP与ICMP表头资料请参考第二章网路基础的详细介绍。
64 bytes:表示这次传送的ICMP封包大小为64 bytes这么大,这是预设值,在某些特殊场合中,例如要搜索整个网路内最大的MTU时,可以使用-s 2000之类的数值来取代; icmp_seq=1:ICMP所侦测进行的次数,第一次编号为1 ; ttl=243:TTL与IP封包内的TTL是相同的,每经过一个带有MAC的节点(node)时,例如router, bridge时, TTL就会减少一,预设的TTL为255 ,你可以透过-t 150之类的方法来重新设定预设TTL数值; time=15.4 ms:回应时间,单位有ms(0.001秒)及us(0.000001秒),一般来说,越小的回应时间,表示两部主机之间的网路连线越良好! 如果你忘记加上-c 3 这样的规定侦测次数,那就得要使用[ctrl]-c 将他结束掉了!
用ping追踪路径中的最大MTU数值 我们由第二章的网路基础里面谈到加大讯框(frame)时,对于网路效能是有帮助的,因为封包打包的次数会减少,加上如果整个传输的媒体都能够接受这个frame而不需要重新进行封包的拆解与重组的话,那么效能当然会更好,那个修改frame大小的参数就是 MTU啦! 好了,现在我们知道网路卡的MTU修改可以透过ifconfig或者是ip 等指令来达成,那么追踪整个网路传输的最大MTU时,又该如何查询?呵呵!最简单的方法当然是透过ping传送一个大封包,并且不许中继的路由器或switch将该封包重组,那就能够处理啦!没错!可以这样的:
size的时候,那个封包的大小就得要先扣除(20+8=28)的大小了。因此如果要使用MTU为1500时,就得要下达『 ping -s 1472 -M do xx.yy.zz.ip 』才行啊! 另外,由于本地端的网路卡MTU也会影响到侦测,所以如果想要侦测整个传输媒体的MTU数值,那么每个可以调整的主机就得要先使用ifcofig或ip先将MTU调大,然后再去进行侦测,否则就会出现像上面提供的案例一样,可能会出现错误讯息的! 不过这个MTU不要随便调整啊!除非真的有问题。通常调整MTU的时间是在这个时候: 因为全部的主机群都是在内部的区网,例如丛集架构(cluster) 的环境下, 由于内部的网路节点都是我们可以控制的,因此可以透过修改MTU 来增进网路效能; 因为作业系统预设的MTU 与你的网域不符,导致某些网站可以顺利连线,某些网站则无法连线。以Windows 作业系统作为连线分享的主机时,在Client 端挺容易发生这个问题; 如果是要连上Internet 的主机,注意不要随便调整MTU ,因为我们无法知道Internet 上面的每部机器能够支援的MTU 到多大,因为......不是我们能够管的到的嘛^_^ !另外,其实每种连线方式都有不同的MTU 值,常见的各种介面的MTU 值分别为︰
5.2.2 两主机间各节点分析: traceroute 我们前面谈到的指令大多数都是针对主机的网路参数设定所需要的,而ping 是两部主机之间的回声与否判断, 那么有没有指令可以追踪两部主机之间通过的各个节点(node) 通讯状况的好坏呢?举例来说,如果我们连线到yahoo 的速度比平常慢,你觉得是(1)自己的网路环境有问题?(2)还是外部的Internet 有问题?如果是(1) 的话,我们当然需要检查自己的网路环境啊,看看是否又有谁中毒了?但如果是Internet 的问题呢?那只有『等等等』啊!判断是(1) 还是(2) 就得要使用traceroute 这个指令啦!
比较特殊的算是第10/12 个,会回传星号的,代表该node 可能设有某些防护措施,让我们发送的封包资讯被丢弃所致。因为我们是直接透过路由器转递封包,并没有进入路由器去取得路由器的使用资源,所以某些路由器仅支援封包转递, 并不会接受来自用户端的各项侦测啦!此时就会出现上述的问题。因为traceroute 预设使用UDP 封包,如果你想尝试使用其他封包, 那么-I 或-T 可以试看看啰! 由于目前UDP/ICMP 的攻击层出不穷,因此很多路由器可能就此取消这两个封包的回应功能。所以我们可以使用TCP 来侦测呦!例如使用同样的方法,透过等待时间1 秒,以及TCP 80 埠口的情况下,可以这样做:
5.2.3 察看本机的网路连线与后门: netstat 如果你觉得你的某个网路服务明明就启动了,但是就是无法造成连线的话,那么应该怎么办?首先你应该要查询一下自己的网路介面所监听的埠口(port) 来看看是否真的有启动,因为有时候萤幕上面显示的[OK] 并不一定是OK 啊!^_^
通常鸟哥都是建议加上『 -n 』这个参数的,因为可以避过主机名称与服务名称的反查,直接以IP 及埠口号码(port number) 来显示,显示的速度上会快很多!至于在输出的讯息当中, 我们先来谈一谈关于网路连线状态的输出部分,他主要是分为底下几个大项: Proto:该连线的封包协定,主要为TCP/UDP等封包; Recv-Q:非由使用者程式连接所复制而来的总bytes数; Send-Q:由远端主机所传送而来,但不具有ACK标志的总bytes数,意指主动连线SYN或其他标志的封包所占的bytes数; Local Address:本地端的位址,可以是IP (-n参数存在时),也可以是完整的主机名称。使用的格是就是『 IP:port 』只是IP的格式有IPv4及IPv6的差异。如上所示,在port 22的介面中,使用的:::22就是针对IPv6的显示,事实上他就相同于0.0.0.0:22的意思。至于port 25仅针对lo介面开放,意指Internet基本上是无法连接到我本机的25埠口啦! Foreign Address:远端的主机IP与port number stat:状态列,主要的状态含有: ESTABLISED:已建立连线的状态; SYN_SENT:发出主动连线(SYN标志)的连线封包; SYN_RECV:接收到一个要求连线的主动连线封包; FIN_WAIT1:该插槽服务(socket)已中断,该连线正在断线当中; FIN_WAIT2:该连线已挂断,但正在等待对方主机回应断线确认的封包; TIME_WAIT:该连线已挂断,但socket还在网路上等待结束; LISTEN:通常用在服务的监听port !可使用『 -l 』参数查阅。 基本上,我们常常谈到的netstat的功能,就是在观察网路的连线状态了,而网路连线状态中,又以观察『我目前开了多少的port在等待用户端的连线』以及『目前我的网路连线状态中,有多少连线已建立或产生问题』最常见。那你如何了解与观察呢?通常鸟哥是这样处理的:
至于传统的Unix socket 的资料,记得使用man netstat 查阅一下吧!这个Unix socket 通常是用在一些仅在本机上运作的程式所开启的插槽介面档, 例如X Window 不都是在本机上运作而已吗?那何必启动网路的port 呢?当然可以使用Unix socket 啰,另外,例如Postfix 这一类的网路伺服器,由于很多动作都是在本机上头来完成的, 所以以会占用很多的Unix socket 喔!
5.2.4 侦测主机名称与IP 对应: host, nslookup 关于主机名称与IP 的对应中,我们主要介绍的是DNS 用户端功能的dig 这个指令。不过除了这个指令之外, 其实还有两个更简单的指令,那就是host 与nslookup 啦!底下让我们来聊聊这两个指令吧! host 这个指令可以用来查出某个主机名称的IP 喔!举例来说,我们想要知道tw.yahoo.com 的IP 时,可以这样做:
nslookup 这玩意儿的用途与host基本上是一样的,就是用来作为IP与主机名称对应的检查,同样是使用/etc/resolv.conf 这个档案来作为DNS伺服器的来源选择。
5.3 远端连线指令与即时通讯软体 啥是远端连线呢?其实就是在不同的电脑之间进行登入的情况啦!我们可以透过telnet, ssh 或者是ftp 等协定来进行远端主机的登入。底下我们就分别来介绍一下这些基本的指令吧!这里仅是谈到用户端功能喔, 相关的伺服器我们则会在后续进行说明的。 5.3.1 终端机与BBS 连线: telnet telnet是早期我们在个人电脑上面要连结到伺服器工作时,最重要的一个软体了!他不但可以直接连接到伺服器上头,还可以用来连结BBS呢!非常棒!不过, telnet本身的资料在传送的时候是使用明码(原始的资料,没有加密) ,所以资料在Internet上面跑的时候,会比较危险一点(就怕被别人监听啊)。更详细的资料我们会在第十一章远端连线伺服器内做介绍的。
除了连结到伺服器以及连结到BBS 站之外, telnet 还可以用来连结到某个port (服务) 上头呐!举例来说,我们可以用telnet 连接到port 110 ,看看这个port 是否有正确的启动呢?
5.3.2 FTP 连线软体: ftp, lftp 现在的人们由于有高容量的email 可以用,因此传送档案可以很轻松的透过email 。不过email 还是有单封信件容量限制, 如果想要一口气传送个几百MB 的档案,恐怕还是得要透过FTP 这个通讯协定才行啊!文字介面的FTP 软体主要有ftp, lftp 两个,图形介面的呢?在CentOS 上面预设有gftp 这个好用的东东。在这里我们仅介绍文字介面的两个指令而已。 ftp ftp 这个指令很简单,用在处理FTP 伺服器的下载资料啦。由于鸟哥所在的位置在昆山科大,因此这里使用昆山科大的FTP 伺服器为例:
』所以直接填写那个帐号即可。如果是私人的FTP时,才需要提供一组完整的帐号与密码啦! 登入FTP 主机后,就能够使用ftp 软体的功能进行上传与下载的动作,几个常用的ftp 内指令如上表,不过,鸟哥建议你可以连到大学的FTP 网站后,使用help (或问号? ) 来参考可用的指令,然后尝试下载以测试使用一下这个指令吧!这样以后没有浏览器的时候,你也可以到ftp 下载了呢!不错吧!另外你要注意的是,离开ftp 软体时,得要输入『 bye 』喔!不是『 exit 』啦! 如果由于某些理由,让你的FTP 主机的port 开在非正规的埠口时,那你就可以利用底下的方式来连接到该部主机喔!
单纯使用ftp 总是觉得很麻烦,有没有更快速的ftp 用户软体呢?让我们可以使用类似网址列的方式来登入FTP 伺服器啊?有的,那就是lftp 的功能了!lftp 预设使用匿名登入FTP 伺服器,可以使用类似网址列的方式取得资料, 使用上比单纯的ftp 要好用些。此外,由于可在指令列输入帐号/密码,可以辅助进行程式脚本的设计喔!
如果你想要定时的去捉下昆山科大FTP 网站下的/pub/CentOS/RPM-GPG* 的档案时,那么那个脚本应该要怎么写呢?我们尝试来写写看吧!
5.3.3 图形介面的即时通讯软体: pidgin (gaim 的延伸) 现在应该大家都知道什么是MSN, 雅虎即时通以及其他的通讯软体吧?那么要连上这些伺服器时,该怎么处理哪?很简单,在 X Window 底下使用pidgin 就好了!简直简单到不行~请先进入X Window 系统,然后经过『应用程式』--> 『网际网路』-->『Pidgin 网路即时通』启动他即可(请注意你必须已经安装了pidgin 了,可用yum install pidgin 处理)。 不过,伤脑筋的是,我们所安装的basic server 类型的CentOS 6.x 主要做为伺服器之用,所以连图形介面也没有给我们。所以,鸟哥又用另外一部主机安装成Desktop 的模式,利用该部主机来测试pidgin 这玩意儿的!因此, 底下的练习你也可以先略过,等到你安装另一部Desktop linux 时再来玩玩! 图5.3-1、pidgin 的欢迎画面 在上图中按下『新增』,然后你会看到如下的画面: 图5.3-2、pidgin 支援的即时通讯资料 很神奇的是, pidgin 支援的通讯有够多的!我们使用MSN 来作个解释好了: 图5.3-3、设定MSN 的帐号示意图 如上图,在画面中输入你的帐号与密码,如果是在公用的电脑上,千万不要按下『记住密码』项目喔!按下新增后, pidgin 预设就会尝试登入了!登入后的画面如下所示: 图5.3-4、使用pidgin 的MSN 方式进行连天啰 如果想要登出了,那么就按下图5.3-4 最右边那个视窗,将『启动』的那个方框勾选取消,你就直接登出啰! 5.4 文字介面网页浏览 什么?文字界面竟然有浏览器!别逗了好不好?呵呵!谁有那个时间在逗你呦!真的啦!有这个东西, 是在文字界面下上网浏览的好工具!分别是links 及wget 这两个宝贝蛋,但是,你必需要确定你已经安装了这两个套件才行。好佳在的是,CentOS 预设这两个玩意儿都有安装喔!底下就让我们来聊一聊这两个好用的家伙吧! 5.4.1 文字浏览器:links 其实早期鸟哥最常使用的是lynx 这个文字浏览器,不过CentOS 从5.x 以后预设使用的文字浏览器是links 这一支,这两支的使用方式又非常的类似,因此,在这一版当中,我们就仅介绍links 啰!若对lynx 有兴趣的话, 自己man 一下吧! 这个指令可以让我们来浏览网页,但鸟哥认为,这个档案最大的功能是在『 查阅Linux本机上面以HTML语法写成的文件资料(document)』怎么说呢?如果你曾经到Linux本机底下的/usr/share/doc这个目录看过文件资料的话,就会常常发现一些网页档案,使用vi去查阅时,老是看到一堆HTML的语法!有碍阅读啊~这时候使用links就是个好方法啦!可以看的清清楚楚啊!^_^
图5.4-1、使用links 查询网页资料的显示结果 上面这个画面的基本说明如下: 进入画面之后,由于是文字型态,所以编排可能会有点位移!不过不打紧!不会影响我们看咚咚! 这个时候可以使用『上下键』来让游标在上面的选项当中(如信箱、书签等等的),按下Enter 就进入该页面 可以使用『左右键』来移动『上一页或下一页』 一些常见功能按键: h:history ,曾经浏览过的URL 就显示到画面中 g:Goto URL,按g 后输入网页位址(URL) 如:http://www.abc.edu/等 d:download,将该连结资料下载到本机成为档案; q:Quit,离开links 这个软体; o:Option,进入功能参数的设定值修改中,最终可写入~/.elinks/elinks.conf 中 Ctrl+C :强迫切断links 的执行。 方向键: 上:移动游标至本页中"上一个可连结点" . 下:移动游标至本页中"下一个可连结点" . 左:back. 跳回上一页. 右:进入反白游标所连结之网页. ENTER 同滑鼠"右" 键. 至于如果是浏览Linux 本机上面的网页档案,那就可以使用如下的方式:
图5.4-2、使用links 查询本机的HTML 文件档案 当然啦!因为你的环境可能是在Linux 本机的tty1~tty6 ,所以无法显示出中文,这个时候你就得要设定为: 『LANG=en_US』之类的语系设定才行喔!另外,如果某些时刻你必须上网点选某个网站以自动取得更新时。举例来说,早期的自动线上更新主机名称系统,仅支援网页更新,那你如何进行更新呢?嘿嘿!可以使用links 喔!利用 -dump 这个参数处理先:
伺服器当中再次的提及! 5.4.2 文字介面下载器: wget 如果说links 是在进行网页的『浏览』,那么wget 就是在进行『网页资料的取得』。举例来说,我们的Linux 核心是放置在www.kernel.org 内,主要同时提供ftp 与http 来下载。我们知道可以使用lftp 来下载资料,但如果想要用浏览器来下载呢?那就利用wget 吧!
5.5 封包撷取功能 很多时候由于我们的网路连线出现问题,使用类似ping的软体功能却又无法找出问题点,最常见的是因为路由与IP转递后所产生的一些困扰(请参考防火墙与NAT主机部分),这个时候要怎么办?最简单的方法就是『分析封包的流向』啰!透过分析封包的流向,我们可以了解一条连线应该是如何进行双向的连线的动作,也就会清楚的了解到可能发生的问题所在了!底下我们就来谈一谈这个tcpdump与图形介面的封包分析软体吧! 5.5.1 文字介面封包撷取器: tcpdump 说实在的,对于tcpdump这个软体来说,你甚至可以说这个软体其实就是个骇客软体,因为他不但可以分析封包的流向,连封包的内容也可以进行『监听』,如果你使用的传输资料是明码的话,不得了,在router或hub上面就可能被人家监听走了!我们在[url=http://linux.vbird.org/linux_server/0110network_basic.php#tcpip_link_csmacd]第二章谈到的CSMA/CD 流程中,不是说过有所谓的『监听软体』吗?这个tcpdump就是啦!很可怕呐!所以,我们也要来了解一下这个软体啊!(注:这个tcpdump必须使用root的身份执行)
17:01:47.362139:这个是此封包被撷取的时间,『时:分:秒』的单位; IP:透过的通讯协定是IP ; 192.168.1.100.22 >:传送端是192.168.1.100这个IP,而传送的port number为22,你必须要了解的是,那个大于(>)的符号指的是封包的传输方向喔! 192.168.1.101.1937:接收端的IP是192.168.1.101,且该主机开启port 1937来接收; [P.], seq 196:472:这个封包带有PUSH的资料传输标志,且传输的资料为整体资料的196~472 byte; ack 1:ACK的相关资料。 最简单的说法,就是该封包是由192.168.1.100传到192.168.1.101,透过的port是由22到1937 ,使用的是PUSH的旗标,而不是SYN之类的主动连线标志。呵呵!不容易看的懂吧!所以说,上头才讲请务必到TCP表头资料的部分去瞧一瞧的啊! 再来,一个网路状态很忙的主机上面,你想要取得某部主机对你连线的封包资料而已时, 使用tcpdump 配合管线命令与正规表示法也可以,不过,毕竟不好捉取!我们可以透过tcpdump 的表示法功能,就能够轻易的将所需要的资料独立的取出来。在上面的范例一当中,我们仅针对eth0 做监听,所以整个eth0 介面上面的资料都会被显示到萤幕上, 不好分析啊!那么我们可以简化吗?例如只取出port 21 的连线封包,可以这样做:
我们先在一个终端机视窗输入『 tcpdump -i lo -nn 』 的监听, 再另开一个终端机视窗来对本机(127.0.0.1) 登入『ssh localhost』 那么输出的结果会是如何?
第3 行显示的是『来自client 端,带有SYN 主动连线的封包』, 第4 行显示的是『来自server 端,除了回应client 端之外(ACK),还带有SYN 主动连线的标志; 第5 行则显示client 端回应server 确定连线建立(ACK) 第6 行以后则开始进入资料传输的步骤。 从第3-5行的流程来看,熟不熟悉啊?没错!那就是三向交握的基础流程啦!够有趣吧!不过tcpdump之所以被称为骇客软体之一可不止上头介绍的功能呐!上面介绍的功能可以用来作为我们主机的封包连线与传输的流程分析,这将有助于我们了解到封包的运作,同时了解到主机的防火墙设定规则是否有需要修订的地方。 更神奇的使用要来啦!如果我们使用tcpdump 在router 上面监听『明码』的传输资料时, 例如FTP 传输协定,你觉得会发生什么问题呢?我们先在主机端下达『 tcpdump -i lo port 21 -nn -X 』然后再以ftp 登入本机,并输入帐号与密码, 结果你就可以发现如下的状况:
另外你得了解,为了让网路介面可以让tcpdump 监听,所以执行tcpdump 时网路介面会启动在『错乱模式(promiscuous)』,所以你会在/var/log/messages 里面看到很多的警告讯息, 通知你说你的网路卡被设定成为错乱模式!别担心,那是正常的。至于更多的应用,请参考man tcpdump 啰!
5.5.2 图形介面封包撷取器: wireshark tcpdump是文字介面的封包撷取器,那么有没有图形介面的?有啊!那就是wireshark ( 注1 )这套软体。这套软体早期称为ethereal ,目前同时提供文字介面的tethereal以及图形介面的wireshark两个咚咚。由于我们当初安装时预设并没有装这套,因此妳必须要先使用yum去网路安装喔!也可以拿出光碟来安装啦!有两套需要安装,分别是文字介面的wireshark以及图形介面的wireshark-gnome软体。安装方式如下:
图5.5-1、wireshark 的使用示意图 其实这一套软体功能非常强大!鸟哥这里仅讲简单的用法,若有特殊需求,就得要自己找找资料啰。想要开始撷取封包前,得要设定一下监听的介面之类的,因此点选图5.5-1 画面中的网路卡小图示吧!就会出现如下的画面给你选择了。 图5.5-2、wireshark 的使用示意图 在上图中,你得先选择想要监听的介面,鸟哥这里因为担心外部的封包太多导致画面很乱,因此这里使用内部的lo 介面来作为范例。你得要注意, lo 平时是很安静的!所以,鸟哥在点选了『start』之后,还有打开终端机, 之后使用『 ssh localhost 』来尝试登入自己,这样才能够获得封包喔!如下图所示: 图5.5-3、wireshark 的使用示意图 若没有问题,等到你撷取了足够的封包想要进行分析之后,按下图5.5-3 画面中的停止小图示,那么封包撷取的动作就会终止, 接下来,就让我们来开始分析一下封包吧! 图5.5-4、wireshark 的使用示意图 整个分析的画面如上所示,画面总共分为三大区块,你可以将滑鼠游标移动到每个区块中间的移动棒, 就可以调整每个区块的范围大小了。第一区块主要显示的是封包的标头资料,内容就有点类似tcpdump 的显示结果,第二区块则是详细的表头资料,包括讯框的内容、通讯协定的内容以及socket pair 等等资讯。第三区块则是16 进位与ASCII 码的显示结果(详细的封包内容)。 如果你觉得某个封包有问题,在画面1 的地方点选该封包(图例中是第6 个封包),那么画面2 与3 就会跟着变动!由于鸟哥测试的封包是加密资料的封包,因此画面2 显示出封包表头,但画面3 的封包内容就是乱码啦!透过这个wireshark 你就可以一口气得到所需要的所有封包内容啦!而且还是图形介面的,很方便吧! 5.5.3 任意启动TCP/UDP 封包的埠口连线: nc, netcat 这个nc 指令可以用来作为某些服务的检测,因为他可以连接到某个port 来进行沟通,此外,还可以自行启动一个port 来倾听其他用户的连线呐!非常的不错用!如果在编译nc 软体的时候给予『GAPING_SECURITY_HOLE』参数的话,嘿嘿!这个软体还可以用来取得用户端的bash 哩!可怕吧!我们的CentOS 预设并没有给予上面的参数, 所以我们不能够用来作为骇客软体~但是nc 用来取代telnet 也是个很棒的功能了!(有的系统将执行档nc 改名为 netcat 啦!)
5.6 重点回顾 修改网路介面的硬体相关参数,可以使用ifconfig 这个指令,包括MTU 等等; ifup 与ifdown 其实只是script ,在使用时,会主动去/etc/sysconfig/network-scripts 下找到相对应的装置设定档,才能够正确的启动与关闭; 路由的修改与查阅可以使用route 来查询,此外, route 亦可进行新增、删除路由的工作; ip 指令可以用来作为整个网路环境的设定,利用ip link 可以修改『网路装置的硬体相关功能』, 包括MTU 与MAC 等等,可以使用ip address 修改TCP/IP 方面的参数,包括IP以及网域参数等等, ip route 则可以修改路由! ping 主要是透过ICMP 封包来进行网路环境的检测工作,并且可以使用ping 来查询整体网域可接受最大的MTU 值; 侦察每个节点的连线状况,可以使用traceroute 这个指令来追踪! netstat 除了可以观察本机的启动介面外,还可以观察Unix socket 的传统插槽介面资料; host 与nslookup 预设都是透过/etc/resolv.conf 内设定的DNS 主机来进行主机名称与IP 的查询; lftp 可以用来匿名登入远端的FTP 主机; links 主要的功能是『浏览』,包括本机上HTML 语法的档案, wget 则主要在用来下载WWW 的资料; 撷取封包以分析封包的流向,可使用tcpdump ,至于图形介面的wireshark 则可以进行更为详细的解析。 透过tcpdump 分析三向交握,以及分析明码传输的资料,可发现网路加密的重要性。 nc 可用来取代telnet 进行某些服务埠口的检测工作。 5.7 本章习题 暂时将你的eth0 这张网路卡的IP 设定为192.168.1.100 ,如何进行? ifconfig eth0 192.168.1.100 我要增加一个路由规则,以eth0 连接192.168.100.100/24 这个网域,应该如何下达指令? route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0 我的网路停顿的很厉害,尤其是连接到tw.yahoo.com 的时候,那么我应该如何检查那个环节出了问题? traceroute tw.yahoo.com 我发现我的Linux 主机上面有个连线很怪异,想要将他断线,应该如何进行? 以root 的身份进行『netstat -anp |more』查出该连线的PID,然后以『 kill -9 PID 』踢掉该连线。 你如何知道green.ev.ncku.edu.tw 这部主机的IP ? 方法很多,可以利用host green.ev.ncku.edu.tw 或dig green.ev.ncku.edu.tw 或nslookup green.ev.ncku.edu.tw 等方法找出 请找出你的机器上面最适当的MTU 应该是多少? 请利用『ping -c 3 -M do -s MTU yourIP 』找出你的IP 的MTU 数值。事实上,你还可以先以ip 设定网路卡较大的MTU 后,在进行上述的动作,才能够找出网域内适合的MTU。 如何在终端机介面上面进行WWW 浏览?又该如何下载WWW 上面提供的档案? 要浏览可以使用links 或lynx ,至于要下载则使用wget 这个软体。 在终端机介面中,如何连接bbs.sayya.org 这个BBS ? 利用telnet bbs.sayya.org 即可连接上 请自行以tcpdump 观察本机端的ssh 连线时,三向交握的内容 请自行回答:为何使用明码传输的网路连线资料较为危险?并自行以软体将封包取出,并与同学讨论封包的资讯 请自行至Internet 下载nc(netcat) 的原始码,并且编译成为具有GAPING_SECURITY_HOLE 的参数, 然后建立一条连线使用-e /bin/bash 尝试将本地端的bash 丢给目的端执行(特殊功能,可让client取得来自主机的bash)。 5.8 参考资料与延伸阅读 注1:wireshark的官网网址:http://www.wireshark.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等指令! 2010/08/28:将旧的,基于CentOS 4.x所撰写的文章放置于此处 2010/09/03:加入links取消lynx,ethereal改成wireshark,gaim改成pidgin了,nc指令的用法跟前几版有点不同。 2011/07/18:将基于CentOS 5.x的文章移动到此处 2011/07/18:将资料修订为CentOS 6.x的模样!不过tcpdump的变化不大,部分资料为CentOS 5.x的撷取示意! 2002/07/31以来统计人数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本网页主要以firefox配合解析度1024x768作为设计依据http://linux.vbird.org is
designed by VBird during 2001-2011. ksu.edu
相关文章推荐
- linux网络参数配置方法详解
- sysctl优化linux网络
- 初学linux_centos7网络配置
- Linux netstat命令详解
- 高效学习Linux驱动开发
- Linux C高级编程——网络编程之以太网(2)
- Linux C高级编程——网络编程之UDP(4)
- TCP_CORK: More than you ever wanted to know
- linux网络配置 ifcfg-eth 文件配置
- linux配置dhcp中继服务
- Linux的发展方向
- Linux系统与windows服务器区别
- 《虚拟机下的Linux的IP地址每次启动时会自动变化,可否让其固定》
- arm linux开发板自动配置IP地址
- 每日一linux命令(44)-------netstat命令
- 每日一linux命令(42)-------ping命令
- 每日一linux命令(40)-------ifconfig命令
- 一篇文章完全搞清楚 scoket read/write 返回码、阻塞与非阻塞、异常处理 等让你头疼已久的问题
- linux(centos)使用NAT方式连接网络
- 端口分类