linux常用網(wǎng)絡(luò)命令
linux下網(wǎng)絡(luò)命令是最需要掌握的一部分命令。下面由學(xué)習(xí)啦小編為大家整理了linux常用網(wǎng)絡(luò)的相關(guān)知識(shí),希望大家喜歡!
linux常用網(wǎng)絡(luò)命令
所有時(shí)刻如果你想要做好自己的網(wǎng)絡(luò)參數(shù)設(shè)置,包括IP參數(shù)、路由參數(shù)和無(wú)線(xiàn)網(wǎng)絡(luò)等,就得要了解下面這些相關(guān)的命令才行。其中Route及ip這兩條命令是比較重要的。當(dāng)然,比較早期的用法,我們都是使用ifconfig的。
? ifconfig:查詢(xún)、設(shè)置網(wǎng)卡和IP網(wǎng)段等相關(guān)參數(shù)。
? ifup、ifdown:這兩個(gè)文件是Script,通過(guò)更簡(jiǎn)單的方式來(lái)啟動(dòng)網(wǎng)絡(luò)接口。
? Route:查詢(xún)、設(shè)置路由表(Route table)。
? ip:復(fù)合式的命令,能直接修改上述命令提到的功能。
ifconfig、ifup、ifdown
這 3個(gè)命令的用途都是啟動(dòng)網(wǎng)絡(luò)接口,不過(guò),ifup和ifdown僅就 /etc/sysconfig/network- scripts內(nèi)的ifcfg-ethx(x為數(shù)字)進(jìn)行啟動(dòng)或關(guān)閉的操作,并不能直接修改網(wǎng)絡(luò)參數(shù),除非手動(dòng)調(diào)整ifcfg-ethx文件才行。至于 ifconfig則能直接手動(dòng)給予某個(gè)接口IP或調(diào)整其網(wǎng)絡(luò)參數(shù)。下面我們就分別來(lái)談一談。
linux常用網(wǎng)絡(luò)命令1. ifconfig
ifconfig主要是能手動(dòng)啟動(dòng)、觀察和修改網(wǎng)絡(luò)接口的相關(guān)參數(shù),能修改的參數(shù)非常多,包括IP參數(shù)及MTU等都能修改,他的語(yǔ)法如下:
[root@linux ~]# ifconfig {interface} {up|down}
一 般來(lái)說(shuō),直接輸入ifconfig就會(huì)列出目前已被啟動(dòng)的卡,不論這個(gè)卡是否有設(shè)置IP,都會(huì)被顯示出來(lái)。而如果是輸入ifconfig eth0,則會(huì)顯示出這個(gè)接口的相關(guān)數(shù)據(jù),而不管該接口是否啟動(dòng)。所以,如果你想要知道某個(gè)網(wǎng)卡的Hardware Address,直接輸入“ifconfig"網(wǎng)絡(luò)接口代號(hào)"”即可。至于上述代碼中出現(xiàn)的各項(xiàng)數(shù)據(jù)是這樣的(數(shù)據(jù)排列由上而下、由左而右)。
? eth0:網(wǎng)卡的代號(hào),也有l(wèi)o這個(gè)loopback。
? HWaddr:網(wǎng)卡的硬件地址,習(xí)慣稱(chēng)為MAC。
? inet addr:IPv4的IP地址,后續(xù)的Bcase、Mask分別代表的是Broadcast和Netmask。
? inet6 addr:是IPv6的版本的IP,我們沒(méi)有使用,所以略過(guò)。
? RX:那一行代表的是網(wǎng)絡(luò)由啟動(dòng)到目前為止的數(shù)據(jù)包接收情況,packets代表數(shù)據(jù)包數(shù)、errors代表數(shù)據(jù)包發(fā)生錯(cuò)誤的數(shù)量、dropped代表數(shù)據(jù)包由于有問(wèn)題而遭丟棄的數(shù)量等。
? TX:和RX相反,為網(wǎng)絡(luò)由啟動(dòng)到目前為止的傳送情況。
? collisions:代表數(shù)據(jù)包碰撞的情況,如果發(fā)生太多次,表示你的網(wǎng)絡(luò)狀況不太好。
? txqueuelen:代表用來(lái)傳輸數(shù)據(jù)的緩沖區(qū)的儲(chǔ)存長(zhǎng)度。
? RX Bytes、TX Bytes:總傳送、接收的字節(jié)總量。
? Interrupt、Memory:網(wǎng)卡硬件的數(shù)據(jù),IRQ岔斷和內(nèi)存地址。
通過(guò)觀察上述的資料,大致上能了解到你的網(wǎng)絡(luò)情況,尤其是RX、TX內(nèi)的error數(shù)量,及是否發(fā)生嚴(yán)重的collision情況,都是需要注意的。
范例二:暫時(shí)修改網(wǎng)絡(luò)接口
[root@linux ~]# ifconfig eth0 192.168.100.100
# 如果不加所有其他參數(shù),則系統(tǒng)會(huì)依照該 IP 所在的 class 范圍,
# 自動(dòng)地計(jì)算出 netmask 及 network, broadcast 等 IP 參數(shù)
[root@linux ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128 \
> mtu 8000
# 設(shè)置網(wǎng)絡(luò)接口,同時(shí)設(shè)置 MTU 的數(shù)值
[root@linux ~]# ifconfig eth0 MTU 9000
# 僅修改該接口的 MTU 數(shù)值,其他的保持不動(dòng)
[root@linux ~]# ifconfig eth0:0 192.168.50.50
# 仔細(xì)看那個(gè)接口, eth0:0 。那就是在該網(wǎng)絡(luò)接口上,再仿真一個(gè)網(wǎng)絡(luò)接口,
# 亦即是在一個(gè)網(wǎng)卡上面設(shè)置多個(gè) IP 的意思啦
[root@linux ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2
inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3669 errors:0 dropped:0 overruns:0 frame:0
TX packets:2892 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:667547 (651.9 KiB) TX bytes:584799 (571.0 KiB)
Interrupt:209 Memory:fb000000-0
eth0:0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2
inet addr:192.168.200.2 Bcast:192.168.200.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:209 Memory:fb000000-0
# 仔細(xì)看,是否和硬件有關(guān)的信息都相同。沒(méi)錯(cuò)。因?yàn)槭峭粋€(gè)網(wǎng)卡。
[root@linux ~]# ifconfig eth0:0 down
# 關(guān)掉 eth0:0 這個(gè)接口。如果想要啟動(dòng) eth1 ,并且不設(shè)置所有網(wǎng)絡(luò)參數(shù)
# ifconfig eth1 up 就能實(shí)現(xiàn)
[root@linux ~]# /etc/init.d/network restart
# 剛剛設(shè)置的數(shù)據(jù)全部失效,會(huì)以 ifcfg-ethx 的設(shè)置為主
使 用ifconfig能暫時(shí)用手動(dòng)來(lái)設(shè)置或修改某個(gè)適配卡的相關(guān)功能,并且也能通過(guò)eth0:0這種虛擬的網(wǎng)絡(luò)接口來(lái)設(shè)置一張網(wǎng)卡上面的多個(gè)IP。手動(dòng)的方 式是比較簡(jiǎn)單。而且設(shè)置錯(cuò)誤也沒(méi)有關(guān)系,因?yàn)槲覀兡芾?/etc/init.d/network restart來(lái)重新啟動(dòng)整個(gè)網(wǎng)絡(luò)接口,那么之前手動(dòng)的設(shè)置數(shù)據(jù)會(huì)全部失效。另外,要啟動(dòng)某個(gè)網(wǎng)絡(luò)接口,但又不讓他具有IP參數(shù)時(shí),直接給他 ifconfig eth0 up即可。這個(gè)操作經(jīng)常在無(wú)線(xiàn)網(wǎng)卡當(dāng)中進(jìn)行,因?yàn)槲覀冃枰獑?dòng)無(wú)線(xiàn)網(wǎng)卡讓他去檢測(cè)AP存在和否。
linux常用網(wǎng)絡(luò)命令2. ifup、ifdown
實(shí)時(shí)地手動(dòng)修改一些網(wǎng)絡(luò)接口參數(shù),能利用ifconfig來(lái)實(shí)現(xiàn),如果是要直接以設(shè)置文件,亦即是在 /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件的設(shè)置參數(shù)來(lái)啟動(dòng)的話(huà),那就得要通過(guò)ifdown或ifup來(lái)實(shí)現(xiàn)了。
[root@linux ~]# ifup {interface}
[root@linux ~]# ifdown {interface}
[root@linux ~]# ifup eth0
ifup 和ifdown真是太簡(jiǎn)單了。這兩個(gè)程式其實(shí)是script而已,他會(huì)直接到 /etc/ sysconfig/network-scripts目錄下搜索對(duì)應(yīng)的設(shè)置文件,例如ifup eth0,他會(huì)找出ifcfg-eth0這個(gè)文件的內(nèi)容,然后加以設(shè)置。關(guān)于ifcfg-eth0的設(shè)置請(qǐng)參考前一章連上Internet的說(shuō)明。
不 過(guò),由于這兩個(gè)程式主要是搜索設(shè)置文件(ifcfg-ethx)來(lái)進(jìn)行啟動(dòng)和關(guān)閉的,所以在使用前請(qǐng)確定ifcfg-ethx是否真的存在于正確的目錄 內(nèi),否則會(huì)啟動(dòng)失敗。另外,如果以ifconfig eth0來(lái)設(shè)置或是修改了網(wǎng)絡(luò)接口后,就無(wú)法再以ifdown eth0的方式來(lái)關(guān)閉了。因?yàn)閕fdown會(huì)分析比較目前的網(wǎng)絡(luò)參數(shù)和ifcfg-eth0是否相符,不符的話(huà),就會(huì)放棄這次操作。因此,使用 ifconfig修改完畢后,應(yīng)該要以ifconfig eth0 down才能夠關(guān)閉該接口。
路由修改route
我們?cè)诰W(wǎng)絡(luò)基礎(chǔ)的時(shí)候談過(guò)關(guān)于路由的問(wèn)題,兩臺(tái)主機(jī)之間一定要有路由才能夠互通TCP/IP的協(xié)議,否則就無(wú)法進(jìn)行聯(lián)機(jī)。一般來(lái)說(shuō),只要有網(wǎng)絡(luò)接口,該接口就會(huì)產(chǎn)生一個(gè)路由,例如,在鳥(niǎo)哥實(shí)驗(yàn)室內(nèi)部的主機(jī)有一個(gè)eth0及l(fā)o,所以:
[root@linux ~]# route [-nee]
[root@linux ~]# route add [-net|-host] [網(wǎng)段或主機(jī)] netmask [mask] [gw|dev]
[root@linux ~]# route del [-net|-host] [網(wǎng)段或主機(jī)] netmask [mask] [gw|dev]
觀察的參數(shù):
-n,不要使用通信協(xié)議或主機(jī)名稱(chēng),直接使用 IP 或 Port Number;
-ee,使用更周詳?shù)男畔?lái)顯示;
增加 (add) 和刪除 (del) 路由的相關(guān)參數(shù);
-net,表示后面接的路由為一個(gè)網(wǎng)段;
-host,表示后面接的為連接到單臺(tái)主機(jī)的路由;
Netmask,和網(wǎng)段有關(guān),能設(shè)置 netmask 決定網(wǎng)段的大小;
Gw,gateway 的簡(jiǎn)寫(xiě),后續(xù)接的是 IP 的數(shù)值,和 dev 不同;
Dev,如果只是要指定由哪一塊網(wǎng)卡聯(lián)機(jī)出去,則使用這個(gè)設(shè)置,后面接 eth0 等。
范例一:?jiǎn)渭兊挠^察路由狀態(tài)
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use 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
[root@linux ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default Server.cluster 0.0.0.0 UG 0 0 0 eth0
在 上面的例子中仔細(xì)觀察route和route -n的輸出結(jié)果,你能發(fā)現(xiàn)有加-n參數(shù)的主要是顯示出IP,至于使用route,顯示的則是“主機(jī)名稱(chēng)”。也就是說(shuō),在默認(rèn)的情況下,route會(huì)去找出 該IP的主機(jī)名稱(chēng),如果未找到呢?就會(huì)顯示得遲鈍(有點(diǎn)慢),所以說(shuō),鳥(niǎo)哥通常都直接使用route-n了。由上面看起來(lái),我們也知道default = 0.0.0.0/0.0.0.0,而上面的信息有哪些你需要知道的呢?
? Destination、Genmask:這兩個(gè)術(shù)語(yǔ)就分別是Network和Netmask了。所以這兩個(gè)東西就組合成為一個(gè)完整的網(wǎng)段了。
? Gateway:該網(wǎng)段是通過(guò)哪個(gè)Gateway連接出去的?如果顯示0.0.0.0表示該路由是直接由本機(jī)傳送,亦即能通過(guò)局域網(wǎng)的MAC直接傳輸;如果有顯示IP的話(huà),表示該路由需要經(jīng)過(guò)路由器(網(wǎng)關(guān))的幫忙才能夠傳送出去。
? Flags:總共有多個(gè)標(biāo)記,代表的意義如下。
Ø U(route is up):該路由是啟動(dòng)的。
Ø H(target is a host):目標(biāo)是一臺(tái)主機(jī)(IP)而非網(wǎng)段。
Ø G(use gateway):需要通過(guò)外部的主機(jī)來(lái)傳遞數(shù)據(jù)包。
Ø R(reinstate route for dynamic routing):使用動(dòng)態(tài)路由時(shí),恢復(fù)路由信息的標(biāo)記。
Ø D(dynamically installed by daemon or redirect):已由服務(wù)器或轉(zhuǎn)port功能設(shè)置為動(dòng)態(tài)路由。
Ø M(modified from routing daemon or redirect):路由已被修改了。
Ø!(reject route):這個(gè)路由將不會(huì)被接受(用來(lái)阻止不安全的網(wǎng)段)。
? Iface:這個(gè)路由傳遞數(shù)據(jù)包的接口。
此 外,觀察一下上面的路由排列順序,依序是由小網(wǎng)段(192.168.10.0/24是Class C),逐漸到大網(wǎng)段(169.254.0.0/16 是Class B),最后則是默認(rèn)路由(0.0.0.0/0.0.0.0)。然后當(dāng)我們要判斷某個(gè)網(wǎng)絡(luò)數(shù)據(jù)包應(yīng)該怎么傳送的時(shí)候,該數(shù)據(jù)包會(huì)經(jīng)由這個(gè)路由的過(guò)程來(lái)判斷。 例如,我上頭僅有三個(gè)路由,若我有一個(gè)傳往192.168.10.20的數(shù)據(jù)包要傳遞,那首先會(huì)找192.168.10.0/24這個(gè)網(wǎng)段的路由,找到 了,就直接由eth0傳送出去。
如果是傳送到Y(jié)ahoo的主機(jī)呢?Yahoo的主機(jī)IP是202.43.195.52,我通過(guò)判斷不是 192.168.10.0/24,也不是169.254.0.0/16,結(jié)果到達(dá)0/0時(shí),傳出去了,通過(guò)eth0將數(shù)據(jù)包傳給 192.168.10.30那臺(tái)Gateway主機(jī)。所以說(shuō),路由是有順序的。
因此當(dāng)你重復(fù)設(shè)置多個(gè)同樣的路由時(shí),例如,在你的主機(jī)上的兩張網(wǎng)卡設(shè)置為相同網(wǎng)段的IP時(shí),會(huì)出現(xiàn)什么情況?會(huì)出現(xiàn)如下的情況:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
也就是說(shuō),由于路由是依照順序來(lái)排列和傳送的,所以不論數(shù)據(jù)包是由哪個(gè)接口(eth0、eth1)所接收,都會(huì)由上述的eth0傳送出去,所以,在一臺(tái)主機(jī)上面設(shè)置兩個(gè)相同網(wǎng)段的IP本身沒(méi)有什么意義。多此一舉。除非是類(lèi)似虛擬主機(jī)(Xen、VMware等軟件)所架設(shè)的多主機(jī),才會(huì)有這個(gè)必要。
范例二:路由的增加和刪除
[root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
# 上面這個(gè)操作能刪除掉 169.254.0.0/16 這個(gè)網(wǎng)段
# 請(qǐng)注意,在刪除的時(shí)候,需要將路由表上面出現(xiàn)的信息都寫(xiě)入
# 包括netmask、dev 等參數(shù)
[root@linux ~]# route add -net 192.168.100.0 \
> netmask 255.255.255.0 dev eth0
# 通過(guò) route add 來(lái)增加一個(gè)路由。請(qǐng)注意,這個(gè)路由必須能夠和你互通
# 例如,如果我下達(dá)下面的命令就會(huì)顯示錯(cuò)誤:
# route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254
# 因?yàn)槲业沫h(huán)境內(nèi)僅有 192.168.10.100 這個(gè) IP ,所以不能和 192.168.200.254
# 這個(gè)網(wǎng)段直接使用 MAC 互通
[root@linux ~]# route add default gw 192.168.10.30
# 增加默認(rèn)路由的方法。請(qǐng)注意,只要有一個(gè)默認(rèn)路由就夠了
# 在這個(gè)地方如果你隨便設(shè)置后,記得使用下面的命令重新設(shè)置你的網(wǎng)絡(luò)
# /etc/init.d/network restart
如 果是要進(jìn)行路由的刪除和增加,那就能參考上面的例子了,其實(shí),使用man route里面的信息就非常豐富了。仔細(xì)查閱一下。你只要記得,當(dāng)出現(xiàn)“SIOCADDRT: Network is unreachable”這個(gè)錯(cuò)誤時(shí),肯定是由于gw后面接的IP無(wú)法直接和你的網(wǎng)段溝通(Gateway并不在你的網(wǎng)段內(nèi)),所以,趕緊檢查一下輸入的 信息是否正確。
linux常用網(wǎng)絡(luò)命令3.ip
這里的ip是個(gè)命令,不是那個(gè)TCP/IP的IP。這個(gè)ip命令的功能可多了?;?本上,他就是集合了ifconfig和route這兩個(gè)命令了,不過(guò)ip能實(shí)現(xiàn)的功能卻又多得多,真是個(gè)相當(dāng)厲害的命令。如果你有興趣的話(huà),請(qǐng)自行vi /sbin/ifup,就知道整個(gè)ifup就是利用ip這個(gè)命令來(lái)實(shí)現(xiàn)的。好了,怎么使用呢?讓我們來(lái)看看。
[root@linux ~]# ip [option] [操作] [命令]
參數(shù):
Option,設(shè)置的參數(shù),主要有:
-s,顯示出該設(shè)備的統(tǒng)計(jì)數(shù)據(jù)(statistics),例如總接受數(shù)據(jù)包數(shù)等;
操作,亦即是能針對(duì)哪些網(wǎng)絡(luò)參數(shù)進(jìn)行操作,包括有:
Link,關(guān)于設(shè)備(device) 的相關(guān)設(shè)置,包括MTU、MAC 地址等等
addr/address,關(guān)于額外的 IP 協(xié)議,例如多 IP 的實(shí)現(xiàn)等等;
route,和路由有關(guān)的相關(guān)設(shè)置
由上面的語(yǔ)法我們能知道,ip除了能設(shè)置一些基本的網(wǎng)絡(luò)參數(shù)之外,還能夠進(jìn)行額外的IP協(xié)議,包括多IP的實(shí)現(xiàn),真是太完美了。下面我們就分3個(gè)部分(link、addr、route)來(lái)介紹這個(gè)ip命令吧。
1. 關(guān)于設(shè)備接口(device)的相關(guān)設(shè)置:ip link
ip link能設(shè)置和設(shè)備(device)有關(guān)的相關(guān)設(shè)置,包括MTU及該網(wǎng)絡(luò)接口的MAC等,當(dāng)然也能啟動(dòng)(up)或關(guān)閉(down)某個(gè)網(wǎng)絡(luò)接口了。整個(gè)語(yǔ)法是這樣的:
[root@linux ~]# ip [-s] link show mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
3: sit0: mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
[root@linux ~]# ip -s link show eth0
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
484011792 2247372 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2914104290 2867753 0 0 0 0
使 用ip link show能顯示出整個(gè)設(shè)備接口的硬件相關(guān)信息,如上所示,包括網(wǎng)卡地址(MAC)、MTU等,比較有趣的應(yīng)該是那個(gè)sit0的接口了,那個(gè)sit0的接口 是用在IPv4及IPv6的數(shù)據(jù)包轉(zhuǎn)換上的,對(duì)于我們僅使用IPv4的網(wǎng)絡(luò)是沒(méi)有作用的。lo及sit0都是主機(jī)內(nèi)部所自行設(shè)置的。而如果加上 -s的參數(shù)后,則這個(gè)網(wǎng)卡的相關(guān)統(tǒng)計(jì)信息就會(huì)被列出來(lái),包括接收(RX)及傳送(TX)的數(shù)據(jù)包數(shù)量等,周詳?shù)膬?nèi)容和ifconfig輸出的結(jié)果是相同 的。
范例二:?jiǎn)?dòng)、關(guān)閉和設(shè)置設(shè)備的相關(guān)信息
[root@linux ~]# ip link set eth0 up
# 啟動(dòng) eth0 這個(gè)設(shè)備接口。
[root@linux ~]# ip link set eth0 down
# 就關(guān)閉啊。簡(jiǎn)單得要命
[root@linux ~]# ip link set eth0 mtu 1000
# 更改 MTU 的值,實(shí)現(xiàn) 1000 bytes,單位就是 bytes
使用ifconfig也能更新網(wǎng)卡的MTU,沒(méi)什么不相同的地方,不過(guò),如果是要更改網(wǎng)卡代號(hào)、MAC地址的信息的話(huà),那可就得使用ip了。不過(guò),設(shè)置前得要先關(guān)閉該網(wǎng)卡,否則會(huì)不成功。如下所示:
范例三:修改網(wǎng)卡代號(hào)、MAC 等參數(shù)
[root@linux ~]# ip link set eth0 name vbird
SIOCSIFNAME: Device or resource busy
# 因?yàn)樵撛O(shè)備目前是啟動(dòng)的,所以不能這樣設(shè)置。你應(yīng)該這樣做:
[root@linux ~]# ip link set eth0 down mtu 900 qdisc pfifo_fast qlen 1000
link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff
# 怕了吧?連網(wǎng)卡代號(hào)都能改動(dòng)。不過(guò),玩玩后記得改回來(lái)
# 因?yàn)槲覀兊?ifcfg-eth0 還是使用原本的設(shè)備代號(hào)。避免有問(wèn)題,要改回來(lái)
[root@linux ~]# ip link set vbird name eth0
在這個(gè)設(shè)備的硬件相關(guān)信息設(shè)置上面,包括MTU、MAC及傳輸?shù)哪J降?,都能在這里設(shè)置。有趣的是那個(gè)address的項(xiàng)目后面接的可是硬件地址(MAC)而不是IP。非常容易搞錯(cuò)。切記切記。更多的硬件參數(shù)能使用man ip查閱一下和ip link有關(guān)的設(shè)置。
2. 關(guān)于額外的IP相關(guān)設(shè)置:ip address
如果說(shuō)ip link是和OSI七層協(xié)議的第二層數(shù)據(jù)鏈路層有關(guān)的話(huà),那么IP address(IP addr)就是和第三層網(wǎng)絡(luò)層有關(guān)的參數(shù)了。主要是在設(shè)置和IP有關(guān)的各項(xiàng)參數(shù),包括netmask、broadcast等。
[root@linux ~]# ip address show mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet6 fe80::250:fcff:fe22:9acb/64 scope link
valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
看到上面那個(gè)特別的字體嗎?沒(méi)錯(cuò),那就是IP參數(shù),也是ip address最主要的功能。下面我們進(jìn)一步來(lái)新增虛擬的網(wǎng)絡(luò)接口看看:
范例二:新增一個(gè)接口,名稱(chēng)假設(shè)為 eth0:vbird
[root@linux ~]# ip address add 192.168.50.50/24 broadcast + \
> dev eth0 label eth0:vbird
[root@linux ~]# ip address show eth0
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird
inet6 fe80::240:d0ff:fe13:c346/64 scope link
valid_lft forever preferred_lft forever
# 看到上面的特別字體了吧?多出了一行新的接口,且名稱(chēng)是 eth0:vbird
# 至于那個(gè) broadcast + 也能寫(xiě)成 broadcast 192.168.50.255
[root@linux ~]# ifconfig
eth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46
inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x3e00
# 如果使用 ifconfig 就能夠看到這個(gè)怪東西
范例三:將剛才的接口刪除
[root@linux ~]# ip address del 192.168.50.50/24 dev eth0
# 刪除就比較簡(jiǎn)單
3. 關(guān)于路由的相關(guān)設(shè)置:ip route
這個(gè)項(xiàng)目當(dāng)然就是路由的觀察和設(shè)置了。事實(shí)上,ip route的功能幾乎和route命令差不多,不過(guò),他還能進(jìn)行額外的參數(shù)設(shè)計(jì),例如MTU的規(guī)劃等,功能相當(dāng)強(qiáng)大。
[root@linux ~]# ip route show
如上述代碼所示,最簡(jiǎn)單的功能就是顯示出目前的路由信息,其實(shí)跟route命令相同,只是需要注意幾個(gè)小細(xì)節(jié):
? proto:此路由的路由協(xié)議,主要有Redirect、Kernel、Boot、Static、Ra等,其中Kernel指的是直接由核心判斷自動(dòng)設(shè)置。
? scope:路由的范圍,主要是link,即是和本設(shè)備有關(guān)的直接聯(lián)機(jī)。
再來(lái)看一下怎么進(jìn)行路由的增加和刪除吧。
范例二:增加路由,主要是本機(jī)直接可溝通的網(wǎng)段
[root@linux ~]# ip route add 192.168.5.0/24 dev eth0
# 針對(duì)本機(jī)直接溝通的網(wǎng)段設(shè)置好路由,不必通過(guò)外部的路由器
[root@linux ~]# ip route show
192.168.5.0/24 dev eth0 scope link
……以下省略……
范例三:增加能通往外部的路由,需通過(guò) router
[root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
[root@linux ~]# ip route show
192.168.5.0/24 dev eth0 scope link
……其他省略……
192.168.10.0/24 via 192.168.5.100 dev eth0
# 仔細(xì)看,因?yàn)槲矣?192.168.5.0/24 的路由存在 (我的網(wǎng)卡直接聯(lián)系),
# 所以才能將 192.168.10.0/24 的路由丟給 192.168.5.100
# 那臺(tái)主機(jī)來(lái)幫忙傳遞。和之前提到的 route 命令是相同的限制。
范例四:增加默認(rèn)路由
[root@linux ~]# ip route add default via 192.168.1.2 dev eth0
# 那個(gè) 192.168.1.2 就是我的默認(rèn)路由器 (gateway) 的意思
# 真的記得,只要一個(gè)默認(rèn)路由就 OK 。
范例五:刪除路由
[root@linux ~]# ip route del 192.168.10.0/24
[root@linux ~]# ip route del 192.168.5.0/24
事 實(shí)上,這個(gè)ip的命令實(shí)在是太博大精深了。剛接觸Linux網(wǎng)絡(luò)的朋友,可能會(huì)有點(diǎn)暈,沒(méi)有關(guān)系。你先會(huì)使用ifconfig、ifup、ifdown和 route即可,等以后有了經(jīng)驗(yàn)之后,再繼續(xù)回來(lái)用ip吧。有興趣的話(huà),也能自行參考ethtool命令(man ethtool)。
iwlist、iwconfig
這兩個(gè)命令需要你有無(wú)線(xiàn)網(wǎng)卡才能夠進(jìn)行使用。其用法如下:
? iwlist:利用無(wú)線(xiàn)網(wǎng)卡進(jìn)行無(wú)線(xiàn)AP的檢測(cè)和取得相關(guān)的數(shù)據(jù)。
? iwconfig:設(shè)置無(wú)線(xiàn)網(wǎng)卡的相關(guān)參數(shù)。
5.1.5 dhClient
如 果你是使用DHCP協(xié)議在局域網(wǎng)內(nèi)取得IP的話(huà),那么是否一定要去編輯ifcfg-eth0內(nèi)的BOOTPROTO呢?有個(gè)更快速的做法,就是利用 dhClient這個(gè)命令。因?yàn)檫@個(gè)命令才是真正發(fā)送DHCP請(qǐng)求的。如果不考慮其他的參數(shù),他的用法非常簡(jiǎn)單,使用下面的方法即可:
[root@linux ~]# dhClient eth0
非常簡(jiǎn)單吧。這樣就能即時(shí)讓我們的網(wǎng)卡以DHCP協(xié)議去嘗試取得IP。不過(guò)在SuSE Distribution里面,他僅有dhcpcd這個(gè)程式,他和dhClient是相同的東西。
linux常用網(wǎng)絡(luò)命令4.ping
這 個(gè)ping是非常重要的命令,ping主要通過(guò)ICMP數(shù)據(jù)包來(lái)進(jìn)行整個(gè)網(wǎng)絡(luò)的狀況報(bào)告,當(dāng)然,最重要的就是ICMP type 0、8這兩個(gè)類(lèi)型,分別是需求回報(bào)和主動(dòng)回報(bào)網(wǎng)絡(luò)狀態(tài)是否存在的特性。要特別注意的是,ping需要通過(guò)IP數(shù)據(jù)包來(lái)傳送ICMP數(shù)據(jù)包,而IP數(shù)據(jù)包里 有個(gè)相當(dāng)重要的TTL(Time To Live)屬性,這是個(gè)非常重要的路由特性,周詳?shù)腎P和ICMP表頭數(shù)據(jù)請(qǐng)參考網(wǎng)絡(luò)基礎(chǔ)的周詳介紹。
[root@linux ~]# ping [-bcstnM] IP
參數(shù):
-b,后面接的是 broadcast 的 IP,用在你“需要對(duì)整個(gè)網(wǎng)段的主機(jī)進(jìn)行 ping ”時(shí);
-c,后面接的是執(zhí)行 ping 的次數(shù),例如 -c 5 ;
-n,不進(jìn)行 IP 和主機(jī)名稱(chēng)的反查,直接使用 IP ;
-s,發(fā)送出去的 ICMP 數(shù)據(jù)包大小,默認(rèn)為 56(bytes),再加 8 bytes 的 ICMP 表頭資料。
-t,TTL 的數(shù)值,默認(rèn)是 255,每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)就會(huì)少
-M [do|dont] :主要在檢測(cè)網(wǎng)絡(luò)的 MTU 數(shù)值大小,兩個(gè)常見(jiàn)的項(xiàng)目是:
do,代表傳送一個(gè) DF (Don’t Fragment) 旗標(biāo),讓數(shù)據(jù)包不能重新拆包和打包;
dont,代表不要傳送 DF 標(biāo)記,表示數(shù)據(jù)包能在其他主機(jī)上拆包和打包。
范例一:檢測(cè)一下 168.95.1.1 這部 DNS 主機(jī)是否存在?
[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最簡(jiǎn)單的功能就是傳送ICMP數(shù)據(jù)包去需求對(duì)方主機(jī)響應(yīng)是否存在于網(wǎng)絡(luò)環(huán)境中。上面的響應(yīng)信息當(dāng)中,幾個(gè)重要的項(xiàng)目如下。
? 64 Bytes:表示這次傳送的ICMP數(shù)據(jù)包大小為64 Bytes,這是默認(rèn)值。在某些特別場(chǎng)合中,例如,要搜索整個(gè)網(wǎng)絡(luò)內(nèi)最大的MTU時(shí),能使用-s 2000之類(lèi)的數(shù)值來(lái)取代。
? icmp_seq=0:ICMP所檢測(cè)進(jìn)行的次數(shù),第一次編號(hào)為0。
? ttl=243:TTL和IP數(shù)據(jù)包內(nèi)的TTL是相同的,每經(jīng)過(guò)一個(gè)帶有MAC的節(jié)點(diǎn)(node)時(shí),例如router、bridge時(shí),TTL就會(huì)減少1,默認(rèn)的TTL為255,你能通過(guò) -t 150之類(lèi)的方法來(lái)重新設(shè)置默認(rèn)TTL數(shù)值。
? time=9.16 ms:響應(yīng)時(shí)間,單位有ms(0.001秒)及µs(0.000001秒),一般來(lái)說(shuō),響應(yīng)時(shí)間越小,表示兩臺(tái)主機(jī)之間的網(wǎng)絡(luò)聯(lián)機(jī)越良好。
如果你忘記加上 -c 3這樣的規(guī)定檢測(cè)次數(shù),那就得要使用 [ctrl]-c將他結(jié)束掉了。
范例二:針對(duì)整個(gè)網(wǎng)段進(jìn)行 ping 的追查
[root@linux ~]# ping -c 3 -b 192.168.10.255
WARNING: pinging broadcast address
如 果想要了解網(wǎng)內(nèi)有多少臺(tái)主機(jī)存活著,那么使用ping -b broadcast就能夠知道了。而不必一臺(tái)一臺(tái)主機(jī)來(lái)檢測(cè)。另外要特別注意一下,如果你的主機(jī)和待檢測(cè)主機(jī)并不在同一個(gè)網(wǎng)段內(nèi),那么TTL默認(rèn)使用 255,如果是同一個(gè)網(wǎng)段內(nèi),那么TTL默認(rèn)則使用64??纯瓷厦娴妮敵黾纯擅靼住?/p>
我們?cè)谇皫渍碌木W(wǎng)絡(luò)基礎(chǔ)里面談到加大幀(frame)時(shí),對(duì)于 網(wǎng)絡(luò)性能是有幫助的,因?yàn)閿?shù)據(jù)包打包的次數(shù)會(huì)減少,加上如果整個(gè)傳輸?shù)拿浇槎寄軌蚪邮苓@個(gè)frame而不必重新進(jìn)行數(shù)據(jù)包的拆解和重組的話(huà),那么性能當(dāng)然 會(huì)更好,修改frame大小的參數(shù)就是MTU。好了,目前我們知道網(wǎng)卡的MTU能通過(guò)ifconfig或是ip等來(lái)實(shí)現(xiàn),那么追蹤整個(gè)網(wǎng)絡(luò)傳輸?shù)淖畲?MTU時(shí),又該怎么查詢(xún)?最簡(jiǎn)單的方法當(dāng)然是通過(guò)ping傳送一個(gè)大數(shù)據(jù)包,并且不許中繼的路由器或Switch將該數(shù)據(jù)包重組,這就能夠處理了:
范例三:找出最大的 MTU 數(shù)值
[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
# 如果有響應(yīng),那就是能接受這個(gè)數(shù)據(jù)包,如果無(wú)響應(yīng),那就表示這個(gè) 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
# 這個(gè)錯(cuò)誤信息是說(shuō),本地端的 MTU 才到 1500 而已,你要檢測(cè) 8000 的 MTU
# 根本就是無(wú)法實(shí)現(xiàn)的。那怎么是好?用前一小節(jié)介紹的 ip link 來(lái)進(jìn)行 MTU 設(shè)置吧
不 過(guò),你需要知道的是,由于IP數(shù)據(jù)包表頭(不含options)已占用了20Bytes,再加上ICMP的表頭有8Bytes,所以當(dāng)然你在使用 -s size的時(shí)候,那個(gè)數(shù)據(jù)包就得要先扣除 (20+8=28)的大小了。因此如果要使用MTU為1500時(shí),就得要下達(dá)“ping -s 1472 -M do xx.yy.zz.ip”才行。另外,由于本地端的網(wǎng)卡MTU也會(huì)影響到檢測(cè),所以如果想要檢測(cè)整個(gè)傳輸媒介的MTU數(shù)值,那么每個(gè)能調(diào)整的主機(jī)就得要先 使用ifcofig或ip將MTU調(diào)大,然后再去進(jìn)行檢測(cè),否則就會(huì)像上面提供的案例相同,可能會(huì)出現(xiàn)“Message too long,mtu=1500”之類(lèi)的字樣。如果檢測(cè)完畢后,想要調(diào)整最佳化的MTU,那么請(qǐng)參考前一章節(jié)的內(nèi)容來(lái)調(diào)整。
不過(guò)不要隨便調(diào)整MTU,除非真的有問(wèn)題。通常是在如下情況調(diào)整MTU。
? 因?yàn)槿康闹鳈C(jī)群都是在內(nèi)部的網(wǎng)段,例如群集架構(gòu)(Cluster)的環(huán)境下,由于內(nèi)部的網(wǎng)絡(luò)節(jié)點(diǎn)都是我們能控制的,因此能通過(guò)修改MTU來(lái)改進(jìn)網(wǎng)絡(luò)性能。
? 因?yàn)椴僮飨到y(tǒng)默認(rèn)的MTU和你的網(wǎng)段不符,導(dǎo)致某些網(wǎng)站能順利聯(lián)機(jī),某些網(wǎng)站則無(wú)法聯(lián)機(jī)。以視窗系統(tǒng)操作系統(tǒng)作為聯(lián)機(jī)分享的主機(jī)時(shí),在Client端挺容易發(fā)生這個(gè)問(wèn)題。
如果是要連上Internet的主機(jī),注意不要隨便調(diào)整MTU,因?yàn)槲覀儫o(wú)法知道Internet上面的每臺(tái)機(jī)器能夠支持的MTU到多大,因?yàn)檫@些也不是我們能夠管得到的。
另外,其實(shí)每種聯(lián)機(jī)方式都有不同的MTU值,常見(jiàn)的各種接口的MTU值如表5-1所示。
表5-1 常見(jiàn)的各種接口的MTU值
網(wǎng)絡(luò)接口
MTU
Ethernet
1500
PPPoE
1492
Dial-up(Modem)
576
網(wǎng)絡(luò)上也有免費(fèi)幫忙查詢(xún)MTU和傳輸相關(guān)數(shù)據(jù)的網(wǎng)站,例如下面這個(gè)網(wǎng)站:
http://forums.speedguide.net:8117/
連接上這個(gè)網(wǎng)站之前,請(qǐng)先取消你瀏覽器上的代理服務(wù)器(Proxy)的設(shè)置,才能顯示出正確的信息。如果在視窗系統(tǒng)的系統(tǒng)上想要修改MTU值的話(huà),那就得要修改視窗系統(tǒng)的日志文件,在視窗系統(tǒng)上面對(duì)于MTU的檢測(cè)和修改的周詳做法能參考微軟的官方網(wǎng)站:
http://www.microsoft.com/taiwan/msclub/member/TIPS/Spring_2001
/tip1to3/tip1to3_2.htm
linux常用網(wǎng)絡(luò)命令5.traceroute
我 們前面談到的命令大多數(shù)都是針對(duì)主機(jī)的網(wǎng)絡(luò)參數(shù)設(shè)置所需要的,而ping是兩臺(tái)主機(jī)之間的回應(yīng)和否的判斷,那么有沒(méi)有命令能追蹤兩臺(tái)主機(jī)之間通過(guò)的各個(gè)節(jié) 點(diǎn)(Node)通信狀況的好壞呢?如果我們聯(lián)機(jī)到y(tǒng)ahoo的速度比平常慢,你覺(jué)得是自己的網(wǎng)絡(luò)環(huán)境有問(wèn)題,還是外部的Internet有問(wèn)題?如果是前 者的話(huà),我們當(dāng)然需要檢查自己的網(wǎng)絡(luò)環(huán)境,看看究竟是誰(shuí)中毒了?但如果是Internet的問(wèn)題呢?那只有“等等等”了。判斷是這個(gè)問(wèn)題就得要使用 traceroute這個(gè)命令。
[root@linux ~]# traceroute [-nwig] IP
參數(shù):
-n,能不必進(jìn)行主機(jī)的名稱(chēng)解析,只用 IP ,速度較快。
-w,若對(duì)方主機(jī)在幾秒鐘內(nèi)沒(méi)有回聲就宣告不治...默認(rèn)是 5 秒。
-i,用在比較復(fù)雜的環(huán)境,如果你的網(wǎng)絡(luò)接口非常多非常復(fù)雜時(shí),才會(huì)用到這個(gè)參數(shù)。
例如,你有兩條 ADSL 能連接到外部,那你的主機(jī)會(huì)有兩個(gè) ppp。
你能使用 -i 來(lái)選擇是 ppp0 還是 ppp1 啦。
-g,和 -i 的參數(shù)相仿,只是 -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
這 個(gè)traceroute挺有意思的,這個(gè)命令會(huì)針對(duì)你想要連接的目的地的所有Router進(jìn)行ICMP的超時(shí)等待,例如上面的例子當(dāng)中,由鳥(niǎo)哥的主機(jī)連接 到Y(jié)ahoo時(shí),他會(huì)經(jīng)過(guò)12個(gè)節(jié)點(diǎn),traceroute會(huì)主動(dòng)對(duì)這12個(gè)節(jié)點(diǎn)做ICMP的回應(yīng)等待,并檢測(cè)回復(fù)的時(shí)間,每個(gè)節(jié)點(diǎn)會(huì)檢測(cè)三次。所以像上 面顯示的結(jié)果,發(fā)現(xiàn)每個(gè)節(jié)點(diǎn)其實(shí)回復(fù)的時(shí)間大約在200 ms以?xún)?nèi),算是Internet的環(huán)境還能了。而且由上面的信息來(lái)看,在61.58.33.133這個(gè)節(jié)點(diǎn)后的傳輸延遲較久,至于之前的9個(gè)節(jié)點(diǎn)則有不錯(cuò) 的表現(xiàn)。通過(guò)這種分析,能讓你了解到這條聯(lián)線(xiàn)是哪個(gè)環(huán)節(jié)出了問(wèn)題。
另外,如果在默認(rèn)的5秒鐘之內(nèi)traceroute聽(tīng)不到節(jié)點(diǎn)的回應(yīng),那么屏幕 上就會(huì)出現(xiàn)一個(gè)“*”的符號(hào),告知該節(jié)點(diǎn)無(wú)法有順利的響應(yīng)。由于我們的traceroute用的是ICMP數(shù)據(jù)包,有些防火墻或主機(jī)可能會(huì)將ICMP數(shù)據(jù) 包扔掉,因此就會(huì)造成等不到回應(yīng)的狀況。另外,有些Gateway本來(lái)就不支持traceroute的功能,因此也會(huì)產(chǎn)生“*”的狀況,所以分析時(shí)要注意 一下。
linux常用網(wǎng)絡(luò)命令6.nslookup
這條命令的用途和host基本上是相同的,就是用來(lái)作為IP和主機(jī)名稱(chēng)對(duì)應(yīng)的檢查,同樣是使用 /etc/resolv.conf這個(gè)文件作為DNS服務(wù)器的來(lái)源選擇。
[root@linux ~]# nslookup [-query=[type]] [hostname|IP]
參數(shù):
-query=type:查詢(xún)的類(lèi)型,除了傳統(tǒng)的 IP 和主機(jī)名稱(chēng)對(duì)應(yīng)外,DNS 更有非常多信息
所以我們能查詢(xún)非常多不同的信息,包括mx、cname 等
例如: -query=mx 的查詢(xún)方法。
范例一:找出 www.google.com.tw 的 IP
[root@linux ~]# nslookup www.google.com.tw
Server: 168.95.1.1
Address: 168.95.1.1#53
Non-authoritative answer:
www.google.com.tw canonical name = www.google.com.
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 64.233.189.104
范例二:找出 168.95.1.1 的主機(jī)名稱(chēng)
[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.
怎么,看起來(lái)和host差不多吧。不過(guò),這個(gè)nslookup還能通過(guò)IP找出主機(jī)名稱(chēng)。例如,那個(gè)范例二,他的主機(jī)名稱(chēng)是:dns.hinet.net。目前大家都建議使用dig這個(gè)命令來(lái)取代nslookup
linux常用網(wǎng)絡(luò)命令7.Telnet
Telnet 是早期個(gè)人計(jì)算機(jī)連接到服務(wù)器主機(jī)上工作時(shí)最重要的一個(gè)軟件了。他不僅能直接連接到服務(wù)器上,還能用來(lái)連接BBS呢。非常棒!不過(guò),Telnet本身的數(shù) 據(jù)在傳送的時(shí)候是使用明文(原始的數(shù)據(jù),沒(méi)有加密),所以數(shù)據(jù)在Internet上面跑的時(shí)候,會(huì)比較危險(xiǎn)一點(diǎn)(就怕被別人監(jiān)聽(tīng))。更周詳?shù)膬?nèi)容我們會(huì)在 “遠(yuǎn)程聯(lián)機(jī)服務(wù)器”章節(jié)里做介紹的。
[root@linux ~]# Telnet [host|IP] [port]
范例一:連接到成大夢(mèng)之大地這個(gè) BBS 站
[root@linux ~]# Telnet bbs.dorm.ncku.edu.tw
bbs.ccns.ncku.edu.tw ⊙
⊙ 140.116.250.3 [DreamBBS Ver.040223]
歡迎光臨。系統(tǒng)負(fù)載:0.16 0.16 0.16 [負(fù)載正常]
?─┼────┼─? ?? ┌┤夢(mèng)之大地├────────────┐
?──┬──┬──??───┴┴───┬? │ │
?──┴──┴──? │ │ 夢(mèng)之大地由 │
?────────? ?─? │ 【計(jì)算機(jī)網(wǎng)絡(luò)愛(ài)好社‧CCNS】 │
?───┬───? ?──? │ 維護(hù)管理 │
│ │ ?─? │ │
?───┴───? ?┴───────? └───────────┤By BenHe├┘
┌┤本站站長(zhǎng)群├────────┐ ? ? ? ?
│站長(zhǎng): billcho │ ?────┼────??─┼─?┼──┼?
│系統(tǒng): cat │ │ │ │ ││
│站務(wù): muwell ianwolf │ ??? │ │ ││
│ renn999 GG │ ?? ?? │ │ │?
│ │ ?? ?? │? │
└───────────────┘ ?? ?─??─┴? ?───?
參觀用賬號(hào):guest,申請(qǐng)新賬號(hào):new。目前在線(xiàn)人數(shù) [2183/5000] 人。
請(qǐng)輸入代號(hào):
如 上所示,我們能通過(guò)Telnet輕易地連接到BBS上面,而如果你的主機(jī)有開(kāi)啟Telnet服務(wù)的話(huà),同樣地利用Telnet IP并且輸入賬號(hào)和密碼 之后,就能夠登錄主機(jī)了。另外,在Linux上的Telnet軟件還提供了Kerberos的認(rèn)證方式,有興趣的話(huà)請(qǐng)自行參閱man Telnet的說(shuō)明。
除了連接到服務(wù)器及連接到BBS站之外,Telnet還能用來(lái)連接到某個(gè)port(服務(wù))上。例如,我們能用Telnet連接到port 110,看看這個(gè)port是否正確啟動(dòng)了。
范例二:檢測(cè)本機(jī)端的port 110 是否正確啟動(dòng)?
[root@linux ~]# Telnet localhost 110
Trying 127.0.0.1...
Telnet: connect to address 127.0.0.1: Connection refused
# 如果出現(xiàn)這樣的信息,代表這個(gè) port 沒(méi)有啟動(dòng)或是這個(gè)聯(lián)機(jī)有問(wèn)題
# 因?yàn)槟憧吹侥莻€(gè) 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.
根 據(jù)輸出的結(jié)果,我們就能夠知道這個(gè)通信協(xié)議(Port Number提供的通信協(xié)議功能)是否已成功地啟動(dòng)了。而每個(gè)port所監(jiān)聽(tīng)的服務(wù)都有其特別的命令,例如,上述的port 25就是本機(jī)接口提供的電子郵件服務(wù),那個(gè)服務(wù)所支持的命令就如同上面使用的數(shù)據(jù)相同,不過(guò)其他的port就不見(jiàn)得支持這個(gè)ehlo命令,因?yàn)椴煌?port有不同的程式嘛,當(dāng)然支持的命令就不同了
linux常用網(wǎng)絡(luò)命令8.FTP
常常會(huì)聽(tīng)到FTP這個(gè)服務(wù)。如果你想要下載Linux的光盤(pán)燒錄映象文件時(shí),能到FTP網(wǎng)站,他們都是FTP提供者啊。那我們要怎么去下載呢?當(dāng)然就是通過(guò)FTP的客戶(hù)端軟件了。在Linux下面,我們能通過(guò)FTP這個(gè)軟件,也能通過(guò)下一小節(jié)會(huì)提到的LFTP軟件。
[root@linux ~]# FTP [-p] [host|IP] [port]
參數(shù):
-p :?jiǎn)?dòng)被動(dòng)式模式 (passive、PASV);
范例一:聯(lián)機(jī)看看
[root@linux ~]# FTP FTP.isu.edu.tw
Connected to FTP.isu.edu.tw (140.127.177.17).
220-歡迎光臨義守大學(xué)文件服務(wù)器
220-
220-本站提供以下軟件可供下載:
220-********************************************************************
220-/pub/BeOS/ BeOS 操作系統(tǒng)
220-/pub/Linux/ Linux 操作系統(tǒng)
....(其他省略)....
220-********************************************************************
Name (FTP.isu.edu.tw:dmtsai): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
FTP>
FTP> help cd /pub dir get file mget file put file delete file mkdir dir lcd /home passive binary
FTP其實(shí)是個(gè)非常麻煩的協(xié)議,因?yàn)樗褂脙蓚€(gè)port分別進(jìn)行命令和數(shù)據(jù)的通信,周詳?shù)膬?nèi)容我們會(huì)在后續(xù)的FTP 服務(wù)器內(nèi)詳談,這里我們先簡(jiǎn)單介紹一下怎么使用FTP這個(gè)軟件。首先當(dāng)然需要登錄了,所以在上面的代碼中填入賬號(hào)和密碼。由于提供匿名登錄,而匿名登錄者 的賬號(hào)就是anonymous,所以直接填寫(xiě)那個(gè)賬號(hào)即可。如果是私人的FTP,可能需要提供一組完整的賬號(hào)和密碼。
登錄FTP主機(jī)后,就能夠使 用FTP軟件的功能進(jìn)行上傳和下載的操作,幾個(gè)常用的FTP內(nèi)命令如上述代碼所示,不過(guò),鳥(niǎo)哥建議你能連到大學(xué)的FTP網(wǎng)站后,使用help(或問(wèn)號(hào) ?)來(lái)查詢(xún)可用的命令,然后嘗試下載以測(cè)試使用一下這個(gè)命令吧。這樣以后沒(méi)有瀏覽器的時(shí)候,你也能直接連接下載FTP了。
另外,如果由于某些原因,讓你的FTP主機(jī)的port開(kāi)在非正規(guī)的端口,那你就能利用下面的方式來(lái)連接到該臺(tái)主機(jī)。
[root@linux ~]# FTP hostname 318
# 假設(shè)對(duì)方主機(jī)的 FTP 服務(wù)開(kāi)啟在 318 這個(gè) port 。
linux常用網(wǎng)絡(luò)命令9.LFTP
早期當(dāng)我們要登錄提供匿名登錄的主機(jī)時(shí),非常多時(shí)候都是使用ncFTP這個(gè)軟件,不過(guò),目前有更棒的選擇,那就是LFTP。這個(gè)軟件甚至能在FTP里面使用類(lèi)似Bash的指令功能,實(shí)在是非常的完美。而且整個(gè)使用的方法和上面提到的FTP又非常類(lèi)似。
[root@linux ~]# LFTP [-p port] [-u user[,pass]] [host|IP]
參數(shù):
-p,后面能直接接上遠(yuǎn)程 FTP 主機(jī)提供的 port
-u,后面則是接上 賬號(hào)和密碼 ,就能夠連接上遠(yuǎn)程主機(jī)了
如果沒(méi)有加賬號(hào)密碼, lFTP 默認(rèn)會(huì)使用 anonymous 嘗試匿名登錄
范例一:利用 LFTP 登錄義守大學(xué)
[root@linux ~]# LFTP FTP.isu.edu.tw
lFTP FTP.isu.edu.tw:~>
# 瞧。一下子就登錄了
至 于登錄FTP主機(jī)后,相同能使用help來(lái)顯示出能執(zhí)行的命令,和FTP非常類(lèi)似。不過(guò)多了書(shū)簽的功能,而且也非常的類(lèi)似于bash,這個(gè)功能非常不錯(cuò)。 除了這個(gè)好用的文本界面的FTP軟件之外,事實(shí)上更有非常多圖像界面的好用軟件呢。最常見(jiàn)的就是gFTP了。不僅是圖像界面,而且和cute FTP非常像,非常容易上手。Cent OS本身就有提供gFTP了,你能拿出原版的光盤(pán)來(lái)安裝,然后進(jìn)入X Window后,啟動(dòng)一個(gè)Shell,輸入gFTP就能夠發(fā)現(xiàn)他的好用了。下面我們?cè)賮?lái)介紹一下實(shí)時(shí)通信吧。
linux常用網(wǎng)絡(luò)命令9.Gaim
我想,目前大家應(yīng)該都知道什么是MSN、雅虎實(shí)時(shí)通及其他的通信軟件吧。那么要連上這些服務(wù)器時(shí),該怎么處理哪?非常簡(jiǎn)單,在X Window下面使用Gaim就行了,太方便了。請(qǐng)先進(jìn)入X Window系統(tǒng),然后開(kāi)啟一個(gè)終端機(jī)窗口,接著直接輸入Gaim(請(qǐng)注意你必須已安裝了Gaim了),然后就會(huì)出現(xiàn)如圖5-1所示的窗口。
圖5-1 Gaim使用范例圖
輸入你的賬號(hào)和密碼,并選擇相對(duì)應(yīng)的實(shí)時(shí)通信服務(wù)器(如MSN或Yahoo實(shí)時(shí)通),就能進(jìn)入到如圖5-2所示的界面
圖5-2 Gaim使用范例圖
當(dāng)一切都沒(méi)有問(wèn)題后,按下“登錄”按鈕,這樣就能在Linux上使用實(shí)時(shí)通信軟件了,方便得非常。
文本網(wǎng)頁(yè)瀏覽
什么?文本界面竟然有瀏覽器!別逗了好不好?呵呵!誰(shuí)有那個(gè)時(shí)間在逗你。真的有這個(gè)東西,是在文本界面下上網(wǎng)瀏覽的好工具,他們分別是lynx及wget這兩個(gè)寶貝,不過(guò),你必須確定你已安裝了這兩個(gè)軟件才行。下面就讓我們來(lái)聊一聊這兩個(gè)好用的家伙吧。
5.4.1 lynx
這 個(gè)命令最大的作用就是讓我們?cè)谖谋灸J较率褂眠@個(gè)瀏覽器來(lái)瀏覽網(wǎng)頁(yè)。但鳥(niǎo)哥認(rèn)為,這個(gè)文件最大的功能是查閱Linux本機(jī)上面以HTML語(yǔ)法寫(xiě)成的文件信 息(Document),怎么說(shuō)呢?如果你原來(lái)在Linux本機(jī)下面的 /usr/share/doc這個(gè)目錄看過(guò)文件信息的話(huà),就會(huì)常常發(fā)現(xiàn)一些網(wǎng)頁(yè)文件,使用vi去查閱時(shí),總是看到一堆HTML的語(yǔ)法,妨礙閱讀啊。這時(shí)候 使用lynx就是個(gè)好方法了,內(nèi)容能看得清清晰楚。
[root@linux ~]# lynx [options] [website]
參數(shù):
options 指的是一些慣用的參數(shù),能使用 man lynx 查閱,常見(jiàn)的有:
-anonymous :默認(rèn)使用匿名登錄。
-assume_charset=big5 :設(shè)置默認(rèn)的語(yǔ)系數(shù)據(jù)為 big5 ,用在中文網(wǎng)頁(yè)非常方便。
范例一:瀏覽 Linux kernel 網(wǎng)站
[root@linux ~]# LANG=zh_TW.big5
[root@linux ~]# lynx http://www.kernel.org
輸入LANG=zh_TW.big5是當(dāng)你想要瀏覽中文網(wǎng)站時(shí),那么終端機(jī)就得要有相對(duì)應(yīng)的顯示編碼才行,否則會(huì)有一堆亂碼產(chǎn)生。當(dāng)我直接輸入lynx網(wǎng)站的網(wǎng)址后,就會(huì)出現(xiàn)如圖5-3所示界面。
圖5-3 lynx使用范例圖
在圖5-3中,特別字體的部分是我們能使用Tab按鍵來(lái)進(jìn)行終極鏈接的轉(zhuǎn)換。而上圖最下面一行則顯示出一些熱鍵,能按上述的熱鍵來(lái)參考一些常見(jiàn)的命令功能。不過(guò)有些地方你還是要知道一下:
? 進(jìn)入界面之后,由于是文本模式,所以編排可能會(huì)有點(diǎn)位移。不過(guò)不要緊,不會(huì)影響我們查看信息。
? 這個(gè)時(shí)候能使用“上下鍵”讓光標(biāo)停在上面的選項(xiàng)當(dāng)中(如信箱、書(shū)簽等),再按下Enter就進(jìn)入該頁(yè)面。
? 能使用左右鍵來(lái)移動(dòng)“上一頁(yè)”或“下一頁(yè)”。
? 能通過(guò)修改 /etc/lynx.cfg來(lái)設(shè)置顯示的字符編碼(中國(guó)臺(tái)灣地區(qū)能選擇Big5編碼)。
? 其他的設(shè)置能使用上面的范例中最下面那一行的說(shuō)明。
一些常見(jiàn)功能如下:
? h:Help,求助功能,在線(xiàn)說(shuō)明書(shū)。
? g:Goto URL,按g后輸入網(wǎng)頁(yè)地址(URL)如
http://www.abc.edu/
等。
? d:download,下載文件。
? q:Quit,退出lynx 。
? Ctrl+C:強(qiáng)迫中止lynx的執(zhí)行。
? 方向鍵如下:
Ø 上:移動(dòng)光標(biāo)至本頁(yè)中“上一個(gè)可鏈接點(diǎn)”。
Ø 下:移動(dòng)光標(biāo)至本頁(yè)中“下一個(gè)可鏈接點(diǎn)”。
Ø 左:back,跳回上一頁(yè)。
Ø 右:進(jìn)入反白光標(biāo)所鏈接的網(wǎng)頁(yè)。
Ø Enter:等同“右”鍵。
至于如果是瀏覽Linux本機(jī)上面的網(wǎng)頁(yè)文件,那就能使用如下的方式:
[root@linux ~]# cd /usr/share/doc/samba-3.0.10/htmldocs
[root@linux htmldocs]# lynx index.html
在鳥(niǎo)哥的Cent OS 4.3當(dāng)中,有這么一個(gè)文件,我就能利用lynx來(lái)取得查看。顯示的結(jié)果如圖5-4所示。
圖5-4 lynx使用范例圖
當(dāng)然,因?yàn)槟愕沫h(huán)境可能是在Linux本機(jī)的tty1~tty6,所以無(wú)法顯示出中文,這個(gè)時(shí)候你就得要進(jìn)行LANG=en_US之類(lèi)的語(yǔ)言設(shè)置才行。而如果你常常需要瀏覽中文語(yǔ)系的網(wǎng)頁(yè),那就能直接修改設(shè)置文件,例如 /etc/lynx.cfg這個(gè)文件內(nèi)容:
[root@linux ~]# vi /etc/lynx.cfg
CHARACTER_SET:utf-8
另外,如果有時(shí)候你必須上網(wǎng)點(diǎn)選某個(gè)網(wǎng)站來(lái)自動(dòng)取得更新時(shí)。例如,早期的自動(dòng)在線(xiàn)更新主機(jī)名稱(chēng)系統(tǒng),僅支持網(wǎng)頁(yè)更新,那你怎么進(jìn)行更新呢?能使用lynx!利用 -dump這個(gè)參數(shù)先處理:
[root@linux ~]# lynx -dump \
> http://some.site.name/web.php?name=user&password=pw > testfile
上 面的網(wǎng)站后面有加個(gè)問(wèn)號(hào)(?)對(duì)吧?后面接的則是利用網(wǎng)頁(yè)的GET功能取得的各項(xiàng)變量數(shù)據(jù),利用這個(gè)功能,我們就能直接登錄到該網(wǎng)站上了。非常方便吧。而 且會(huì)將執(zhí)行的結(jié)果輸出到testfile文件中,不過(guò)如果網(wǎng)站提供的數(shù)據(jù)是以POST為主的話(huà),那鳥(niǎo)哥就不知道怎么搞定了。
linux常用網(wǎng)絡(luò)命令10.tcpdump
說(shuō) 實(shí)在的,對(duì)于tcpdump這個(gè)軟件來(lái)說(shuō),你甚至能說(shuō)這個(gè)軟件其實(shí)就是個(gè)黑客軟件,因?yàn)樗粌H能分析數(shù)據(jù)包的流向,連數(shù)據(jù)包的內(nèi)容也能進(jìn)行監(jiān)聽(tīng),如果你使 用的傳輸數(shù)據(jù)是明文的話(huà),在Router上就可能被人家監(jiān)聽(tīng)走了。非??膳?。所以,我們也要來(lái)了解一下這個(gè)軟件(注:這個(gè)tcpdump必須使用root 的身份執(zhí)行)。
[root@linux ~]# tcpdump [-nn] [-i 接口] [-w 儲(chǔ)存檔名] [-c 次數(shù)] [-Ae]
[-qX] [-r 文件] [所欲捕捉的數(shù)據(jù)內(nèi)容]
參數(shù):
-nn,直接以 IP 及 Port Number 顯示,而非主機(jī)名和服務(wù)名稱(chēng)。
-i,后面接要「監(jiān)聽(tīng)」的網(wǎng)絡(luò)接口,例如 eth0, lo, ppp0 等等的接口。
-w,如果你要將監(jiān)聽(tīng)所得的數(shù)據(jù)包數(shù)據(jù)儲(chǔ)存下來(lái),用這個(gè)參數(shù)就對(duì)了。后面接文件名。
-c,監(jiān)聽(tīng)的數(shù)據(jù)包數(shù),如果沒(méi)有這個(gè)參數(shù), tcpdump 會(huì)持續(xù)不斷的監(jiān)聽(tīng),
直到用戶(hù)輸入 [ctrl]-c 為止。
-A,數(shù)據(jù)包的內(nèi)容以 ASCII 顯示,通常用來(lái)捉取 WWW 的網(wǎng)頁(yè)數(shù)據(jù)包資料。
-e,使用資料連接層 (OSI 第二層) 的 MAC 數(shù)據(jù)包數(shù)據(jù)來(lái)顯示。
-q,僅列出較為簡(jiǎn)短的數(shù)據(jù)包信息,每一行的內(nèi)容比較精簡(jiǎn)。
-X,能列出十六進(jìn)制 (hex) 及 ASCII 的數(shù)據(jù)包內(nèi)容,對(duì)于監(jiān)聽(tīng)數(shù)據(jù)包內(nèi)容非常有用。
-r,從后面接的文件將數(shù)據(jù)包數(shù)據(jù)讀出來(lái)。那個(gè)「文件」是已存在的文件,
并且這個(gè)「文件」是由 -w 所制作出來(lái)的。
所欲捕捉的數(shù)據(jù)內(nèi)容:我們能專(zhuān)門(mén)針對(duì)某些通信協(xié)議或是 IP 來(lái)源進(jìn)行數(shù)據(jù)包捕捉。
那就能簡(jiǎn)化輸出的結(jié)果,并取得最有用的信息。常見(jiàn)的表示方法有。
’host foo’, ’host 127.0.0.1’ :針對(duì)單臺(tái)主機(jī)來(lái)進(jìn)行數(shù)據(jù)包捕捉。
’net 192.168’ :針對(duì)某個(gè)網(wǎng)段來(lái)進(jìn)行數(shù)據(jù)包的捕捉。
’src host 127.0.0.1’ ’dst net 192.168’:同時(shí)加上來(lái)源(src)或目標(biāo)(dst)限制。
’tcp port 21’:還能針對(duì)通信協(xié)議檢測(cè),如tcp、udp、arp、ether 等。
還能利用 and 和 or 來(lái)進(jìn)行數(shù)據(jù)包數(shù)據(jù)的整合顯示呢。
范例一:以 IP 和 Port Number 捉下 eth0 這個(gè)網(wǎng)卡上的數(shù)據(jù)包,持續(xù) 3 秒
[root@linux ~]# tcpdump -i eth0 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 116:232(116) ack 1 win
9648
01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win
9648
如 果你是第一次看tcpdump的man page時(shí),肯定會(huì)暈菜的,因?yàn)閠cpdump幾乎都是分析數(shù)據(jù)包的表頭數(shù)據(jù),用戶(hù)如果沒(méi)有簡(jiǎn)單的網(wǎng)絡(luò)數(shù)據(jù)包基礎(chǔ)知識(shí),要看懂非常困難。所以,至少你得要 回到第2章“網(wǎng)絡(luò)基礎(chǔ)”里面去好好理解一下TCP數(shù)據(jù)包的表頭信息才好。至于那個(gè)在范例一所產(chǎn)生的輸出中,我們能大概區(qū)分為幾個(gè)字段,現(xiàn)以范例一當(dāng)中那行 特別字體行來(lái)說(shuō)明一下:
? 01:33:40.41:這個(gè)是此數(shù)據(jù)包被捕捉的時(shí)間,“時(shí):分:秒”的單位。
? IP:通過(guò)的通信協(xié)議是IP。
? 192.168.1.100.22>:傳送端是192.168.1.100這個(gè)IP,而傳送的Port Number為22,那個(gè)大于(>)的符號(hào)指的是數(shù)據(jù)包的傳輸方向。
? 192.168.1.11.1190:接收端的IP是192.168.1.11,且該主機(jī)開(kāi)啟port 1190來(lái)接收。
? P 116:232(116):這個(gè)數(shù)據(jù)包帶有PUSH的數(shù)據(jù)傳輸標(biāo)志,且傳輸?shù)臄?shù)據(jù)為整體數(shù)據(jù)的116~232 Byte,所以這個(gè)數(shù)據(jù)包帶有116 Bytes的數(shù)據(jù)量。
? ack 1 win 9648:ACK和Window size的相關(guān)資料。
最 簡(jiǎn)單的說(shuō)法,就是該數(shù)據(jù)包是由192.168.1.100傳到192.168.1.11,通過(guò)的port是由22到1190,且?guī)в?16 Bytes的數(shù)據(jù)量,使用的是PUSH的標(biāo)記,而不是SYN之類(lèi)的主動(dòng)聯(lián)機(jī)標(biāo)志。不容易看得懂吧。所以,我才會(huì)講請(qǐng)務(wù)必到“TCP表頭數(shù)據(jù)”的章節(jié)去看一 看。
接下來(lái),在一個(gè)網(wǎng)絡(luò)狀態(tài)非常忙的主機(jī)上面,你想要取得某臺(tái)主機(jī)對(duì)你聯(lián)機(jī)的數(shù)據(jù)包數(shù)據(jù)時(shí),使用tcpdump配合管線(xiàn)命令和正則表達(dá)式也能,不 過(guò),畢竟不好捕捉。我們能通過(guò)tcpdump的表達(dá)式功能,就能夠輕易地將所需要的數(shù)據(jù)獨(dú)立的取出來(lái)。在上面的范例一當(dāng)中,我們僅針對(duì)eth0做監(jiān)聽(tīng),所 以整個(gè)eth0接口上面的數(shù)據(jù)都會(huì)被顯示到屏幕上,但這樣不好分析,能簡(jiǎn)化嗎?例如,只取出port 21的聯(lián)機(jī)數(shù)據(jù)包,能這樣做:
[root@linux ~]# tcpdump -i eth0 -nn port 21
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
01:54:37.96 IP 192.168.1.11.1240 > 192.168.1.100.21:. ack 1 win 65535
01:54:37.96 IP 192.168.1.100.21 > 192.168.1.11.1240:P 1:21(20) ack 1 win 5840
01:54:38.12 IP 192.168.1.11.1240 > 192.168.1.100.21:. ack 21 win 65515
01:54:42.79 IP 192.168.1.11.1240 > 192.168.1.100.21:P 1:17(16) ack 21 win 65515
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: . ack 17 win 5840
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: P 21:55(34) ack 17 win 5840
看!這樣就僅取出port 21的信息,如果仔細(xì)看的話(huà),你會(huì)發(fā)現(xiàn)數(shù)據(jù)包的傳遞都是雙向的,Client端發(fā)出請(qǐng)求而Server端則予以響應(yīng),所以,當(dāng)然是有去有回了。而我們也就能經(jīng)過(guò)這個(gè)數(shù)據(jù)包的流向來(lái)了解到數(shù)據(jù)包運(yùn)動(dòng)的過(guò)程了。例如:
? 我們先在一個(gè)終端機(jī)窗口輸入“tcpdump-i lo-nn”的監(jiān)聽(tīng)。
? 再另開(kāi)一個(gè)終端機(jī)窗口來(lái)對(duì)本機(jī)(127.0.0.1)登錄“ssh localhost”,那么輸出的結(jié)果會(huì)是怎么?
[root@linux ~]# tcpdump -i lo -nn
1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
2 listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
3 11:02:54.253777 IP 127.0.0.1.32936 >
127.0.0.1.22: S 933696132:933696132(0)
win 32767
4 11:02:54.253831 IP 127.0.0.1.22 > 127.0.0.1.32936:
S 920046702:920046702(0)
ack 933696133 win 32767
5 11:02:54.253871 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 1 win 8192
6 11:02:54.272124 IP 127.0.0.1.22 > 127.0.0.1.32936:
P 1:23(22) ack 1 win 8192
7 11:02:54.272375 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 23 win 8192
代碼顯示的頭兩行是tcpdump的基本說(shuō)明,然后:
第3行顯示的是來(lái)自Client端帶有SYN主動(dòng)聯(lián)機(jī)的數(shù)據(jù)包。
第4行顯示的是來(lái)自Server端,除了響應(yīng)Client端之外(ACK),還帶有SYN主動(dòng)聯(lián)機(jī)的標(biāo)志。
第5行則顯示Client端響應(yīng)Server確定聯(lián)機(jī)建立(ACK)。
第6行以后則開(kāi)始進(jìn)入數(shù)據(jù)傳輸?shù)牟襟E。
從 第3~5行的流程來(lái)看,熟不熟悉啊?沒(méi)錯(cuò)。那就是3次握手的基礎(chǔ)流程,有趣吧。不過(guò)tcpdump之所以被稱(chēng)為黑客軟件之一遠(yuǎn)不止上面介紹的功能。上面介 紹的功能能用來(lái)作為我們主機(jī)的數(shù)據(jù)包聯(lián)機(jī)和傳輸?shù)牧鞒谭治?,這將有助于我們了解到數(shù)據(jù)包的運(yùn)作,同時(shí)了解到主機(jī)的防火墻設(shè)置規(guī)則是否有需要修訂的地方。
更 有更神奇的用法。當(dāng)我們使用tcpdump在Router上面監(jiān)聽(tīng)明文的傳輸數(shù)據(jù)時(shí),例如FTP傳輸協(xié)議,你覺(jué)得會(huì)發(fā)生什么問(wèn)題呢?我們先在主機(jī)端執(zhí)行 “tcpdump -i lo port 21 -nn ?X”,然后再以FTP登錄本機(jī),并輸入賬號(hào)和密碼,結(jié)果你就能發(fā)現(xiàn)如下的狀況:
[root@linux ~]# tcpdump -i lo -nn -X ’port 21’
0x0000: 4500 0048 2a28 4000 4006 1286 7f00 0001 E..H*(@.@.......
0x0010: 7f00 0001 0015 80ab 8355 2149 835c d825 .........U!I.\.%
0x0020: 8018 2000 fe3c 0000 0101 080a 0e2e 0b67 .............2’
0x0030: 0e2e 1b38 5041 5353 206d 7970 6173 7377 ...8PASS.mypassw
0x0040: 6f72 6469 7379 6f75 0d0a ordisyou..
上 面的輸出結(jié)果已被簡(jiǎn)化過(guò)了,你需要自行在你的輸出結(jié)果中搜索相關(guān)的字符串才行。從上面輸出結(jié)果的特別字體中,我們能發(fā)現(xiàn)該FTP軟件使用的是 vsFTPd,并且用戶(hù)輸入dmtsai這個(gè)賬號(hào)名稱(chēng),且密碼是mypasswordisyou。你說(shuō)可不可怕啊。如果使用的是明文方式來(lái)傳輸你的網(wǎng)絡(luò)數(shù) 據(jù)呢?所以我們才常常在講啊,網(wǎng)絡(luò)是非常不安全的。
另外你得了解,為了讓網(wǎng)絡(luò)接口能讓tcpdump監(jiān)聽(tīng),所以執(zhí)行tcpdump時(shí)網(wǎng)絡(luò)接口會(huì)啟 動(dòng)在“混雜模式(promiscuous)”,所以你會(huì)在 /var/log/messages里面看到非常多的警告信息,通知你說(shuō)你的網(wǎng)卡被設(shè)置成為混雜模式。別擔(dān)心,那是正常的。至于更多的應(yīng)用,請(qǐng)參考man tcpdump了。
例題:怎么使用tcpdump監(jiān)聽(tīng)來(lái)自eth0適配卡且通信協(xié)議為port 22,目標(biāo)來(lái)源為192.168.1.100的數(shù)據(jù)包資料?
答:tcpdump -i eth0 -nn ’port 22 and src host 192.168.1.100’。
linux常用網(wǎng)絡(luò)命令11.ethereal
除 了tcpdump這個(gè)軟件之外,其實(shí)你還能使用ethereal這個(gè)好用的網(wǎng)絡(luò)流量分析軟件。ethereal分為文本界面和圖像界面,文本界面的用法和 tcpdump類(lèi)似,不過(guò)他的命令名稱(chēng)為tethereal就是了。因?yàn)橛梅ú畈欢?,所以建議你直接使用man tethereal查閱。在Cent OS上原本就有ethereal,所以請(qǐng)拿出光盤(pán)來(lái)安裝即可,需要同時(shí)安裝ethereal和ethereal-gnome才行。
啟動(dòng)的方法非常簡(jiǎn)單,你需要在X Window下面,先啟動(dòng)一個(gè)終端機(jī),然后直接輸入ethereal后,就會(huì)出現(xiàn)如圖5-5所示的畫(huà)面
圖5-5 ethereal使用范例圖
簡(jiǎn)單的做法,你能單擊如圖5-5顯示的那個(gè)按鈕,會(huì)出現(xiàn)挑選監(jiān)聽(tīng)的接口窗口,如圖5-6所示。
圖5-6 ethereal使用范例圖
你應(yīng)該選擇要監(jiān)聽(tīng)的接口,在這里因?yàn)槭菧y(cè)試用的,所以鳥(niǎo)哥使用的是lo這個(gè)內(nèi)部接口,你當(dāng)然應(yīng)該要選擇你自己的網(wǎng)絡(luò)接口才是。然后單擊Start后,就會(huì)出現(xiàn)開(kāi)始檢測(cè)的界面了,如圖5-7所示。
圖5-7 ethereal使用范例圖
在這個(gè)界面當(dāng)中你能看到非常多類(lèi)型的數(shù)據(jù)包協(xié)議,在等你處理完畢后,就能單擊Stop結(jié)束監(jiān)聽(tīng),而開(kāi)始進(jìn)入如圖5-8所示的數(shù)據(jù)包分析界面。
圖5-8 ethereal使用范例圖
數(shù) 據(jù)包分析界面共分為3大區(qū)塊,如圖5-8所示,第一區(qū)塊主要顯示的是數(shù)據(jù)包的標(biāo)頭資料,內(nèi)容有點(diǎn)類(lèi)似tcpdump的顯示結(jié)果;第二區(qū)塊則是周詳?shù)谋眍^數(shù) 據(jù),包括通信協(xié)議的內(nèi)容及Socket Pair等信息。第三區(qū)塊則是16進(jìn)制和ASCII碼的顯示結(jié)果。通過(guò)這個(gè)ethereal,你就能一口氣得到所需要的所有數(shù)據(jù)包內(nèi)容。而且還是圖像界面 的,非常方便吧。通過(guò)在第一區(qū)塊選擇不同的數(shù)據(jù)包,就能夠查閱每個(gè)數(shù)據(jù)包的數(shù)據(jù)內(nèi)容了。
linux常用網(wǎng)絡(luò)命令12.nc、netcat
這 個(gè)nc能用來(lái)作為某些服務(wù)的檢測(cè),因?yàn)樗苓B接到某個(gè)port來(lái)進(jìn)行通信,此外,還能自行啟動(dòng)一個(gè)port來(lái)傾聽(tīng)其他用戶(hù)的聯(lián)機(jī),非常好用。如果在編譯的 時(shí)候設(shè)置GAPING_SECURITY_HOLE參數(shù)的話(huà),這個(gè)軟件還能用來(lái)取得客戶(hù)端的bash??膳掳伞N覀兊腃entOS比較人性化,并沒(méi)有設(shè)置 上面的參數(shù),所以我們不能夠用來(lái)作為黑客軟件。不過(guò)用來(lái)取代Telnet功能已夠用了(有的系統(tǒng)將執(zhí)行文件改名為netcat了)。
[root@linux ~]# nc [IP|host] [port]
[root@linux ~]# nc -l -p [port]
參數(shù):
-l,作為監(jiān)聽(tīng)之用,亦即開(kāi)啟一個(gè) port 來(lái)監(jiān)聽(tīng)用戶(hù)的聯(lián)機(jī)。
-p,開(kāi)啟的這個(gè) Port Number。
范例一:連接本地端的 port 25 查閱相關(guān)信息
[root@linux ~]# nc localhost 25
localhost.localdomain [127.0.0.1] 25 (smtp) open
220 pc.dm.tsai ESMTP Postfix
ehlo localhost
250-pc.dm.tsai
250-PIPELINING
250-SIZE 40000000
250-ETRN
quit
221 Bye
這個(gè)最簡(jiǎn)單的功能和Telnet幾乎相同吧,他能檢查某個(gè)服務(wù)。不過(guò),更神奇的在后面,我們能建立兩個(gè)聯(lián)機(jī)來(lái)通信。舉個(gè)例子來(lái)說(shuō),我們先在Client端的地方啟動(dòng)一個(gè)port來(lái)進(jìn)行傾聽(tīng):
范例二:激活一個(gè) port 來(lái)監(jiān)聽(tīng)用戶(hù)的聯(lián)機(jī)需求
[root@linux ~]# nc -l -p 20000
# 啟動(dòng)一個(gè) port 20000 在主機(jī)上,如果此時(shí)使用 netstat ?tlnp。
# 就能看到系統(tǒng)上多出來(lái)一個(gè) port 20000 在傾聽(tīng)用戶(hù)的聯(lián)機(jī)。
然后在主機(jī)端的地方,也利用nc來(lái)聯(lián)機(jī)到客戶(hù)端,并且輸入一些命令看看。
[root@linux ~]# nc localhost 20000
此 時(shí),在主機(jī)端我們能打入一些字,你會(huì)發(fā)目前Client端會(huì)同時(shí)出現(xiàn)你輸入的文字。如果你同時(shí)設(shè)置一些額外的參數(shù),例如利用標(biāo)準(zhǔn)輸入和輸出(stdout 和stdin)的話(huà),那么就能通過(guò)這個(gè)聯(lián)機(jī)來(lái)做非常多事情了。當(dāng)然nc的功能不僅如此,你還能發(fā)現(xiàn)非常多的用途。請(qǐng)自行到你主機(jī)內(nèi)的 /usr/share/doc/nc-1.10/scripts目錄下看看這些script,有幫助的。不過(guò),如果你需要額外地編譯出含有GAPING_ SECURITY_HOLE功能,以使兩端聯(lián)機(jī)能進(jìn)行額外命令的執(zhí)行時(shí),就需要自己下載原始碼來(lái)編譯了。
重 點(diǎn) 回 顧
? 修改網(wǎng)絡(luò)接口的硬件相關(guān)參數(shù),能使用ifconfig這個(gè)命令,包括MTU等。
? ifup和ifdown其實(shí)只是script,在使用時(shí),會(huì)主動(dòng)去 /etc/sysconfig/network- scripts里找到相對(duì)應(yīng)的設(shè)備設(shè)置文件,才能夠正確地啟動(dòng)和關(guān)閉。
? 路由的修改和查閱能使用route來(lái)查詢(xún),此外,route亦可進(jìn)行新增、刪除路由的工作。
? ip命令能用來(lái)作為整個(gè)網(wǎng)絡(luò)環(huán)境的設(shè)置,利用ip link能修改網(wǎng)絡(luò)設(shè)備的硬件相關(guān)功能,包括MTU和MAC等,能使用ip address修改TCP/IP方面的參數(shù),包括IP及網(wǎng)段參數(shù)等,ip route則能修改路由。
? ping主要是通過(guò)ICMP數(shù)據(jù)包來(lái)進(jìn)行網(wǎng)絡(luò)環(huán)境的檢測(cè)工作,并且能使用ping來(lái)查詢(xún)整體網(wǎng)段可接受的最大MTU值。
? 監(jiān)測(cè)每個(gè)節(jié)點(diǎn)的連接狀況,能使用traceroute這個(gè)命令來(lái)追蹤。
? netstat除了能觀察本機(jī)的啟動(dòng)接口外,還能觀察Unix socket的傳統(tǒng)接口數(shù)據(jù)。
? host和nslookup默認(rèn)都是通過(guò)/etc/resolv.conf內(nèi)設(shè)置的DNS主機(jī)來(lái)進(jìn)行主機(jī)名稱(chēng)和IP的查詢(xún)。
? LFTP能用來(lái)匿名登錄遠(yuǎn)程的FTP主機(jī)。
? Telnet不僅用來(lái)進(jìn)行BBS的登錄,也能用來(lái)作為某些端口服務(wù)的測(cè)試。
? lynx主要的功能是瀏覽,包括本機(jī)上HTML語(yǔ)法的文件,wget則主要用來(lái)下載WWW的資料。
? 捕捉數(shù)據(jù)包以分析數(shù)據(jù)包的流向,可使用tcpdump,至于圖像界面的ethereal則能進(jìn)行更為周詳?shù)慕馕觥?/p>
? 通過(guò)tcpdump分析3次握手,及分析明文傳輸?shù)臄?shù)據(jù),可發(fā)現(xiàn)網(wǎng)絡(luò)加密的重要性。
? nc可用來(lái)取代Telnet進(jìn)行某些服務(wù)端口的檢測(cè)工作,同時(shí)若自行編譯nc,可額外地執(zhí)行-e參數(shù)。