原文地址:http://linux.vbird/linux_server/0140networkcommand.phpadmin管理员组文章数量:1130349
第五章、Linux常用网路指令
5.1 网路参数设定使用的指令 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/viewtopic.php?t=26123 5.1 网路参数设定使用的指令 任何时刻如果你想要做好你的网路参数设定,包括IP 参数、路由参数与无线网路等等,就得要了解底下这些相关的指令才行!其中以 ifconfig 及route 这两支指令算是较重要的喔!^_^!当然,比较新鲜的作法,可以使用ip 这个汇整的指令来设定IP 参数啦!
5.1.1 手动/自动设定与启动/关闭IP 参数: ifconfig, ifup, ifdown 这三个指令的用途都是在启动网路介面,不过, ifup 与ifdown 仅能就/etc/sysconfig/network-scripts 内的ifcfg-ethX (X 为数字) 进行启动或关闭的动作,并不能直接修改网路参数,除非手动调整ifcfg-ethX 档案才行。至于ifconfig 则可以直接手动给予某个介面IP 或调整其网路参数!底下我们就分别来谈一谈!
ifconfig 主要是可以手动的启动、观察与修改网路介面的相关参数,可以修改的参数很多啊,包括IP 参数以及MTU 等等都可以修改,他的语法如下:
一般来说,直接输入ifconfig就会列出目前已经被启动的卡,不论这个卡是否有给予IP,都会被显示出来。而如果是输入ifconfig eth0,则仅会秀出这张介面的相关资料,而不管该介面是否有启动。所以如果你想要知道某张网路卡的Hardware Address,直接输入『 ifconfig "网路介面代号" 』即可喔!^_^!至于上表出现的各项资料是这样的(资料排列由上而下、由左而右):
透过观察上述的资料,大致上可以了解到你的网路情况,尤其是那个RX, TX 内的error 数量, 以及是否发生严重的collision 情况,都是需要注意的喔!^_^
使用ifconfig可以暂时手动来设定或修改某个介面卡的相关功能,并且也可以透过eth0:0这种虚拟的网路介面来设定好一张网路卡上面的多个IP喔!手动的方式真是简单啊!并且设定错误也不打紧,因为我们可以利用 /etc/init.d/network restart 来重新启动整个网路介面,那么之前手动的设定资料会全部都失效喔!另外,要启动某个网路介面,但又不让他具有IP参数时,直接给他ifconfig eth0 up即可!这个动作经常在无线网卡当中会进行,因为我们必须要启动无线网卡让他去侦测AP存在与否啊!
即时的手动修改一些网路介面参数,可以利用ifconfig 来达成,如果是要直接以设定档, 亦即是在/etc/sysconfig/network-scripts 里面的ifcfg-ethx 等档案的设定参数来启动的话,那就得要透过ifdown 或ifup 来达成了。
ifup与ifdown真是太简单了!这两支程式其实是script而已,他会直接到/etc/sysconfig/network-scripts目录下搜寻对应的设定档,例如ifup eth0时,他会找出ifcfg- eth0这个档案的内容,然后来加以设定。关于ifcfg-eth0的设定则请参考第四章的说明。 不过,由于这两支程式主要是搜寻设定档(ifcfg-ethx)来进行启动与关闭的,所以在使用前请确定ifcfg-ethx是否真的存在于正确的目录内,否则会启动失败喔!另外,如果以ifconfig eth0 ....来设定或者是修改了网路介面后,那就无法再以ifdown eth0的方式来关闭了!因为ifdown会分析比对目前的网路参数与ifcfg-eth0是否相符,不符的话,就会放弃该次动作。因此,使用ifconfig修改完毕后,应该要以ifconfig eth0 down才能够关闭该介面喔! 5.1.2 路由修改: route 我们在第二章网路基础的时候谈过关于路由的问题,两部主机之间一定要有路由才能够互通TCP/IP的协定,否则就无法进行连线啊!一般来说,只要有网路介面,该介面就会产生一个路由,所以我们安装的主机有一个eth0的介面,看起来就会是这样:
由上面的例子当中仔细观察route与route -n的输出结果,你可以发现有加-n参数的主要是显示出IP ,至于使用route而已的话,显示的则是『主机名称』喔!也就是说,在预设的情况下, route会去找出该IP的主机名称,如果找不到呢?就会显示的钝钝的(有点小慢),所以说,鸟哥通常都直接使用route -n啦!由上面看起来,我们也知道default = 0.0.0.0/0.0.0.0,而上面的资讯有哪些你必须要知道的呢?
此外,观察一下上面的路由排列顺序喔,依序是由小网域(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 时,会出现什么情况?会出现如下的情况:
也就是说,由于路由是依照顺序来排列与传送的,所以不论封包是由那个介面(eth0, eth1)所接收,都会由上述的eth0传送出去,所以,在一部主机上面设定两个相同网域的IP本身没有什么意义!有点多此一举就是了。除非是类似虚拟机器(Xen, VMware等软体)所架设的多主机时,才会有这个必要~
如果是要进行路由的删除与增加,那就得要参考上面的例子了,其实,使用man route里面的资料就很丰富了!仔细查阅一下啰!你只要记得,当出现『SIOCADDRT: Network is unreachable』这个错误时,肯定是由于gw后面接的IP无法直接与你的网域沟通(Gateway并不在你的网域内),所以,赶紧检查一下是否输入错误啊!
5.1.3 网路参数综合指令: ip ip 是个指令喔!并不是那个TCP/IP 的IP 啦!这个ip 指令的功能可多了!基本上,他就是整合了ifconfig 与route 这两个指令啰~不过, ip 可以达成的功能却又多更多!真是个相当厉害的指令。如果你有兴趣的话,请自行 vi /sbin/ifup ,就知道整个ifup 就是利用ip 这个指令来达成的。好了,如何使用呢?让我们来瞧一瞧先!
由上面的语法我们可以知道, ip 除了可以设定一些基本的网路参数之外,还能够进行额外的IP 协定,包括多IP 的达成,真是太完美了!底下我们就分三个部分(link, addr, route) 来介绍这个ip 指令吧!
ip link 可以设定与装置(device) 有关的相关参数,包括MTU 以及该网路介面的MAC 等等,当然也可以启动(up) 或关闭 (down) 某个网路介面啦!整个语法是这样的:
使用ip link show 可以显示出整个装置介面的硬体相关资讯,如上所示,包括网卡位址(MAC)、MTU等等, 比较有趣的应该是那个sit0 的介面了,那个sit0 的介面是用在IPv4 及IPv6 的封包转换上的, 对于我们仅使用IPv4 的网路是没有作用的。lo 及sit0 都是主机内部所自行设定的。而如果加上-s 的参数后,则这个网路卡的相关统计资讯就会被列出来, 包括接收(RX) 及传送(TX) 的封包数量等等,详细的内容与ifconfig 所输出的结果相同的。
更新网路卡的MTU 使用ifconfig 也可以达成啊!没啥了不起,不过,如果是要更改『网路卡代号、 MAC 位址的资讯』的话,那可就得使用ip 啰~不过,设定前可能得要先关闭该网路卡,否则会不成功。如下所示:
在这个装置的硬体相关资讯设定上面,包括MTU, MAC 以及传输的模式等等,都可以在这里设定。有趣的是那个address 的项目,那个项目后面接的可是硬体位址(MAC) 而不是IP 喔!很容易搞错啊!切记切记!更多的硬体参数可以使用man ip 查阅一下与ip link 有关的设定。
如果说ip link是与OSI七层协定 的第二层资料连阶层有关的话,那么ip address (ip addr)就是与第三层网路层有关的参数啦!主要是在设定与IP有关的各项参数,包括netmask, broadcast等等。
看到上面那个特殊的字体吗?没错!那就是IP 参数啦!也是ip address 最主要的功能。底下我们进一步来新增虚拟的网路介面试看看:
这个项目当然就是路由的观察与设定啰!事实上, ip route 的功能几乎与route 这个指令差不多,但是,他还可以进行额外的参数设计,例如MTU 的规划等等,相当的强悍啊!
如上表所示,最简单的功能就是显示出目前的路由资讯,其实跟route 这个指令相同啦!指示必须要注意几个小东西:
再来看一下如何进行路由的增加与删除吧!
事实上,这个ip 的指令实在是太博大精深了!刚接触Linux 网路的朋友,可能会看到有点晕~ 不要紧啦!你先会使用ifconfig, ifup , ifdown 与route 即可, 等以后有经验了之后,再继续回来玩ip 这个好玩的指令吧!^_^ 有兴趣的话,也可以自行参考ethtool 这个指令喔!(man ethtool)。 5.1.4 无线网路: iwlist, iwconfig 这两个指令你必须要有无线网卡才能够进行喔!这两个指令的用途是这样的:
这两个指令的应用我们在第四章里面的无线网卡设定谈了很多了,所以这里我们不再详谈,有兴趣的朋友应该先使用man iwlist与man iwconfig了解一下语法,然后再到前一章的无线网路小节查一查相关的用法,就了解了啦!^_^ 5.1.5 手动使用DHCP 自动取得IP 参数: dhclient 如果你是使用DHCP 协定在区域网路内取得IP 的话,那么是否一定要去编辑ifcfg-eth0 内的BOOTPROTO 呢?嘿嘿!有个更快速的作法,那就是利用dhclient 这个指令~因为这个指令才是真正发送dhcp 要求工作的程式啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:
够简单吧!这样就可以立刻叫我们的网路卡以dhcp 协定去尝试取得IP 喔! 5.2 网路侦错与观察指令 在网路的互助论坛中,最常听到的一句话就是:『高手求救!我的Linux不能连上网路了!』我的天呐!不能上网路的原因多的很!而要完全搞懂也不是一件简单的事情呢!不过,事实上我们可以自己使用测试软体来追踪可能的错误原因,而很多的网路侦测指令其实在Linux里头已经都预设存在了,只要你好好的学一学基本的侦测指令,那么一些朋友在告诉你如何侦错的时候,你应该就立刻可以知道如何来搞定他啰! 其实我们在第四章谈到的五个检查步骤已经是相当详细的网路侦错流程了!只是还有些重要的侦测指令也得要来了解一下才好! 5.2.1 两部主机两点沟通: ping 这个ping是很重要的指令,ping主要透过ICMP封包 来进行整个网路的状况报告,当然啦,最重要的就是那个ICMP type 0, 8这两个类型,分别是要求回报与主动回报网路状态是否存在的特性。要特别注意的是, ping还是需要透过 IP封包来传送ICMP封包的,而IP封包里面有个相当重要的TTL属性,这是很重要的一个路由特性,详细的IP与ICMP表头资料请参考第二章网路基础的详细介绍。
ping 最简单的功能就是传送ICMP 封包去要求对方主机回应是否存在于网路环境中,上面的回应讯息当中,几个重要的项目是这样的:
如果你忘记加上-c 3 这样的规定侦测次数,那就得要使用[ctrl]-c 将他结束掉了!
特别注意一下,如果你的主机与待侦测主机并不在同一个网域内,那么TTL预设使用255 ,如果是同一个网域内,那么TTL预设则使用64喔!
5.2.2 两主机间各节点分析: traceroute 我们前面谈到的指令大多数都是针对主机的网路参数设定所需要的,而ping 是两部主机之间的回声与否判断, 那么有没有指令可以追踪两部主机之间通过的各个节点(node) 通讯状况的好坏呢?举例来说,如果我们连线到yahoo 的速度比平常慢,你觉得是(1)自己的网路环境有问题?(2)还是外部的Internet 有问题?如果是(1) 的话,我们当然需要检查自己的网路环境啊,看看是否又有谁中毒了?但如果是Internet 的问题呢?那只有『等等等』啊!判断是(1) 还是(2) 就得要使用traceroute 这个指令啦!
这个traceroute 挺有意思的,这个指令会针对欲连接的目的地之所有node 进行UDP 的逾时等待, 例如上面的例子当中,由鸟哥的主机连接到Yahoo 时,他会经过12 个节点以上,traceroute会主动的对这12 个节点做UDP 的回声等待,并侦测回覆的时间,每节点侦测三次,最终回传像上头显示的结果。你可以发现每个节点其实回覆的时间大约在50 ms 以内,算是还可以的Internet 环境了。 比较特殊的算是第10/12 个,会回传星号的,代表该node 可能设有某些防护措施,让我们发送的封包资讯被丢弃所致。因为我们是直接透过路由器转递封包,并没有进入路由器去取得路由器的使用资源,所以某些路由器仅支援封包转递, 并不会接受来自用户端的各项侦测啦!此时就会出现上述的问题。因为traceroute 预设使用UDP 封包,如果你想尝试使用其他封包, 那么-I 或-T 可以试看看啰! 由于目前UDP/ICMP 的攻击层出不穷,因此很多路由器可能就此取消这两个封包的回应功能。所以我们可以使用TCP 来侦测呦!例如使用同样的方法,透过等待时间1 秒,以及TCP 80 埠口的情况下,可以这样做:
5.2.3 察看本机的网路连线与后门: netstat 如果你觉得你的某个网路服务明明就启动了,但是就是无法造成连线的话,那么应该怎么办?首先你应该要查询一下自己的网路介面所监听的埠口(port) 来看看是否真的有启动,因为有时候萤幕上面显示的[OK] 并不一定是OK 啊!^_^
netstat 的输出主要分为两大部分,分别是TCP/IP 的网路介面部分,以及传统的Unix socket 部分。还记得我们在基础篇里面曾经谈到档案的类型吗?那个socket 与FIFO 档案还记得吧?那就是在Unix 介面用来做为程式资料交流的介面了,也就是上头表格内看到的Active Unix domain sockets 的内容啰~ 通常鸟哥都是建议加上『 -n 』这个参数的,因为可以避过主机名称与服务名称的反查,直接以IP 及埠口号码(port number) 来显示,显示的速度上会快很多!至于在输出的讯息当中, 我们先来谈一谈关于网路连线状态的输出部分,他主要是分为底下几个大项:
基本上,我们常常谈到的netstat的功能,就是在观察网路的连线状态了,而网路连线状态中,又以观察『我目前开了多少的port在等待用户端的连线』以及『目前我的网路连线状态中,有多少连线已建立或产生问题』最常见。那你如何了解与观察呢?通常鸟哥是这样处理的:
你可以发现很多的网路服务其实仅针对本机的lo 开放而已,网际网路是连接不到该埠口与服务的。而由上述的资料我们也可以看到,启动port 111 的,其实就是rpcbind 那只程式,那如果想要关闭这个埠口, 你可以使用kill 删除PID 969,也可以使用killall 删除rpcbind 这个程序即可。如此一来, 很轻松的你就能知道哪个程式启动了哪些埠口啰!
看到上头的特殊字体吧?那代表目前已经建立连线的一条网路连线,他是由远端主机192.168.1.101启动一个大于1024的埠口向本地端主机192.168.1.100的port 22进行的一条连线,你必须要想起来的是:『Client端是 随机取一个大于1024以上的port进行连线』,此外『只有root可以启动小于1024以下的port』,那就看的懂上头那条连线啰!如果这条连线你想要砍掉他的话,看到最右边的4716了没?kill会用吧!^_^ 至于传统的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 啦!底下让我们来聊聊这两个指令吧!
这个指令可以用来查出某个主机名称的IP 喔!举例来说,我们想要知道tw.yahoo 的IP 时,可以这样做:
瞧!IP是119.160.246.241啊!很简单就可以查询到IP了!那么这个IP是向谁查询的呢?其实就是写在/etc/resolv.conf 那个档案内的DNS伺服器IP啦!如果不想要使用该档案内的主机来查询,也可以这样做:
会告诉我们所使用来查询的主机是哪一部呐!这样就够清楚了吧!不过,再怎么清楚也比不过 dig 这个指令的,所以这个指令仅是参考参考啦!
这玩意儿的用途与host基本上是一样的,就是用来作为IP与主机名称对应的检查,同样是使用/etc/resolv.conf 这个档案来作为DNS伺服器的来源选择。
如何,看起来与host差不多吧!不过,这个nslookup还可以由IP找出主机名称喔!例如那个范例二,他的主机名称是: dns.hinet哩!目前大家都建议使用dig这个指令来取代nslookup ,我们会在第十九章DNS伺服器那时再来好好谈一谈吧! 5.3 远端连线指令与即时通讯软体 啥是远端连线呢?其实就是在不同的电脑之间进行登入的情况啦!我们可以透过telnet, ssh 或者是ftp 等协定来进行远端主机的登入。底下我们就分别来介绍一下这些基本的指令吧!这里仅是谈到用户端功能喔, 相关的伺服器我们则会在后续进行说明的。 5.3.1 终端机与BBS 连线: telnet telnet是早期我们在个人电脑上面要连结到伺服器工作时,最重要的一个软体了!他不但可以直接连接到伺服器上头,还可以用来连结BBS呢!非常棒!不过, telnet本身的资料在传送的时候是使用明码(原始的资料,没有加密) ,所以资料在Internet上面跑的时候,会比较危险一点(就怕被别人监听啊)。更详细的资料我们会在第十一章远端连线伺服器内做介绍的。
如上所示,我们可以透过telnet轻易的连结到BBS上面,而如果你的主机有开启telnet伺服器服务的话,同样的利用『 telnet IP 』并且输入帐号与密码之后,就能够登入主机了。另外,在Linux上的telnet软体还提供了Kerberos的认证方式,有兴趣的话请自行参阅man telnet的说明。 除了连结到伺服器以及连结到BBS 站之外, telnet 还可以用来连结到某个port (服务) 上头呐!举例来说,我们可以用telnet 连接到port 110 ,看看这个port 是否有正确的启动呢?
瞧!根据输出的结果,我们就能够知道这个通讯协定(port number 提供的通讯协定功能) 是否有成功的启动呐!而在每个port 所监听的服务都有其特殊的指令,例如上述的port 25 就是在本机介面所提供的电子邮件服务, 那个服务所支援的指令就如同上面使用的资料一样,但是其他的port 就不见得支援这个『 ehlo 』的命令, 因为不同的port 有不同的程式嘛!所以当然支援的命令就不同啰! 5.3.2 FTP 连线软体: ftp, lftp 现在的人们由于有高容量的email 可以用,因此传送档案可以很轻松的透过email 。不过email 还是有单封信件容量限制, 如果想要一口气传送个几百MB 的档案,恐怕还是得要透过FTP 这个通讯协定才行啊!文字介面的FTP 软体主要有ftp, lftp 两个,图形介面的呢?在CentOS 上面预设有gftp 这个好用的东东。在这里我们仅介绍文字介面的两个指令而已。
ftp 这个指令很简单,用在处理FTP 伺服器的下载资料啦。由于鸟哥所在的位置在昆山科大,因此这里使用昆山科大的FTP 伺服器为例:
FTP其实算是一个很麻烦的协定,因为他使用两个port分别进行命令与资料的交流,详细的资料我们会在第二十一章的FTP伺服器内详谈,这里我们先单纯的介绍一下如何使用ftp这个软体。首先我们当然是需要登入啰,所以在上头的表格当中我们当然需要填入帐号与密码了。不过由于昆山科大仅提供匿名登入,而匿名登入者的帐号就是『 anonymous 』所以直接填写那个帐号即可。如果是私人的FTP时,才需要提供一组完整的帐号与密码啦! 登入FTP 主机后,就能够使用ftp 软体的功能进行上传与下载的动作,几个常用的ftp 内指令如上表,不过,鸟哥建议你可以连到大学的FTP 网站后,使用help (或问号? ) 来参考可用的指令,然后尝试下载以测试使用一下这个指令吧!这样以后没有浏览器的时候,你也可以到ftp 下载了呢!不错吧!另外你要注意的是,离开ftp 软体时,得要输入『 bye 』喔!不是『 exit 』啦! 如果由于某些理由,让你的FTP 主机的port 开在非正规的埠口时,那你就可以利用底下的方式来连接到该部主机喔!
单纯使用ftp 总是觉得很麻烦,有没有更快速的ftp 用户软体呢?让我们可以使用类似网址列的方式来登入FTP 伺服器啊?有的,那就是lftp 的功能了!lftp 预设使用匿名登入FTP 伺服器,可以使用类似网址列的方式取得资料, 使用上比单纯的ftp 要好用些。此外,由于可在指令列输入帐号/密码,可以辅助进行程式脚本的设计喔!
至于登入FTP 主机后,一样可以使用『help』来显示出可以执行的指令,与ftp 很类似啦!不过多了书签的功能,而且也非常的类似 bash 呐!很不错呦!除了这个好用的文字介面的FTP 软体之外,事实上还有很多图形介面的好用软体呢!最常见的就是gftp 了,非常的容易上手喔!CentOS 本身就有提供gftp 了,你可以拿出原版的光碟来安装,然后进入X Window 后, 启动一个shell ,输入『 gftp 』就能够发现他的好用啦! 如果你想要定时的去捉下昆山科大FTP 网站下的/pub/CentOS/RPM-GPG* 的档案时,那么那个脚本应该要怎么写呢?我们尝试来写写看吧!
若为非匿名登入时,则可以使用『 open -u username,password hostname 』修改lftp.ksu.sh 的第一行!如果再将这个脚本写入crontab 当中,你就可以定时的以FTP 进行上传/下载的功能啰!这就是文字指令的好处! 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就是个好方法啦!可以看的清清楚楚啊!^_^
当我直接输入links 网站网址后,就会出现如下的图示: 图5.4-1、使用links 查询网页资料的显示结果 上面这个画面的基本说明如下:
至于如果是浏览Linux 本机上面的网页档案,那就可以使用如下的方式:
在鸟哥的CentOS 6.x 当中,有这么一个档案,我就可以利用links 来取出察看呐!显示的结果有点像底下这样: 图5.4-2、使用links 查询本机的HTML 文件档案 当然啦!因为你的环境可能是在Linux 本机的tty1~tty6 ,所以无法显示出中文,这个时候你就得要设定为: 『LANG=en_US』之类的语系设定才行喔!另外,如果某些时刻你必须上网点选某个网站以自动取得更新时。举例来说,早期的自动线上更新主机名称系统,仅支援网页更新,那你如何进行更新呢?嘿嘿!可以使用links 喔!利用 -dump 这个参数处理先:
上面的网站后面有加个问号(?) 对吧?后面接的则是利用网页的『 GET 』功能取得的各项变数资料, 利用这个功能,我们就可以直接点选到该网站上啰!非常的方便吧!而且会将执行的结果输出到testfile 档案中,不过如果网站提供的资料是以『 POST 』为主的话,那鸟哥就不知道如何搞定了。GET 与POST 是WWW 通讯协定中,用来将资料透过浏览器上传到伺服器端的一种方式, 一般来说,目前讨论区或部落格等,大多使用可以支援较多资料的POST 方式上传啦!关于GET 与POST 的相关资讯我们会在第二十章WWW 伺服器当中再次的提及! 5.4.2 文字介面下载器: wget 如果说links 是在进行网页的『浏览』,那么wget 就是在进行『网页资料的取得』。举例来说,我们的Linux 核心是放置在www.kernel 内,主要同时提供ftp 与http 来下载。我们知道可以使用lftp 来下载资料,但如果想要用浏览器来下载呢?那就利用wget 吧!
你瞧瞧~很可爱吧!不必透过浏览器,只要知道网址后,立即可以进行档案的下载, 又快速又方便,还可以透过proxy 的帮助来下载呢!透过修改/etc/wgetrc 来设定你的代理伺服器:
5.5 封包撷取功能 很多时候由于我们的网路连线出现问题,使用类似ping的软体功能却又无法找出问题点,最常见的是因为路由与IP转递后所产生的一些困扰(请参考防火墙与NAT主机部分),这个时候要怎么办?最简单的方法就是『分析封包的流向』啰!透过分析封包的流向,我们可以了解一条连线应该是如何进行双向的连线的动作,也就会清楚的了解到可能发生的问题所在了!底下我们就来谈一谈这个tcpdump与图形介面的封包分析软体吧! 5.5.1 文字介面封包撷取器: tcpdump 说实在的,对于tcpdump这个软体来说,你甚至可以说这个软体其实就是个骇客软体,因为他不但可以分析封包的流向,连封包的内容也可以进行『监听』,如果你使用的传输资料是明码的话,不得了,在router或hub上面就可能被人家监听走了!我们在第二章谈到的CSMA/CD 流程中,不是说过有所谓的『监听软体』吗?这个tcpdump就是啦!很可怕呐!所以,我们也要来了解一下这个软体啊!(注:这个tcpdump必须使用root的身份执行)
如果你是第一次看tcpdump的man page时,肯定一个头两个大,因为tcpdump几乎都是分析封包的表头资料,使用者如果没有简易的网路封包基础,要看懂粉难呐!所以,至少你得要回到网路基础里面去将TCP封包的表头资料理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个栏位,我们以范例一当中那个特殊字体行来说明一下:
最简单的说法,就是该封包是由192.168.1.100传到192.168.1.101,透过的port是由22到1937 ,使用的是PUSH的旗标,而不是SYN之类的主动连线标志。呵呵!不容易看的懂吧!所以说,上头才讲请务必到TCP表头资料的部分去瞧一瞧的啊! 再来,一个网路状态很忙的主机上面,你想要取得某部主机对你连线的封包资料而已时, 使用tcpdump 配合管线命令与正规表示法也可以,不过,毕竟不好捉取!我们可以透过tcpdump 的表示法功能,就能够轻易的将所需要的资料独立的取出来。在上面的范例一当中,我们仅针对eth0 做监听,所以整个eth0 介面上面的资料都会被显示到萤幕上, 不好分析啊!那么我们可以简化吗?例如只取出port 21 的连线封包,可以这样做:
瞧!这样就仅提出port 21 的资讯而已,且仔细看的话,你会发现封包的传递都是双向的, client 端发出『要求』而server 端则予以『回应』,所以,当然是有去有回啊!而我们也就可以经过这个封包的流向来了解到封包运作的过程。举例来说:
那么输出的结果会是如何?
上表显示的头两行是tcpdump 的基本说明,然后:
从第3-5行的流程来看,熟不熟悉啊?没错!那就是三向交握的基础流程啦!够有趣吧!不过tcpdump之所以被称为骇客软体之一可不止上头介绍的功能呐!上面介绍的功能可以用来作为我们主机的封包连线与传输的流程分析,这将有助于我们了解到封包的运作,同时了解到主机的防火墙设定规则是否有需要修订的地方。 更神奇的使用要来啦!如果我们使用tcpdump 在router 上面监听『明码』的传输资料时, 例如FTP 传输协定,你觉得会发生什么问题呢?我们先在主机端下达『 tcpdump -i lo port 21 -nn -X 』然后再以ftp 登入本机,并输入帐号与密码, 结果你就可以发现如下的状况:
上面的输出结果已经被简化过了,你必须要自行在你的输出结果当中搜寻相关的字串才行。从上面输出结果的特殊字体中,我们可以发现『该FTP软体使用的是vsftpd ,并且使用者输入dmtsai这个帐号名称,且密码是mypasswordisyou』嘿嘿!你说可不可怕啊!如果使用的是明码的方式来传输你的网路资料?所以我们才常常在讲啊,网路是很不安全滴! 另外你得了解,为了让网路介面可以让tcpdump 监听,所以执行tcpdump 时网路介面会启动在『错乱模式(promiscuous)』,所以你会在/var/log/messages 里面看到很多的警告讯息, 通知你说你的网路卡被设定成为错乱模式!别担心,那是正常的。至于更多的应用,请参考man tcpdump 啰!
5.5.2 图形介面封包撷取器: wireshark tcpdump是文字介面的封包撷取器,那么有没有图形介面的?有啊!那就是wireshark ( 注1 )这套软体。这套软体早期称为ethereal ,目前同时提供文字介面的tethereal以及图形介面的wireshark两个咚咚。由于我们当初安装时预设并没有装这套,因此妳必须要先使用yum去网路安装喔!也可以拿出光碟来安装啦!有两套需要安装,分别是文字介面的wireshark以及图形介面的wireshark-gnome软体。安装方式如下:
启动这套软体的方法很简单,你必须要在X Window 底下,透过『应用程式』-->『网际网路』-->『wireshark network analyzer』就可以启动啦!启动的画面如下所示: 图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 啦!)
这个最简单的功能与telnet 几乎一样吧!可以去检查某个服务啦!不过,更神奇的在后面, 我们可以建立两个连线来传讯喔!举个例子来说,我们先在伺服器端启动一个port 来进行倾听:
接下来你再开另外一个终端机来看看,也利用nc 来连线伺服器,并且输入一些指令看看喔!
此时,在用户端我们可以打入一些字,你会发现在伺服器端会同时出现你输入的字眼呐!如果你同时给予一些额外的参数,例如利用标准输入与输出(stdout, stdin) 的话,那么就可以透过这个连线来作很多事情了!当然nc 的功能不只如此,你还可以发现很多的用途喔!请自行到你主机内的/usr/share/doc/nc-1.84/scripts/ 目录下看看这些script ,有帮助的呐!不过,如果你需要额外的编译出含有GAPING_SECURITY_HOLE 功能, 以使两端连线可以进行额外指令的执行时,就得要自行下载原始码来编译了! 5.6 重点回顾
5.7 本章习题
5.8 参考资料与延伸阅读
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 is designed by VBird during 2001-2011. ksu.edu原文地址:http://linux.vbird/linux_server/0140networkcommand.php
第五章、Linux常用网路指令
5.1 网路参数设定使用的指令 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/viewtopic.php?t=26123 5.1 网路参数设定使用的指令 任何时刻如果你想要做好你的网路参数设定,包括IP 参数、路由参数与无线网路等等,就得要了解底下这些相关的指令才行!其中以 ifconfig 及route 这两支指令算是较重要的喔!^_^!当然,比较新鲜的作法,可以使用ip 这个汇整的指令来设定IP 参数啦!
5.1.1 手动/自动设定与启动/关闭IP 参数: ifconfig, ifup, ifdown 这三个指令的用途都是在启动网路介面,不过, ifup 与ifdown 仅能就/etc/sysconfig/network-scripts 内的ifcfg-ethX (X 为数字) 进行启动或关闭的动作,并不能直接修改网路参数,除非手动调整ifcfg-ethX 档案才行。至于ifconfig 则可以直接手动给予某个介面IP 或调整其网路参数!底下我们就分别来谈一谈!
ifconfig 主要是可以手动的启动、观察与修改网路介面的相关参数,可以修改的参数很多啊,包括IP 参数以及MTU 等等都可以修改,他的语法如下:
一般来说,直接输入ifconfig就会列出目前已经被启动的卡,不论这个卡是否有给予IP,都会被显示出来。而如果是输入ifconfig eth0,则仅会秀出这张介面的相关资料,而不管该介面是否有启动。所以如果你想要知道某张网路卡的Hardware Address,直接输入『 ifconfig "网路介面代号" 』即可喔!^_^!至于上表出现的各项资料是这样的(资料排列由上而下、由左而右):
透过观察上述的资料,大致上可以了解到你的网路情况,尤其是那个RX, TX 内的error 数量, 以及是否发生严重的collision 情况,都是需要注意的喔!^_^
使用ifconfig可以暂时手动来设定或修改某个介面卡的相关功能,并且也可以透过eth0:0这种虚拟的网路介面来设定好一张网路卡上面的多个IP喔!手动的方式真是简单啊!并且设定错误也不打紧,因为我们可以利用 /etc/init.d/network restart 来重新启动整个网路介面,那么之前手动的设定资料会全部都失效喔!另外,要启动某个网路介面,但又不让他具有IP参数时,直接给他ifconfig eth0 up即可!这个动作经常在无线网卡当中会进行,因为我们必须要启动无线网卡让他去侦测AP存在与否啊!
即时的手动修改一些网路介面参数,可以利用ifconfig 来达成,如果是要直接以设定档, 亦即是在/etc/sysconfig/network-scripts 里面的ifcfg-ethx 等档案的设定参数来启动的话,那就得要透过ifdown 或ifup 来达成了。
ifup与ifdown真是太简单了!这两支程式其实是script而已,他会直接到/etc/sysconfig/network-scripts目录下搜寻对应的设定档,例如ifup eth0时,他会找出ifcfg- eth0这个档案的内容,然后来加以设定。关于ifcfg-eth0的设定则请参考第四章的说明。 不过,由于这两支程式主要是搜寻设定档(ifcfg-ethx)来进行启动与关闭的,所以在使用前请确定ifcfg-ethx是否真的存在于正确的目录内,否则会启动失败喔!另外,如果以ifconfig eth0 ....来设定或者是修改了网路介面后,那就无法再以ifdown eth0的方式来关闭了!因为ifdown会分析比对目前的网路参数与ifcfg-eth0是否相符,不符的话,就会放弃该次动作。因此,使用ifconfig修改完毕后,应该要以ifconfig eth0 down才能够关闭该介面喔! 5.1.2 路由修改: route 我们在第二章网路基础的时候谈过关于路由的问题,两部主机之间一定要有路由才能够互通TCP/IP的协定,否则就无法进行连线啊!一般来说,只要有网路介面,该介面就会产生一个路由,所以我们安装的主机有一个eth0的介面,看起来就会是这样:
由上面的例子当中仔细观察route与route -n的输出结果,你可以发现有加-n参数的主要是显示出IP ,至于使用route而已的话,显示的则是『主机名称』喔!也就是说,在预设的情况下, route会去找出该IP的主机名称,如果找不到呢?就会显示的钝钝的(有点小慢),所以说,鸟哥通常都直接使用route -n啦!由上面看起来,我们也知道default = 0.0.0.0/0.0.0.0,而上面的资讯有哪些你必须要知道的呢?
此外,观察一下上面的路由排列顺序喔,依序是由小网域(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 时,会出现什么情况?会出现如下的情况:
也就是说,由于路由是依照顺序来排列与传送的,所以不论封包是由那个介面(eth0, eth1)所接收,都会由上述的eth0传送出去,所以,在一部主机上面设定两个相同网域的IP本身没有什么意义!有点多此一举就是了。除非是类似虚拟机器(Xen, VMware等软体)所架设的多主机时,才会有这个必要~
如果是要进行路由的删除与增加,那就得要参考上面的例子了,其实,使用man route里面的资料就很丰富了!仔细查阅一下啰!你只要记得,当出现『SIOCADDRT: Network is unreachable』这个错误时,肯定是由于gw后面接的IP无法直接与你的网域沟通(Gateway并不在你的网域内),所以,赶紧检查一下是否输入错误啊!
5.1.3 网路参数综合指令: ip ip 是个指令喔!并不是那个TCP/IP 的IP 啦!这个ip 指令的功能可多了!基本上,他就是整合了ifconfig 与route 这两个指令啰~不过, ip 可以达成的功能却又多更多!真是个相当厉害的指令。如果你有兴趣的话,请自行 vi /sbin/ifup ,就知道整个ifup 就是利用ip 这个指令来达成的。好了,如何使用呢?让我们来瞧一瞧先!
由上面的语法我们可以知道, ip 除了可以设定一些基本的网路参数之外,还能够进行额外的IP 协定,包括多IP 的达成,真是太完美了!底下我们就分三个部分(link, addr, route) 来介绍这个ip 指令吧!
ip link 可以设定与装置(device) 有关的相关参数,包括MTU 以及该网路介面的MAC 等等,当然也可以启动(up) 或关闭 (down) 某个网路介面啦!整个语法是这样的:
使用ip link show 可以显示出整个装置介面的硬体相关资讯,如上所示,包括网卡位址(MAC)、MTU等等, 比较有趣的应该是那个sit0 的介面了,那个sit0 的介面是用在IPv4 及IPv6 的封包转换上的, 对于我们仅使用IPv4 的网路是没有作用的。lo 及sit0 都是主机内部所自行设定的。而如果加上-s 的参数后,则这个网路卡的相关统计资讯就会被列出来, 包括接收(RX) 及传送(TX) 的封包数量等等,详细的内容与ifconfig 所输出的结果相同的。
更新网路卡的MTU 使用ifconfig 也可以达成啊!没啥了不起,不过,如果是要更改『网路卡代号、 MAC 位址的资讯』的话,那可就得使用ip 啰~不过,设定前可能得要先关闭该网路卡,否则会不成功。如下所示:
在这个装置的硬体相关资讯设定上面,包括MTU, MAC 以及传输的模式等等,都可以在这里设定。有趣的是那个address 的项目,那个项目后面接的可是硬体位址(MAC) 而不是IP 喔!很容易搞错啊!切记切记!更多的硬体参数可以使用man ip 查阅一下与ip link 有关的设定。
如果说ip link是与OSI七层协定 的第二层资料连阶层有关的话,那么ip address (ip addr)就是与第三层网路层有关的参数啦!主要是在设定与IP有关的各项参数,包括netmask, broadcast等等。
看到上面那个特殊的字体吗?没错!那就是IP 参数啦!也是ip address 最主要的功能。底下我们进一步来新增虚拟的网路介面试看看:
这个项目当然就是路由的观察与设定啰!事实上, ip route 的功能几乎与route 这个指令差不多,但是,他还可以进行额外的参数设计,例如MTU 的规划等等,相当的强悍啊!
如上表所示,最简单的功能就是显示出目前的路由资讯,其实跟route 这个指令相同啦!指示必须要注意几个小东西:
再来看一下如何进行路由的增加与删除吧!
事实上,这个ip 的指令实在是太博大精深了!刚接触Linux 网路的朋友,可能会看到有点晕~ 不要紧啦!你先会使用ifconfig, ifup , ifdown 与route 即可, 等以后有经验了之后,再继续回来玩ip 这个好玩的指令吧!^_^ 有兴趣的话,也可以自行参考ethtool 这个指令喔!(man ethtool)。 5.1.4 无线网路: iwlist, iwconfig 这两个指令你必须要有无线网卡才能够进行喔!这两个指令的用途是这样的:
这两个指令的应用我们在第四章里面的无线网卡设定谈了很多了,所以这里我们不再详谈,有兴趣的朋友应该先使用man iwlist与man iwconfig了解一下语法,然后再到前一章的无线网路小节查一查相关的用法,就了解了啦!^_^ 5.1.5 手动使用DHCP 自动取得IP 参数: dhclient 如果你是使用DHCP 协定在区域网路内取得IP 的话,那么是否一定要去编辑ifcfg-eth0 内的BOOTPROTO 呢?嘿嘿!有个更快速的作法,那就是利用dhclient 这个指令~因为这个指令才是真正发送dhcp 要求工作的程式啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:
够简单吧!这样就可以立刻叫我们的网路卡以dhcp 协定去尝试取得IP 喔! 5.2 网路侦错与观察指令 在网路的互助论坛中,最常听到的一句话就是:『高手求救!我的Linux不能连上网路了!』我的天呐!不能上网路的原因多的很!而要完全搞懂也不是一件简单的事情呢!不过,事实上我们可以自己使用测试软体来追踪可能的错误原因,而很多的网路侦测指令其实在Linux里头已经都预设存在了,只要你好好的学一学基本的侦测指令,那么一些朋友在告诉你如何侦错的时候,你应该就立刻可以知道如何来搞定他啰! 其实我们在第四章谈到的五个检查步骤已经是相当详细的网路侦错流程了!只是还有些重要的侦测指令也得要来了解一下才好! 5.2.1 两部主机两点沟通: ping 这个ping是很重要的指令,ping主要透过ICMP封包 来进行整个网路的状况报告,当然啦,最重要的就是那个ICMP type 0, 8这两个类型,分别是要求回报与主动回报网路状态是否存在的特性。要特别注意的是, ping还是需要透过 IP封包来传送ICMP封包的,而IP封包里面有个相当重要的TTL属性,这是很重要的一个路由特性,详细的IP与ICMP表头资料请参考第二章网路基础的详细介绍。
ping 最简单的功能就是传送ICMP 封包去要求对方主机回应是否存在于网路环境中,上面的回应讯息当中,几个重要的项目是这样的:
如果你忘记加上-c 3 这样的规定侦测次数,那就得要使用[ctrl]-c 将他结束掉了!
特别注意一下,如果你的主机与待侦测主机并不在同一个网域内,那么TTL预设使用255 ,如果是同一个网域内,那么TTL预设则使用64喔!
5.2.2 两主机间各节点分析: traceroute 我们前面谈到的指令大多数都是针对主机的网路参数设定所需要的,而ping 是两部主机之间的回声与否判断, 那么有没有指令可以追踪两部主机之间通过的各个节点(node) 通讯状况的好坏呢?举例来说,如果我们连线到yahoo 的速度比平常慢,你觉得是(1)自己的网路环境有问题?(2)还是外部的Internet 有问题?如果是(1) 的话,我们当然需要检查自己的网路环境啊,看看是否又有谁中毒了?但如果是Internet 的问题呢?那只有『等等等』啊!判断是(1) 还是(2) 就得要使用traceroute 这个指令啦!
这个traceroute 挺有意思的,这个指令会针对欲连接的目的地之所有node 进行UDP 的逾时等待, 例如上面的例子当中,由鸟哥的主机连接到Yahoo 时,他会经过12 个节点以上,traceroute会主动的对这12 个节点做UDP 的回声等待,并侦测回覆的时间,每节点侦测三次,最终回传像上头显示的结果。你可以发现每个节点其实回覆的时间大约在50 ms 以内,算是还可以的Internet 环境了。 比较特殊的算是第10/12 个,会回传星号的,代表该node 可能设有某些防护措施,让我们发送的封包资讯被丢弃所致。因为我们是直接透过路由器转递封包,并没有进入路由器去取得路由器的使用资源,所以某些路由器仅支援封包转递, 并不会接受来自用户端的各项侦测啦!此时就会出现上述的问题。因为traceroute 预设使用UDP 封包,如果你想尝试使用其他封包, 那么-I 或-T 可以试看看啰! 由于目前UDP/ICMP 的攻击层出不穷,因此很多路由器可能就此取消这两个封包的回应功能。所以我们可以使用TCP 来侦测呦!例如使用同样的方法,透过等待时间1 秒,以及TCP 80 埠口的情况下,可以这样做:
5.2.3 察看本机的网路连线与后门: netstat 如果你觉得你的某个网路服务明明就启动了,但是就是无法造成连线的话,那么应该怎么办?首先你应该要查询一下自己的网路介面所监听的埠口(port) 来看看是否真的有启动,因为有时候萤幕上面显示的[OK] 并不一定是OK 啊!^_^
netstat 的输出主要分为两大部分,分别是TCP/IP 的网路介面部分,以及传统的Unix socket 部分。还记得我们在基础篇里面曾经谈到档案的类型吗?那个socket 与FIFO 档案还记得吧?那就是在Unix 介面用来做为程式资料交流的介面了,也就是上头表格内看到的Active Unix domain sockets 的内容啰~ 通常鸟哥都是建议加上『 -n 』这个参数的,因为可以避过主机名称与服务名称的反查,直接以IP 及埠口号码(port number) 来显示,显示的速度上会快很多!至于在输出的讯息当中, 我们先来谈一谈关于网路连线状态的输出部分,他主要是分为底下几个大项:
基本上,我们常常谈到的netstat的功能,就是在观察网路的连线状态了,而网路连线状态中,又以观察『我目前开了多少的port在等待用户端的连线』以及『目前我的网路连线状态中,有多少连线已建立或产生问题』最常见。那你如何了解与观察呢?通常鸟哥是这样处理的:
你可以发现很多的网路服务其实仅针对本机的lo 开放而已,网际网路是连接不到该埠口与服务的。而由上述的资料我们也可以看到,启动port 111 的,其实就是rpcbind 那只程式,那如果想要关闭这个埠口, 你可以使用kill 删除PID 969,也可以使用killall 删除rpcbind 这个程序即可。如此一来, 很轻松的你就能知道哪个程式启动了哪些埠口啰!
看到上头的特殊字体吧?那代表目前已经建立连线的一条网路连线,他是由远端主机192.168.1.101启动一个大于1024的埠口向本地端主机192.168.1.100的port 22进行的一条连线,你必须要想起来的是:『Client端是 随机取一个大于1024以上的port进行连线』,此外『只有root可以启动小于1024以下的port』,那就看的懂上头那条连线啰!如果这条连线你想要砍掉他的话,看到最右边的4716了没?kill会用吧!^_^ 至于传统的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 啦!底下让我们来聊聊这两个指令吧!
这个指令可以用来查出某个主机名称的IP 喔!举例来说,我们想要知道tw.yahoo 的IP 时,可以这样做:
瞧!IP是119.160.246.241啊!很简单就可以查询到IP了!那么这个IP是向谁查询的呢?其实就是写在/etc/resolv.conf 那个档案内的DNS伺服器IP啦!如果不想要使用该档案内的主机来查询,也可以这样做:
会告诉我们所使用来查询的主机是哪一部呐!这样就够清楚了吧!不过,再怎么清楚也比不过 dig 这个指令的,所以这个指令仅是参考参考啦!
这玩意儿的用途与host基本上是一样的,就是用来作为IP与主机名称对应的检查,同样是使用/etc/resolv.conf 这个档案来作为DNS伺服器的来源选择。
如何,看起来与host差不多吧!不过,这个nslookup还可以由IP找出主机名称喔!例如那个范例二,他的主机名称是: dns.hinet哩!目前大家都建议使用dig这个指令来取代nslookup ,我们会在第十九章DNS伺服器那时再来好好谈一谈吧! 5.3 远端连线指令与即时通讯软体 啥是远端连线呢?其实就是在不同的电脑之间进行登入的情况啦!我们可以透过telnet, ssh 或者是ftp 等协定来进行远端主机的登入。底下我们就分别来介绍一下这些基本的指令吧!这里仅是谈到用户端功能喔, 相关的伺服器我们则会在后续进行说明的。 5.3.1 终端机与BBS 连线: telnet telnet是早期我们在个人电脑上面要连结到伺服器工作时,最重要的一个软体了!他不但可以直接连接到伺服器上头,还可以用来连结BBS呢!非常棒!不过, telnet本身的资料在传送的时候是使用明码(原始的资料,没有加密) ,所以资料在Internet上面跑的时候,会比较危险一点(就怕被别人监听啊)。更详细的资料我们会在第十一章远端连线伺服器内做介绍的。
如上所示,我们可以透过telnet轻易的连结到BBS上面,而如果你的主机有开启telnet伺服器服务的话,同样的利用『 telnet IP 』并且输入帐号与密码之后,就能够登入主机了。另外,在Linux上的telnet软体还提供了Kerberos的认证方式,有兴趣的话请自行参阅man telnet的说明。 除了连结到伺服器以及连结到BBS 站之外, telnet 还可以用来连结到某个port (服务) 上头呐!举例来说,我们可以用telnet 连接到port 110 ,看看这个port 是否有正确的启动呢?
瞧!根据输出的结果,我们就能够知道这个通讯协定(port number 提供的通讯协定功能) 是否有成功的启动呐!而在每个port 所监听的服务都有其特殊的指令,例如上述的port 25 就是在本机介面所提供的电子邮件服务, 那个服务所支援的指令就如同上面使用的资料一样,但是其他的port 就不见得支援这个『 ehlo 』的命令, 因为不同的port 有不同的程式嘛!所以当然支援的命令就不同啰! 5.3.2 FTP 连线软体: ftp, lftp 现在的人们由于有高容量的email 可以用,因此传送档案可以很轻松的透过email 。不过email 还是有单封信件容量限制, 如果想要一口气传送个几百MB 的档案,恐怕还是得要透过FTP 这个通讯协定才行啊!文字介面的FTP 软体主要有ftp, lftp 两个,图形介面的呢?在CentOS 上面预设有gftp 这个好用的东东。在这里我们仅介绍文字介面的两个指令而已。
ftp 这个指令很简单,用在处理FTP 伺服器的下载资料啦。由于鸟哥所在的位置在昆山科大,因此这里使用昆山科大的FTP 伺服器为例:
FTP其实算是一个很麻烦的协定,因为他使用两个port分别进行命令与资料的交流,详细的资料我们会在第二十一章的FTP伺服器内详谈,这里我们先单纯的介绍一下如何使用ftp这个软体。首先我们当然是需要登入啰,所以在上头的表格当中我们当然需要填入帐号与密码了。不过由于昆山科大仅提供匿名登入,而匿名登入者的帐号就是『 anonymous 』所以直接填写那个帐号即可。如果是私人的FTP时,才需要提供一组完整的帐号与密码啦! 登入FTP 主机后,就能够使用ftp 软体的功能进行上传与下载的动作,几个常用的ftp 内指令如上表,不过,鸟哥建议你可以连到大学的FTP 网站后,使用help (或问号? ) 来参考可用的指令,然后尝试下载以测试使用一下这个指令吧!这样以后没有浏览器的时候,你也可以到ftp 下载了呢!不错吧!另外你要注意的是,离开ftp 软体时,得要输入『 bye 』喔!不是『 exit 』啦! 如果由于某些理由,让你的FTP 主机的port 开在非正规的埠口时,那你就可以利用底下的方式来连接到该部主机喔!
单纯使用ftp 总是觉得很麻烦,有没有更快速的ftp 用户软体呢?让我们可以使用类似网址列的方式来登入FTP 伺服器啊?有的,那就是lftp 的功能了!lftp 预设使用匿名登入FTP 伺服器,可以使用类似网址列的方式取得资料, 使用上比单纯的ftp 要好用些。此外,由于可在指令列输入帐号/密码,可以辅助进行程式脚本的设计喔!
至于登入FTP 主机后,一样可以使用『help』来显示出可以执行的指令,与ftp 很类似啦!不过多了书签的功能,而且也非常的类似 bash 呐!很不错呦!除了这个好用的文字介面的FTP 软体之外,事实上还有很多图形介面的好用软体呢!最常见的就是gftp 了,非常的容易上手喔!CentOS 本身就有提供gftp 了,你可以拿出原版的光碟来安装,然后进入X Window 后, 启动一个shell ,输入『 gftp 』就能够发现他的好用啦! 如果你想要定时的去捉下昆山科大FTP 网站下的/pub/CentOS/RPM-GPG* 的档案时,那么那个脚本应该要怎么写呢?我们尝试来写写看吧!
若为非匿名登入时,则可以使用『 open -u username,password hostname 』修改lftp.ksu.sh 的第一行!如果再将这个脚本写入crontab 当中,你就可以定时的以FTP 进行上传/下载的功能啰!这就是文字指令的好处! 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就是个好方法啦!可以看的清清楚楚啊!^_^
当我直接输入links 网站网址后,就会出现如下的图示: 图5.4-1、使用links 查询网页资料的显示结果 上面这个画面的基本说明如下:
至于如果是浏览Linux 本机上面的网页档案,那就可以使用如下的方式:
在鸟哥的CentOS 6.x 当中,有这么一个档案,我就可以利用links 来取出察看呐!显示的结果有点像底下这样: 图5.4-2、使用links 查询本机的HTML 文件档案 当然啦!因为你的环境可能是在Linux 本机的tty1~tty6 ,所以无法显示出中文,这个时候你就得要设定为: 『LANG=en_US』之类的语系设定才行喔!另外,如果某些时刻你必须上网点选某个网站以自动取得更新时。举例来说,早期的自动线上更新主机名称系统,仅支援网页更新,那你如何进行更新呢?嘿嘿!可以使用links 喔!利用 -dump 这个参数处理先:
上面的网站后面有加个问号(?) 对吧?后面接的则是利用网页的『 GET 』功能取得的各项变数资料, 利用这个功能,我们就可以直接点选到该网站上啰!非常的方便吧!而且会将执行的结果输出到testfile 档案中,不过如果网站提供的资料是以『 POST 』为主的话,那鸟哥就不知道如何搞定了。GET 与POST 是WWW 通讯协定中,用来将资料透过浏览器上传到伺服器端的一种方式, 一般来说,目前讨论区或部落格等,大多使用可以支援较多资料的POST 方式上传啦!关于GET 与POST 的相关资讯我们会在第二十章WWW 伺服器当中再次的提及! 5.4.2 文字介面下载器: wget 如果说links 是在进行网页的『浏览』,那么wget 就是在进行『网页资料的取得』。举例来说,我们的Linux 核心是放置在www.kernel 内,主要同时提供ftp 与http 来下载。我们知道可以使用lftp 来下载资料,但如果想要用浏览器来下载呢?那就利用wget 吧!
你瞧瞧~很可爱吧!不必透过浏览器,只要知道网址后,立即可以进行档案的下载, 又快速又方便,还可以透过proxy 的帮助来下载呢!透过修改/etc/wgetrc 来设定你的代理伺服器:
5.5 封包撷取功能 很多时候由于我们的网路连线出现问题,使用类似ping的软体功能却又无法找出问题点,最常见的是因为路由与IP转递后所产生的一些困扰(请参考防火墙与NAT主机部分),这个时候要怎么办?最简单的方法就是『分析封包的流向』啰!透过分析封包的流向,我们可以了解一条连线应该是如何进行双向的连线的动作,也就会清楚的了解到可能发生的问题所在了!底下我们就来谈一谈这个tcpdump与图形介面的封包分析软体吧! 5.5.1 文字介面封包撷取器: tcpdump 说实在的,对于tcpdump这个软体来说,你甚至可以说这个软体其实就是个骇客软体,因为他不但可以分析封包的流向,连封包的内容也可以进行『监听』,如果你使用的传输资料是明码的话,不得了,在router或hub上面就可能被人家监听走了!我们在第二章谈到的CSMA/CD 流程中,不是说过有所谓的『监听软体』吗?这个tcpdump就是啦!很可怕呐!所以,我们也要来了解一下这个软体啊!(注:这个tcpdump必须使用root的身份执行)
如果你是第一次看tcpdump的man page时,肯定一个头两个大,因为tcpdump几乎都是分析封包的表头资料,使用者如果没有简易的网路封包基础,要看懂粉难呐!所以,至少你得要回到网路基础里面去将TCP封包的表头资料理解理解才好啊!^_^!至于那个范例一所产生的输出范例中,我们可以约略区分为数个栏位,我们以范例一当中那个特殊字体行来说明一下:
最简单的说法,就是该封包是由192.168.1.100传到192.168.1.101,透过的port是由22到1937 ,使用的是PUSH的旗标,而不是SYN之类的主动连线标志。呵呵!不容易看的懂吧!所以说,上头才讲请务必到TCP表头资料的部分去瞧一瞧的啊! 再来,一个网路状态很忙的主机上面,你想要取得某部主机对你连线的封包资料而已时, 使用tcpdump 配合管线命令与正规表示法也可以,不过,毕竟不好捉取!我们可以透过tcpdump 的表示法功能,就能够轻易的将所需要的资料独立的取出来。在上面的范例一当中,我们仅针对eth0 做监听,所以整个eth0 介面上面的资料都会被显示到萤幕上, 不好分析啊!那么我们可以简化吗?例如只取出port 21 的连线封包,可以这样做:
瞧!这样就仅提出port 21 的资讯而已,且仔细看的话,你会发现封包的传递都是双向的, client 端发出『要求』而server 端则予以『回应』,所以,当然是有去有回啊!而我们也就可以经过这个封包的流向来了解到封包运作的过程。举例来说:
那么输出的结果会是如何?
上表显示的头两行是tcpdump 的基本说明,然后:
从第3-5行的流程来看,熟不熟悉啊?没错!那就是三向交握的基础流程啦!够有趣吧!不过tcpdump之所以被称为骇客软体之一可不止上头介绍的功能呐!上面介绍的功能可以用来作为我们主机的封包连线与传输的流程分析,这将有助于我们了解到封包的运作,同时了解到主机的防火墙设定规则是否有需要修订的地方。 更神奇的使用要来啦!如果我们使用tcpdump 在router 上面监听『明码』的传输资料时, 例如FTP 传输协定,你觉得会发生什么问题呢?我们先在主机端下达『 tcpdump -i lo port 21 -nn -X 』然后再以ftp 登入本机,并输入帐号与密码, 结果你就可以发现如下的状况:
上面的输出结果已经被简化过了,你必须要自行在你的输出结果当中搜寻相关的字串才行。从上面输出结果的特殊字体中,我们可以发现『该FTP软体使用的是vsftpd ,并且使用者输入dmtsai这个帐号名称,且密码是mypasswordisyou』嘿嘿!你说可不可怕啊!如果使用的是明码的方式来传输你的网路资料?所以我们才常常在讲啊,网路是很不安全滴! 另外你得了解,为了让网路介面可以让tcpdump 监听,所以执行tcpdump 时网路介面会启动在『错乱模式(promiscuous)』,所以你会在/var/log/messages 里面看到很多的警告讯息, 通知你说你的网路卡被设定成为错乱模式!别担心,那是正常的。至于更多的应用,请参考man tcpdump 啰!
5.5.2 图形介面封包撷取器: wireshark tcpdump是文字介面的封包撷取器,那么有没有图形介面的?有啊!那就是wireshark ( 注1 )这套软体。这套软体早期称为ethereal ,目前同时提供文字介面的tethereal以及图形介面的wireshark两个咚咚。由于我们当初安装时预设并没有装这套,因此妳必须要先使用yum去网路安装喔!也可以拿出光碟来安装啦!有两套需要安装,分别是文字介面的wireshark以及图形介面的wireshark-gnome软体。安装方式如下:
启动这套软体的方法很简单,你必须要在X Window 底下,透过『应用程式』-->『网际网路』-->『wireshark network analyzer』就可以启动啦!启动的画面如下所示: 图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 啦!)
这个最简单的功能与telnet 几乎一样吧!可以去检查某个服务啦!不过,更神奇的在后面, 我们可以建立两个连线来传讯喔!举个例子来说,我们先在伺服器端启动一个port 来进行倾听:
接下来你再开另外一个终端机来看看,也利用nc 来连线伺服器,并且输入一些指令看看喔!
此时,在用户端我们可以打入一些字,你会发现在伺服器端会同时出现你输入的字眼呐!如果你同时给予一些额外的参数,例如利用标准输入与输出(stdout, stdin) 的话,那么就可以透过这个连线来作很多事情了!当然nc 的功能不只如此,你还可以发现很多的用途喔!请自行到你主机内的/usr/share/doc/nc-1.84/scripts/ 目录下看看这些script ,有帮助的呐!不过,如果你需要额外的编译出含有GAPING_SECURITY_HOLE 功能, 以使两端连线可以进行额外指令的执行时,就得要自行下载原始码来编译了! 5.6 重点回顾
5.7 本章习题
5.8 参考资料与延伸阅读
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 is designed by VBird during 2001-2011. ksu.edu
版权声明:本文标题:Linux常用网路指令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754797389a2729214.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论