Linux 常用网络指令介绍二

来源于鸟哥的私房菜

iwlist, iwconfig
这两个指令您必须要有无线网卡才能够进行喔!这两个指令的用途是这样的:
•    iwlist:利用无线网卡进行无线 AP 的侦测与取得相关的数据;
•    iwconfig:设定无线网卡的相关参数。
这两个指令的应用我们在前一章里面的 无线网卡设定 谈了很多了,所以这里我们不再详谈,有兴趣的朋友应该先使用 man iwlist 与 man iwconfig 了解一下语法, 然后再到前一章的无线网络小节查一查相关的用法,就了解了啦! ^_^
________________________________________
dhclient
如果你是使用 DHCP 协议在局域网络内取得 IP 的话,那么是否一定要去编辑 ifcfg-eth0 内的 BOOTPROTO 呢? 嘿嘿!有个更快速的作法,那就是利用 dhclient 这个指令~因为这个指令才是真正发送 dhcp 要求工作的程序啊!那要如何使用呢?很简单!如果不考虑其它的参数,使用底下的方法即可:
[root@linux ~]# dhclient eth0
够简单吧!这样就可以立刻叫我们的网络卡以 dhcp 协议去尝试取得 IP 喔! 不过在 SuSE distribution 里面,他仅有 dhcpcd 这支程序,他与 dhclient 是相同的咚咚啦! ^_^
________________________________________
网络侦错与观察指令:
在网络的互助论坛中,最常听到的一句话就是:『高手求救!我的 Linux 不能连上网络了!』我的天�龋〔荒苌贤�络的原因多的很!而要完全搞懂也不是一件简单的事情呢! 不过,事实上我们可以自己使用测试软件来追踪可能的错误原因,而很多的网络侦测指令其实在 Linux 里头已经都预设存在了,只要您好好的学一学基本的侦测指令,那么一些朋友在告诉您如何侦错的时候, 您应该就立刻可以知道如何来搞定他��!好了,底下我们就简单的来谈一谈几个很基本的网络常用的侦错指令啦!
________________________________________
ping
这个 ping 是很重要的指令,ping 主要透过 ICMP 封包 来进行整个网络的状况报告,当然啦,最重要的就是那个 ICMP type 0, 8 这两个类型, 分别是要求回报与主动回报网络状态是否存在的特性。要特别注意的是, ping 还是需要透过 IP 封包来传送 ICMP 封包的, 而 IP 封包里面有个相当重要的 TTL (Time To Live) 属性,这是很重要的一个路由特性, 详细的 IP 与 ICMP 表头资料请参考网络基础的详细介绍。
[root@linux ~]# ping [-bcstnM] IP
参数:
-b :后面接的是 broadcast 的 IP,用在你『需要对整个网域的主机进行 ping 』时;
-c :后面接的是执行 ping 的次数,例如 -c 5 ;
-n :不进行 IP 与主机名称的反查,直接使用 IP ;
-s :发送出去的 ICMP 封包大小,预设为 56(bytes),再加 8 bytes 的 ICMP 表头资料
-t :TTL 的数值,预设是 255,每经过一个节点就会少一;
-M [do|dont] :主要在侦测网络的 MTU 数值大小,两个常见的项目是:
   do  :代表传送一个 DF (Don't Fragment) 旗标,让封包不能重新拆包与打包;
   dont:代表不要传送 DF 旗标,表示封包可以在其它主机上拆包与打包

范例一:侦测一下 168.95.1.1 这部 DNS 主机是否存在?
[root@linux ~]# ping -c 3 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms
64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms

--- 168.95.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2
ping 最简单的功能就是传送 ICMP 封包去要求对方主机响应是否存在于网络环境中, 上面的响应讯息当中,几个重要的项目是这样的:
•    64 bytes:表示这次传送的 ICMP 封包大小为 64 bytes 这么大,这是默认值, 在某些特殊场合中,例如要搜索整个网络内最大的 MTU 时,可以使用 -s 2000 之类的数值来取代;
•    icmp_seq=0:ICMP 所侦测进行的次数,第一次编号为 0 ;
•    ttl=243:TTL 与 IP 封包内的 TTL 是相同的,每经过一个带有 MAC 的节点 (node) 时,例如 router, bridge 时, TTL 就会减少一,预设的 TTL 为 255 , 你可以透过 -t 150 之类的方法来重新设定预设 TTL 数值;
•    time=9.16 ms:响应时间,单位有 ms(0.001秒)及 us(0.000001秒), 一般来说,越小的响应时间,表示两部主机之间的网络联机越良好!
如果你忘记加上 -c 3 这样的规定侦测次数,那就得要使用 [ctrl]-c 将他结束掉了!
范例二:针对整个网域进行 ping 的追查
[root@linux ~]# ping -c 3 -b 192.168.10.255
WARNING: pinging broadcast address          <==会告知危险喔!
PING 192.168.10.255 (192.168.10.255) 56(84) bytes of data.
64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.177 ms
64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.179 ms (DUP!)
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.302 ms (DUP!)
64 bytes from 192.168.10.40: icmp_seq=1 ttl=64 time=0.304 ms (DUP!)
# 当要针对整部主机作 ping 的侦测时,可以利用 -b 这个参数。
# 请特别注意,当使用 ping -b 时,会对整个网域进行侦测喔!没事别乱用。
# 例如上面的范例中,区网内的 192.168.10.20... 等主机会被侦测到。
如果想要了解区网内有多少部主机存活着,那么使用 ping -b broadcast 就能够知道了! 而不必一部一部主机来侦测啊!方便~另外也特别注意一下, 如果您的主机与待侦测主机并不在同一个网域内, 那么 TTL 预设使用 255 ,如果是同一个网域内,那么 TTL 预设则使用 64 喔! 看看上面的输出即可了解。

用 ping 追踪最大 MTU 数值

我们由前几章的网络基础里面谈到加大讯框 (frame) 时, 对于网络效能是有帮助的,因为封包打包的次数会减少,加上如果整个传输的媒体都能够接受这个 frame 而不需要重新进行封包的拆解与重组的话,那么效能当然会更好,那个修改 frame 大小的参数就是 MTU 啦!好了,现在我们知道网络卡的 MTU 可以透过 ifconfig 或者是 ip 等来达成, 那么追踪整个网络传输的最大 MTU 时,又该如何查询?呵呵!最简单的方法当然是透过 ping 传送一个大封包, 并且不许中继的路由器或 switch 将该封包重组,那就能够处理啦!没错!可以这样的:
范例三:找出最大的 MTU 数值
[root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 1000(1028) bytes of data.
1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms
# 如果有响应,那就是可以接受这个封包,如果无响应,那就表示这个 MTU 太大了。

[root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1500
# 这个错误讯息是说,本地端的 MTU 才到 1500 而已,你要侦测 8000 的 MTU
# 根本就是无法达成的!那要如何是好?用前一小节介绍的 ip link 来进行 MTU 设定吧!
不过,你需要知道的是,由于 IP 封包表头 (不含 options) 就已经占用了 20 bytes ,再加上 ICMP 的表头有 8 bytes ,所以当然你在使用 -s size 的时候,那个封包的大小就得要先扣除 (20+8=28) 的大小了。 因此如果要使用 MTU 为 1500 时,就得要下达『 ping -s 1472 -M do xx.yy.zz.ip 』才行啊! 另外,由于本地端的网络卡 MTU 也会影响到侦测,所以如果想要侦测整个传输媒体的 MTU 数值, 那么每个可以调整的主机就得要先使用 ifcofig 或 ip 先将 MTU 调大,然后再去进行侦测, 否则就会出现像上面提供的案例一样,可能会出现『Message too long, mtu=1500』之类的字样喔! 至于如果侦测完毕后,想要调整最佳化的 MTU ,那么请参考前一章节的内容来调整��! ^_^

不过这个 MTU 不要随便调整啊!除非真的有问题。通常调整 MTU 的时间是在这个时候:
•    因为全部的主机群都是在内部的区网,例如丛集架构 (cluster) 的环境下, 由于内部的网络节点都是我们可以控制的,因此可以透过修改 MTU 来增进网络效能;
•    因为操作系统预设的 MTU 与您的网域不符,导致某些网站可以顺利联机,某些网站则无法联机。 以 Windows 操作系统作为联机分享的主机时,在 Client 端挺容易发生这个问题;
如果是要连上 Internet 的主机,注意不要随便调整 MTU ,因为我们无法知道 Internet 上面的每部机器能够支持的 MTU 到多大,因为......不是我们能够管的到的嘛! ^_^

另外,其实每种联机方式都有不同的 MTU 值,常见的各种接口的 MTU 值分别为�U
网络接口    MTU
Ethernet    1500
PPPoE    1492
Dial-up(Modem)    576

网络上也有免费帮忙查询 MTU 与传输相关数据的网站,例如底下这个网站:
•     [url]http://forums.speedguide.net:8117/[/url]
连接上这个网站之前,请先取消您浏览器上的代理服务器 (Proxy) 的设定,才能显示出正确的讯息。 如果在 Windows 的系统上面想要修改 MTU 值的话,那就得要修改 Windows 的登录档, 在 Windows 上面对于 MTU 的侦测与修改的详细作法可以参考微软的官方网站:
•     [url]http://www.microsoft.com/taiwan/msclub/member/TIPS/Spring_2001/tip1to3/tip1to3_2.htm[/url]
________________________________________
traceroute
我们前面谈到的指令大多数都是针对主机的网络参数设定所需要的,而 ping 是两部主机之间的回声与否判断, 那么有没有指令可以追踪两部主机之间通过的各个节点 (node) 通讯状况的好坏呢? 举例来说,如果我们联机到 yahoo 的速度比平常慢,你觉得是 (1)自己的网络环境有问题? (2)还是外部的 Internet 有问题?如果是 (1) 的话,我们当然需要检查自己的网络环境啊, 看看是否又有谁中毒了?但如果是 Internet 的问题呢?那只有『等等等』啊! 判断是 (1) 还是 (2) 就得要使用 traceroute 这个指令啦!
[root@linux ~]# traceroute [-nwig] IP
参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒
-i :用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数;
     举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两个 ppp,
     你可以使用 -i 来选择是 ppp0 还是 ppp1 啦!
-g :与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。

范例一:
[root@linux ~]# traceroute -n tw.yahoo.com
traceroute to tw.yahoo-ap1.akadns.net (203.84.202.164), 30 hops max, 38 byte packets
1  61.59.121.1  42.174 ms  41.690 ms  41.058 ms
2  139.175.172.2  40.962 ms  41.978 ms  40.973 ms
3  192.72.122.130  40.983 ms  41.930 ms  41.003 ms
4  139.175.58.210  42.956 ms  41.997 ms  42.337 ms
5  139.175.58.153  47.591 ms  47.972 ms  48.748 ms
6  139.175.56.30  48.193 ms  47.970 ms  47.986 ms
7  139.175.57.94  47.959 ms  47.951 ms  47.985 ms
8  139.175.56.138  48.363 ms  47.586 ms  47.995 ms
9  139.175.58.42  49.256 ms  50.668 ms  47.490 ms
10  61.58.33.133  201.882 ms  201.565 ms  200.973 ms
11  61.58.33.50  199.910 ms  199.019 ms  198.961 ms
12  203.84.200.226  202.391 ms  202.567 ms  209.283 ms
这个 traceroute 挺有意思的,这个指令会针对欲连接的目的地之所有 router 进行 ICMP 的逾时等待, 例如上面的例子当中,由鸟哥的主机连接到 Yahoo 时,他会经过 12 个节点,traceroute 会主动的对这 12 个节点做 ICMP 的回声等待,并侦测回复的时间,每个节点会侦测三次。 所以像上头显示的结果,发现每个节点其实回复的时间大约在 200 ms 以内,算是还可以的 Internet 环境了。 而且由上面的信息来看,可以看出在 61.58.33.133 这个节点后的传输延迟较久,至于之前的 9 个节点则有不错的表现。透过这种解析,可以让您了解到这条联机是那个环节出了问题喔。

另外,如果在预设的 5 秒钟之内 traceroute 听不到节点的回声,那么屏幕上就会跑出一个『 * 』的符号, 告知该节点无法有顺利的响应。由于我们的 traceroute 用的是 ICMP 封包,有些防火墙或者主机可能会将 ICMP 可通过的权力拿掉,因此就会造成等不到回声的状态!另外,有些 gateway 本来就不支持 traceroute 的功能,因此也会产生那个『 * 』的状况。所以分析时得要注意一下�龋�
________________________________________
netstat
如果你觉得你的某个网络服务明明就启动了,但是就是无法造成联机的话,那么应该怎么办? 首先你应该要查询一下自己的网络接口所监听的端口口 (port) 来看看是否真的有启动, 因为有时候屏幕上面显示的 [OK] 并不一定是 OK 啊! ^_^
[root@linux ~]# netstat -[rn]       <==与路由有关的参数
[root@linux ~]# netstat -[antulpc]  <==与网络接口有关的参数
参数:
与路由 (route) 有关的参数说明:
-r  :列出路由表(route table),功能如同 route 这个指令;
-n  :不使用主机名称与服务名称,使用 IP 与 port number ,如同 route -n
与网络接口有关的参数:
-a  :列出所有的联机状态,包括 tcp/udp/unix socket 等;
-t  :仅列出 TCP 封包的联机;
-u  :仅列出 UDP 封包的联机;
-l  :仅列出有在 Listen (监听) 的服务之网络状态;
-p  :列出 PID 与 Program 的�n名;
-c  :可以设定几秒钟后自动更新一次,例如 -c 5 每五秒更新一次网络状态的显示;

范例一:列出目前的路由表状态,且以 IP 及 port number 显示:
[root@linux ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.10.30   0.0.0.0         UG        0 0          0 eth0
# 其实这个参数就跟 route -n 一模一样,对吧!这不是 netstat 的主要功能啦!

范例二:列出目前的所有网络联机状态,使用 IP 与 port number
[root@linux ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::ffff:192.168.10.100:25    ::ffff:192.168.10.200:57509 TIME_WAIT
tcp        0     52 ::ffff:192.168.10.100:22    ::ffff:192.168.10.210:1504  ESTABLISHED
udp        0      0 127.0.0.1:53                0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     4792   public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     4799   private/rewrite
......(底下省略)......
netstat 的输出主要分为两大部分,分别是 TCP/IP 的网络接口部分,以及传统的 Unix socket 部分。 还记得我们在基础篇里面曾经谈到档案的类型吗?那个 socket 与 FIFO 档案还记得吧? 那就是在 Unix 接口用来做为程序数据交流的接口了,也就是上头表格内看到的 Active Unix domain sockets 的内容��~

通常鸟哥都是建议加上『 -n 』这个参数的,因为可以避过主机名称与服务名称的反查,直接以 IP 及端口口号码 (port number) 来显示,显示的速度上会快很多!至于在输出的讯息当中, 我们先来谈一谈关于网络联机状态的输出部分,他主要是分为底下几个大项:
•    Proto:该联机的封包协议,主要为 TCP/UDP 等封包;
•    Recv-Q:非由使用者程序连接所复制而来的总 bytes 数;
•    Send-Q:由远程主机所传送而来,但不具有 ACK 标志的总 bytes 数, 意指主动联机 SYN 或其它标志的封包所占的 bytes 数;
•    Local Address:本地端的地址,可以是 IP (-n 参数存在时), 也可以是完整的主机名称。如上表我们看到的 IP 格式有两种,一种是 IPv4 的标准, 亦即是四组十进制的数字后面加上冒号『:』后,接着 port number 。一种是 IPv6 , 前面的 IP 加上很多冒号『:』的格式。我们可以由这个显示的数据看出这个服务是开放在哪一个接口, 例如上表当中, port 22 是开放在 0.0.0.0 ,亦即是所有接口都可以连到 port 22 , 至于 port 53 则仅开放在本机的 127.0.0.1 这个接口而已,所以是不对外部接口开放的意思。
•    Foreign Address:远程的主机 IP 与 port number
•    stat:状态列,主要的状态含有:
o    ESTABLISED:已建立联机的状态;
o    SYN_SENT:发出主动联机 (SYN 标志) 的联机封包;
o    SYN_RECV:接收到一个要求联机的主动联机封包;
o    FIN_WAIT1:该插槽服务(socket)已中断,该联机正在断线当中;
o    FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封包;
o    TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束;
o    LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。
基本上,我们常常谈到的 netstat 的功能,就是在观察网络的联机状态了,而网络联机状态中, 又以观察『我目前开了多少的 port 在等待客户端的联机』以及 『目前我的网络联机状态中,有多少联机已建立或产生问题』最常见。 那你如何了解与观察呢?通常鸟哥是这样处理的:
范例三:秀出目前已经启动的网络服务
[root@linux ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address  State    PID/Program name
tcp        0      0 0.0.0.0:25      0.0.0.0:*        LISTEN   2141/master
tcp        0      0 :::22           :::*             LISTEN   1924/sshd
tcp        0      0 :::25           :::*             LISTEN   2141/master
udp        0      0 127.0.0.1:53    0.0.0.0:*                 1911/named
# 上面最重要的其实是那个 -l 的参数,因为可以仅列出有在 Listen 的 port
你可以在上面的范例当中发现,我的网络联机仅有对外开放 port 25 以及 port 22 而已 (因为针对 0.0.0.0 开放), 至于 port 53 则仅针对内部的 127.0.0.1 来开放,所以是不对 Internet 开放这个服务的喔! 而其中 port 22,25 都是使用 TCP 封包,至于 port 53 则是开放在 UDP 封包的状态! 再仔细的看,每一行输出的最右边,你可以发现鸟哥的主机 port 22 是由 sshd 这支程序所启动的, 并且他的 PID 是 1924 ,看到这边,聪明的您应该知道,『那我如何关闭这个 port 』吧?使用 kill 或 killall 即可啊! ^_^
范例四:观察本机上头所有的网络联机状态
[root@linux ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State       PID/Program name
tcp        0      0 0.0.0.0:25        0.0.0.0:*           LISTEN      2141/master
tcp        0      0 :::22             :::*                LISTEN      1924/sshd
tcp        0      0 :::25             :::*                LISTEN      2141/master
tcp        0     68 192.168.1.100:22  192.168.1.210:1504  ESTABLISHED 30417/sshd:
udp        0      0 127.0.0.1:53      0.0.0.0:*                       1911/named
看到上头的特殊字体吧?那代表目前已经建立联机的一条网络联机,他是由远程主机 192.168.1.210 启动一个大于 1024 的埠口向本地端主机 192.168.1.100 的 port 22 进行联机的一条联机, 你必须要想起来的是:『Client 端是随机取一个大于 1024 以上的 port 进行联机』,此外『只有 root 可以启动小于 1023 以下的 port 』,那就看的懂上头那条联机��!如果这条联机你想要砍掉他的话, 看到最右边的 30417/sshd 了没? kill 会用吧! ^_^

至于传统的 Unix socket 的数据,记得使用 man netstat 查阅一下吧! 这个 Unix socket 通常是用在一些仅在本机上运作的程序所开启的插槽接口文件, 例如 X Window 不都是在本机上运作而已吗?那何必启动网络的 port 呢?当然可以使用 Unix socket ��,另外,例如 Postfix 这一类的网络服务器,由于很多动作都是在本机上头来完成的, 所以以会占用很多的 Unix socket 喔!
例题一:请说明服务名称与 port number 的对应在 Linux 当中,是用那个档案来设定对应的?

答:
/etc/services

________________________________________
host
这个指令可以用来查出某个主机名称的 IP 喔!举例来说,我们想要知道 tw.yahoo.com 的 IP 时, 可以这样做:
[root@linux ~]# host [-a] hostname [server]
参数:
-a :列出该主机详细的各项主机名称设定数据
[server] :可以使用非为 /etc/resolv.conf 的 DNS 主机来查询。

范例一:列出 tw.yahoo.com 的 IP
[root@linux ~]# host tw.yahoo.com
tw.yahoo.com is an alias for tw.yahoo-ap1.akadns.net.
tw.yahoo-ap1.akadns.net has address 202.43.195.52
瞧!IP 是 202.43.195.52 啊!很简单就可以查询到 IP 了! 那么这个 IP 是向谁查询的呢?其实就是写在 /etc/resolv.conf 那个档案内的 DNS 主机啦!如果不想要使用该档案内的主机来查询,也可以这样做:
[root@linux ~]# host tw.yahoo.com 168.95.1.1
Using domain server:
Name: 168.95.1.1
Address: 168.95.1.1#53
Aliases:

tw.yahoo.com is an alias for tw.yahoo-ap1.akadns.net.
tw.yahoo-ap1.akadns.net has address 202.43.195.52
会告诉我们所使用来查询的主机是哪一部�龋≌庋�就够清楚了吧?至于更详细的 host 用法,我们会在 DNS 主机 那个章节再来好好聊一聊吧!
________________________________________
nslookup
这玩意儿的用途与 host 基本上是一样的,就是用来作为 IP 与主机名称对应的检查, 同样是使用 /etc/resolv.conf 这个档案来作为 DNS 服务器的来源选择。
[root@linux ~]# nslookup [-query=[type]] [hostname|IP]
参数:
-query=type:查询的类型,除了传统的 IP 与主机名称对应外,DNS 还有很多信息,
             所以我们可以查询很多不同的信息,包括 mx, cname 等等,
             例如: -query=mx 的查询方法!

范例一:找出 [url]www.google.com.tw[/url] 的 IP
[root@linux ~]# nslookup [url]www.google.com.tw[/url]
Server:         168.95.1.1
Address:        168.95.1.1#53

Non-authoritative answer:
[url]www.google.com.tw      [/url] canonical name = [url]www.google.com.[/url]
[url]www.google.com  canonical[/url] name = [url]www.l.google.com.[/url]
Name:   [url]www.l.google.com[/url]
Address: 64.233.189.104

范例二:找出 168.95.1.1 的主机名称
[root@linux ~]# nslookup 168.95.1.1
Server:         168.95.1.1
Address:        168.95.1.1#53

1.1.95.168.in-addr.arpa name = dns.hinet.net.
如何,看起来与 host 差不多吧!不过,这个 nslookup 还可以由 IP 找出主机名称喔! 例如那个范例二,他的主机名称是: dns.hinet.net 哩!目前大家都建议使用 dig 这个指令来取代 nslookup ,我们会在 DNS 服务器 那时再来好好谈一谈吧!
________________________________________
远程联机指令:
啥是远程联机呢?其实就是在不同的计算机之间进行登入的情况啦! 我们可以透过 telnet, ssh 或者是 ftp 等协议来进行远程主机的登入, 底下我们就分别来介绍一下这些基本的指令吧!另外,相关的服务器我们则会在后续进行说明的。
________________________________________
telnet
telnet 是早期我们在个人计算机上面要连结到服务器主机上工作时,最重要的一个软件了! 他不但可以直接连接到服务器上头,还可以用来连结 BBS 呢!非常棒! 不过, telnet 本身的数据在传送的时候是使用明码 (原始的数据,没有加密) , 所以数据在 Internet 上面跑的时候,会比较危险一点 (就怕被别人监听啊)。 更详细的资料我们会在『远程联机服务器』章节内做介绍的。
[root@linux ~]# telnet [host|IP] [port]

范例一:连结到成大梦之大地这个 BBS 站
[root@linux ~]# telnet bbs.dorm.ncku.edu.tw
bbs.ccns.ncku.edu.tw ⊙ 梦之大地 逼逼ㄟ四 ⊙ 140.116.250.3 [DreamBBS Ver.040223]
欢迎光临【 梦之大地 逼逼ㄟ四 】。系统负载:0.16 0.16 0.16 [负载正常]
  �q─┼────┼─�r        �q�r          ┌┤梦之大地├─────────┐
  �q──┬──┬──�r�q───┴┴──┬�r  │                              │
  �t──┴──┴──�s                │    │ 梦之大地由                   │
  �q────────�r            �q─�s    │    【计算机网络爱好社‧CCNS】  │
   �q───┬───�r       �q──�s        │                     维护管理 │
           │      │   �q─�s              │                              │
   �t───┴───�s �t┴───────�s  └─────────┤By BenHe├┘

  ┌┤本站站长群├────────┐          �q              �q    �q    �r
  │站长: billcho                 │  �q───┼────�r�q─┼─�q┼──┼�r
  │系统: cat                     │          │              │    │    ││
  │站务: muwell  ianwolf         │        �q�s�r            │    │    ││
  │      renn999 GG              │      �q�s  �t�r          │    │    │�s
  │                              │    �q�s      �t�r        │�q  │
  └───────────────┘  �t�s          �t─�s�t─┴�s  �t───�s
参观用账号:guest,申请新账号:new。目前在线人数 [2183/5000] 人。
请输入代号:          
如上所示,我们可以透过 telnet 轻易的连结到 BBS 上面, 而如果您的主机有开启 telnet 服务的话, 同样的利用『 telnet IP 』并且输入账号与密码之后,就能够登入主机了。 另外,在 Linux 上的 telnet 软件还提供了 Kerberos 的认证方式,有兴趣的话请自行参阅 man telnet 的说明。

除了连结到服务器以及连结到 BBS 站之外, telnet 还可以用来连结到某个 port (服务) 上头�龋� 举例来说,我们可以用 telnet 连接到 port 110 ,看看这个 port 是否有正确的启动呢?
范例二:侦测本机端的 110 这个 port 是否正确启动?
[root@linux ~]# telnet localhost 110
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# 如果出现这样的讯息,代表这个 port 没有启动或者是这个联机有问题,
# 因为您看到那个 refused 嘛!

[root@linux ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 vbird.vbird.idv.tw ESMTP Postfix
ehlo localhost
250-linux.dm.tsai
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
瞧!根据输出的结果,我们就能够知道这个通讯协议 (port number 提供的通讯协议功能) 是否有成功的启动�龋� 而在每个 port 所监听的服务都有其特殊的指令,例如上述的 port 25 就是在本机接口所提供的电子邮件服务, 那个服务所支持的指令就如同上面使用的数据一样,但是其它的 port 就不见得支持这个『 ehlo 』的命令, 因为不同的 port 有不同的程序嘛!所以当然支持的命令就不同��! 与 mail server 有关的 telnet 用法,我们将在邮件服务器内提到喔!

你可能感兴趣的:(linux,职场,休闲)