来源于鸟哥的私房菜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 值分别为︰
网络接口 MTU
Ethernet 1500
PPPoE 1492
Dial-up(Modem) 576
网络上也有免费帮忙查询 MTU 与传输相关数据的网站,例如底下这个网站:
•