linux常用網(wǎng)絡(luò)命令
linux下網(wǎng)絡(luò)命令是最需要掌握的一部分命令。下面由學(xué)習(xí)啦小編為大家整理了linux常用網(wǎng)絡(luò)的相關(guān)知識,希望大家喜歡!
linux常用網(wǎng)絡(luò)命令
所有時(shí)刻如果你想要做好自己的網(wǎng)絡(luò)參數(shù)設(shè)置,包括IP參數(shù)、路由參數(shù)和無線網(wǎng)絡(luò)等,就得要了解下面這些相關(guān)的命令才行。其中Route及ip這兩條命令是比較重要的。當(dāng)然,比較早期的用法,我們都是使用ifconfig的。
? ifconfig:查詢、設(shè)置網(wǎng)卡和IP網(wǎng)段等相關(guān)參數(shù)。
? ifup、ifdown:這兩個(gè)文件是Script,通過更簡單的方式來啟動(dòng)網(wǎng)絡(luò)接口。
? Route:查詢、設(shè)置路由表(Route table)。
? ip:復(fù)合式的命令,能直接修改上述命令提到的功能。
ifconfig、ifup、ifdown
這 3個(gè)命令的用途都是啟動(dòng)網(wǎng)絡(luò)接口,不過,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ù)。下面我們就分別來談一談。
linux常用網(wǎng)絡(luò)命令1. ifconfig
ifconfig主要是能手動(dòng)啟動(dòng)、觀察和修改網(wǎng)絡(luò)接口的相關(guān)參數(shù),能修改的參數(shù)非常多,包括IP參數(shù)及MTU等都能修改,他的語法如下:
[root@linux ~]# ifconfig {interface} {up|down}
一 般來說,直接輸入ifconfig就會(huì)列出目前已被啟動(dòng)的卡,不論這個(gè)卡是否有設(shè)置IP,都會(huì)被顯示出來。而如果是輸入ifconfig eth0,則會(huì)顯示出這個(gè)接口的相關(guān)數(shù)據(jù),而不管該接口是否啟動(dòng)。所以,如果你想要知道某個(gè)網(wǎng)卡的Hardware Address,直接輸入“ifconfig"網(wǎng)絡(luò)接口代號"”即可。至于上述代碼中出現(xiàn)的各項(xiàng)數(shù)據(jù)是這樣的(數(shù)據(jù)排列由上而下、由左而右)。
? eth0:網(wǎng)卡的代號,也有l(wèi)o這個(gè)loopback。
? HWaddr:網(wǎng)卡的硬件地址,習(xí)慣稱為MAC。
? inet addr:IPv4的IP地址,后續(xù)的Bcase、Mask分別代表的是Broadcast和Netmask。
? inet6 addr:是IPv6的版本的IP,我們沒有使用,所以略過。
? RX:那一行代表的是網(wǎng)絡(luò)由啟動(dòng)到目前為止的數(shù)據(jù)包接收情況,packets代表數(shù)據(jù)包數(shù)、errors代表數(shù)據(jù)包發(fā)生錯(cuò)誤的數(shù)量、dropped代表數(shù)據(jù)包由于有問題而遭丟棄的數(shù)量等。
? TX:和RX相反,為網(wǎng)絡(luò)由啟動(dòng)到目前為止的傳送情況。
? collisions:代表數(shù)據(jù)包碰撞的情況,如果發(fā)生太多次,表示你的網(wǎng)絡(luò)狀況不太好。
? txqueuelen:代表用來傳輸數(shù)據(jù)的緩沖區(qū)的儲(chǔ)存長度。
? RX Bytes、TX Bytes:總傳送、接收的字節(jié)總量。
? Interrupt、Memory:網(wǎng)卡硬件的數(shù)據(jù),IRQ岔斷和內(nèi)存地址。
通過觀察上述的資料,大致上能了解到你的網(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)的信息都相同。沒錯(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)來設(shè)置或修改某個(gè)適配卡的相關(guān)功能,并且也能通過eth0:0這種虛擬的網(wǎng)絡(luò)接口來設(shè)置一張網(wǎng)卡上面的多個(gè)IP。手動(dòng)的方 式是比較簡單。而且設(shè)置錯(cuò)誤也沒有關(guān)系,因?yàn)槲覀兡芾?/etc/init.d/network restart來重新啟動(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ǎng)卡當(dāng)中進(jìn)行,因?yàn)槲覀冃枰獑?dòng)無線網(wǎng)卡讓他去檢測AP存在和否。
linux常用網(wǎng)絡(luò)命令2. ifup、ifdown
實(shí)時(shí)地手動(dòng)修改一些網(wǎng)絡(luò)接口參數(shù),能利用ifconfig來實(shí)現(xiàn),如果是要直接以設(shè)置文件,亦即是在 /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件的設(shè)置參數(shù)來啟動(dòng)的話,那就得要通過ifdown或ifup來實(shí)現(xiàn)了。
[root@linux ~]# ifup {interface}
[root@linux ~]# ifdown {interface}
[root@linux ~]# ifup eth0
ifup 和ifdown真是太簡單了。這兩個(gè)程式其實(shí)是script而已,他會(huì)直接到 /etc/ sysconfig/network-scripts目錄下搜索對應(yīng)的設(shè)置文件,例如ifup eth0,他會(huì)找出ifcfg-eth0這個(gè)文件的內(nèi)容,然后加以設(shè)置。關(guān)于ifcfg-eth0的設(shè)置請參考前一章連上Internet的說明。
不 過,由于這兩個(gè)程式主要是搜索設(shè)置文件(ifcfg-ethx)來進(jìn)行啟動(dòng)和關(guān)閉的,所以在使用前請確定ifcfg-ethx是否真的存在于正確的目錄 內(nèi),否則會(huì)啟動(dòng)失敗。另外,如果以ifconfig eth0來設(shè)置或是修改了網(wǎng)絡(luò)接口后,就無法再以ifdown eth0的方式來關(guān)閉了。因?yàn)閕fdown會(huì)分析比較目前的網(wǎng)絡(luò)參數(shù)和ifcfg-eth0是否相符,不符的話,就會(huì)放棄這次操作。因此,使用 ifconfig修改完畢后,應(yīng)該要以ifconfig eth0 down才能夠關(guān)閉該接口。
路由修改route
我們在網(wǎng)絡(luò)基礎(chǔ)的時(shí)候談過關(guān)于路由的問題,兩臺(tái)主機(jī)之間一定要有路由才能夠互通TCP/IP的協(xié)議,否則就無法進(jìn)行聯(lián)機(jī)。一般來說,只要有網(wǎng)絡(luò)接口,該接口就會(huì)產(chǎn)生一個(gè)路由,例如,在鳥哥實(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ī)名稱,直接使用 IP 或 Port Number;
-ee,使用更周詳?shù)男畔盹@示;
增加 (add) 和刪除 (del) 路由的相關(guān)參數(shù);
-net,表示后面接的路由為一個(gè)網(wǎng)段;
-host,表示后面接的為連接到單臺(tái)主機(jī)的路由;
Netmask,和網(wǎng)段有關(guān),能設(shè)置 netmask 決定網(wǎng)段的大小;
Gw,gateway 的簡寫,后續(xù)接的是 IP 的數(shù)值,和 dev 不同;
Dev,如果只是要指定由哪一塊網(wǎng)卡聯(lián)機(jī)出去,則使用這個(gè)設(shè)置,后面接 eth0 等。
范例一:單純的觀察路由狀態(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ī)名稱”。也就是說,在默認(rèn)的情況下,route會(huì)去找出 該IP的主機(jī)名稱,如果未找到呢?就會(huì)顯示得遲鈍(有點(diǎn)慢),所以說,鳥哥通常都直接使用route-n了。由上面看起來,我們也知道default = 0.0.0.0/0.0.0.0,而上面的信息有哪些你需要知道的呢?
? Destination、Genmask:這兩個(gè)術(shù)語就分別是Network和Netmask了。所以這兩個(gè)東西就組合成為一個(gè)完整的網(wǎng)段了。
? Gateway:該網(wǎng)段是通過哪個(gè)Gateway連接出去的?如果顯示0.0.0.0表示該路由是直接由本機(jī)傳送,亦即能通過局域網(wǎng)的MAC直接傳輸;如果有顯示IP的話,表示該路由需要經(jīng)過路由器(網(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):需要通過外部的主機(jī)來傳遞數(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ì)被接受(用來阻止不安全的網(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è)路由的過程來判斷。 例如,我上頭僅有三個(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,我通過判斷不是 192.168.10.0/24,也不是169.254.0.0/16,結(jié)果到達(dá)0/0時(shí),傳出去了,通過eth0將數(shù)據(jù)包傳給 192.168.10.30那臺(tái)Gateway主機(jī)。所以說,路由是有順序的。
因此當(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
也就是說,由于路由是依照順序來排列和傳送的,所以不論數(shù)據(jù)包是由哪個(gè)接口(eth0、eth1)所接收,都會(huì)由上述的eth0傳送出去,所以,在一臺(tái)主機(jī)上面設(shè)置兩個(gè)相同網(wǎng)段的IP本身沒有什么意義。多此一舉。除非是類似虛擬主機(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)段
# 請注意,在刪除的時(shí)候,需要將路由表上面出現(xiàn)的信息都寫入
# 包括netmask、dev 等參數(shù)
[root@linux ~]# route add -net 192.168.100.0 \
> netmask 255.255.255.0 dev eth0
# 通過 route add 來增加一個(gè)路由。請注意,這個(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)路由的方法。請注意,只要有一個(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ǎng)段溝通(Gateway并不在你的網(wǎng)段內(nèi)),所以,趕緊檢查一下輸入的 信息是否正確。
linux常用網(wǎng)絡(luò)命令3.ip
這里的ip是個(gè)命令,不是那個(gè)TCP/IP的IP。這個(gè)ip命令的功能可多了。基 本上,他就是集合了ifconfig和route這兩個(gè)命令了,不過ip能實(shí)現(xiàn)的功能卻又多得多,真是個(gè)相當(dāng)厲害的命令。如果你有興趣的話,請自行vi /sbin/ifup,就知道整個(gè)ifup就是利用ip這個(gè)命令來實(shí)現(xiàn)的。好了,怎么使用呢?讓我們來看看。
[root@linux ~]# ip [option] [操作] [命令]
參數(shù):
Option,設(shè)置的參數(shù),主要有:
-s,顯示出該設(shè)備的統(tǒng)計(jì)數(shù)據(jù)(statistics),例如總接受數(shù)據(jù)包數(shù)等;
操作,亦即是能針對哪些網(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è)置
由上面的語法我們能知道,ip除了能設(shè)置一些基本的網(wǎng)絡(luò)參數(shù)之外,還能夠進(jìn)行額外的IP協(xié)議,包括多IP的實(shí)現(xiàn),真是太完美了。下面我們就分3個(gè)部分(link、addr、route)來介紹這個(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è)語法是這樣的:
[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)換上的,對于我們僅使用IPv4的網(wǎng)絡(luò)是沒有作用的。lo及sit0都是主機(jī)內(nèi)部所自行設(shè)置的。而如果加上 -s的參數(shù)后,則這個(gè)網(wǎng)卡的相關(guān)統(tǒng)計(jì)信息就會(huì)被列出來,包括接收(RX)及傳送(TX)的數(shù)據(jù)包數(shù)量等,周詳?shù)膬?nèi)容和ifconfig輸出的結(jié)果是相同 的。
范例二:啟動(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)閉啊。簡單得要命
[root@linux ~]# ip link set eth0 mtu 1000
# 更改 MTU 的值,實(shí)現(xiàn) 1000 bytes,單位就是 bytes
使用ifconfig也能更新網(wǎng)卡的MTU,沒什么不相同的地方,不過,如果是要更改網(wǎng)卡代號、MAC地址的信息的話,那可就得使用ip了。不過,設(shè)置前得要先關(guān)閉該網(wǎng)卡,否則會(huì)不成功。如下所示:
范例三:修改網(wǎng)卡代號、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)卡代號都能改動(dòng)。不過,玩玩后記得改回來
# 因?yàn)槲覀兊?ifcfg-eth0 還是使用原本的設(shè)備代號。避免有問題,要改回來
[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
如果說ip link是和OSI七層協(xié)議的第二層數(shù)據(jù)鏈路層有關(guān)的話,那么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è)特別的字體嗎?沒錯(cuò),那就是IP參數(shù),也是ip address最主要的功能。下面我們進(jìn)一步來新增虛擬的網(wǎng)絡(luò)接口看看:
范例二:新增一個(gè)接口,名稱假設(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
# 看到上面的特別字體了吧?多出了一行新的接口,且名稱是 eth0:vbird
# 至于那個(gè) broadcast + 也能寫成 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
# 刪除就比較簡單
3. 關(guān)于路由的相關(guān)設(shè)置:ip route
這個(gè)項(xiàng)目當(dāng)然就是路由的觀察和設(shè)置了。事實(shí)上,ip route的功能幾乎和route命令差不多,不過,他還能進(jìn)行額外的參數(shù)設(shè)計(jì),例如MTU的規(guī)劃等,功能相當(dāng)強(qiáng)大。
[root@linux ~]# ip route show
如上述代碼所示,最簡單的功能就是顯示出目前的路由信息,其實(shí)跟route命令相同,只是需要注意幾個(gè)小細(xì)節(jié):
? proto:此路由的路由協(xié)議,主要有Redirect、Kernel、Boot、Static、Ra等,其中Kernel指的是直接由核心判斷自動(dòng)設(shè)置。
? scope:路由的范圍,主要是link,即是和本設(shè)備有關(guān)的直接聯(lián)機(jī)。
再來看一下怎么進(jìn)行路由的增加和刪除吧。
范例二:增加路由,主要是本機(jī)直接可溝通的網(wǎng)段
[root@linux ~]# ip route add 192.168.5.0/24 dev eth0
# 針對本機(jī)直接溝通的網(wǎng)段設(shè)置好路由,不必通過外部的路由器
[root@linux ~]# ip route show
192.168.5.0/24 dev eth0 scope link
……以下省略……
范例三:增加能通往外部的路由,需通過 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ī)來幫忙傳遞。和之前提到的 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)暈,沒有關(guān)系。你先會(huì)使用ifconfig、ifup、ifdown和 route即可,等以后有了經(jīng)驗(yàn)之后,再繼續(xù)回來用ip吧。有興趣的話,也能自行參考ethtool命令(man ethtool)。
iwlist、iwconfig
這兩個(gè)命令需要你有無線網(wǎng)卡才能夠進(jìn)行使用。其用法如下:
? iwlist:利用無線網(wǎng)卡進(jìn)行無線AP的檢測和取得相關(guān)的數(shù)據(jù)。
? iwconfig:設(shè)置無線網(wǎng)卡的相關(guān)參數(shù)。
5.1.5 dhClient
如 果你是使用DHCP協(xié)議在局域網(wǎng)內(nèi)取得IP的話,那么是否一定要去編輯ifcfg-eth0內(nèi)的BOOTPROTO呢?有個(gè)更快速的做法,就是利用 dhClient這個(gè)命令。因?yàn)檫@個(gè)命令才是真正發(fā)送DHCP請求的。如果不考慮其他的參數(shù),他的用法非常簡單,使用下面的方法即可:
[root@linux ~]# dhClient eth0
非常簡單吧。這樣就能即時(shí)讓我們的網(wǎng)卡以DHCP協(xié)議去嘗試取得IP。不過在SuSE Distribution里面,他僅有dhcpcd這個(gè)程式,他和dhClient是相同的東西。
linux常用網(wǎng)絡(luò)命令4.ping
這 個(gè)ping是非常重要的命令,ping主要通過ICMP數(shù)據(jù)包來進(jìn)行整個(gè)網(wǎng)絡(luò)的狀況報(bào)告,當(dāng)然,最重要的就是ICMP type 0、8這兩個(gè)類型,分別是需求回報(bào)和主動(dòng)回報(bào)網(wǎng)絡(luò)狀態(tài)是否存在的特性。要特別注意的是,ping需要通過IP數(shù)據(jù)包來傳送ICMP數(shù)據(jù)包,而IP數(shù)據(jù)包里 有個(gè)相當(dāng)重要的TTL(Time To Live)屬性,這是個(gè)非常重要的路由特性,周詳?shù)腎P和ICMP表頭數(shù)據(jù)請參考網(wǎng)絡(luò)基礎(chǔ)的周詳介紹。
[root@linux ~]# ping [-bcstnM] IP
參數(shù):
-b,后面接的是 broadcast 的 IP,用在你“需要對整個(gè)網(wǎng)段的主機(jī)進(jìn)行 ping ”時(shí);
-c,后面接的是執(zhí)行 ping 的次數(shù),例如 -c 5 ;
-n,不進(jìn)行 IP 和主機(jī)名稱的反查,直接使用 IP ;
-s,發(fā)送出去的 ICMP 數(shù)據(jù)包大小,默認(rèn)為 56(bytes),再加 8 bytes 的 ICMP 表頭資料。
-t,TTL 的數(shù)值,默認(rèn)是 255,每經(jīng)過一個(gè)節(jié)點(diǎn)就會(huì)少
-M [do|dont] :主要在檢測網(wǎng)絡(luò)的 MTU 數(shù)值大小,兩個(gè)常見的項(xiàng)目是:
do,代表傳送一個(gè) DF (Don’t Fragment) 旗標(biāo),讓數(shù)據(jù)包不能重新拆包和打包;
dont,代表不要傳送 DF 標(biāo)記,表示數(shù)據(jù)包能在其他主機(jī)上拆包和打包。
范例一:檢測一下 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最簡單的功能就是傳送ICMP數(shù)據(jù)包去需求對方主機(jī)響應(yīng)是否存在于網(wǎng)絡(luò)環(huán)境中。上面的響應(yīng)信息當(dāng)中,幾個(gè)重要的項(xiàng)目如下。
? 64 Bytes:表示這次傳送的ICMP數(shù)據(jù)包大小為64 Bytes,這是默認(rèn)值。在某些特別場合中,例如,要搜索整個(gè)網(wǎng)絡(luò)內(nèi)最大的MTU時(shí),能使用-s 2000之類的數(shù)值來取代。
? icmp_seq=0:ICMP所檢測進(jìn)行的次數(shù),第一次編號為0。
? ttl=243:TTL和IP數(shù)據(jù)包內(nèi)的TTL是相同的,每經(jīng)過一個(gè)帶有MAC的節(jié)點(diǎn)(node)時(shí),例如router、bridge時(shí),TTL就會(huì)減少1,默認(rèn)的TTL為255,你能通過 -t 150之類的方法來重新設(shè)置默認(rèn)TTL數(shù)值。
? time=9.16 ms:響應(yīng)時(shí)間,單位有ms(0.001秒)及µs(0.000001秒),一般來說,響應(yīng)時(shí)間越小,表示兩臺(tái)主機(jī)之間的網(wǎng)絡(luò)聯(lián)機(jī)越良好。
如果你忘記加上 -c 3這樣的規(guī)定檢測次數(shù),那就得要使用 [ctrl]-c將他結(jié)束掉了。
范例二:針對整個(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ī)來檢測。另外要特別注意一下,如果你的主機(jī)和待檢測主機(jī)并不在同一個(gè)網(wǎng)段內(nèi),那么TTL默認(rèn)使用 255,如果是同一個(gè)網(wǎng)段內(nèi),那么TTL默認(rèn)則使用64??纯瓷厦娴妮敵黾纯擅靼?。
我們在前幾章的網(wǎng)絡(luò)基礎(chǔ)里面談到加大幀(frame)時(shí),對于 網(wǎng)絡(luò)性能是有幫助的,因?yàn)閿?shù)據(jù)包打包的次數(shù)會(huì)減少,加上如果整個(gè)傳輸?shù)拿浇槎寄軌蚪邮苓@個(gè)frame而不必重新進(jìn)行數(shù)據(jù)包的拆解和重組的話,那么性能當(dāng)然 會(huì)更好,修改frame大小的參數(shù)就是MTU。好了,目前我們知道網(wǎng)卡的MTU能通過ifconfig或是ip等來實(shí)現(xiàn),那么追蹤整個(gè)網(wǎng)絡(luò)傳輸?shù)淖畲?MTU時(shí),又該怎么查詢?最簡單的方法當(dāng)然是通過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ù)包,如果無響應(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ò)誤信息是說,本地端的 MTU 才到 1500 而已,你要檢測 8000 的 MTU
# 根本就是無法實(shí)現(xiàn)的。那怎么是好?用前一小節(jié)介紹的 ip link 來進(jìn)行 MTU 設(shè)置吧
不 過,你需要知道的是,由于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ì)影響到檢測,所以如果想要檢測整個(gè)傳輸媒介的MTU數(shù)值,那么每個(gè)能調(diào)整的主機(jī)就得要先 使用ifcofig或ip將MTU調(diào)大,然后再去進(jìn)行檢測,否則就會(huì)像上面提供的案例相同,可能會(huì)出現(xiàn)“Message too long,mtu=1500”之類的字樣。如果檢測完畢后,想要調(diào)整最佳化的MTU,那么請參考前一章節(jié)的內(nèi)容來調(diào)整。
不過不要隨便調(diào)整MTU,除非真的有問題。通常是在如下情況調(diào)整MTU。
? 因?yàn)槿康闹鳈C(jī)群都是在內(nèi)部的網(wǎng)段,例如群集架構(gòu)(Cluster)的環(huán)境下,由于內(nèi)部的網(wǎng)絡(luò)節(jié)點(diǎn)都是我們能控制的,因此能通過修改MTU來改進(jìn)網(wǎng)絡(luò)性能。
? 因?yàn)椴僮飨到y(tǒng)默認(rèn)的MTU和你的網(wǎng)段不符,導(dǎo)致某些網(wǎng)站能順利聯(lián)機(jī),某些網(wǎng)站則無法聯(lián)機(jī)。以視窗系統(tǒng)操作系統(tǒng)作為聯(lián)機(jī)分享的主機(jī)時(shí),在Client端挺容易發(fā)生這個(gè)問題。
如果是要連上Internet的主機(jī),注意不要隨便調(diào)整MTU,因?yàn)槲覀儫o法知道Internet上面的每臺(tái)機(jī)器能夠支持的MTU到多大,因?yàn)檫@些也不是我們能夠管得到的。
另外,其實(shí)每種聯(lián)機(jī)方式都有不同的MTU值,常見的各種接口的MTU值如表5-1所示。
表5-1 常見的各種接口的MTU值
網(wǎng)絡(luò)接口
MTU
Ethernet
1500
PPPoE
1492
Dial-up(Modem)
576
網(wǎng)絡(luò)上也有免費(fèi)幫忙查詢MTU和傳輸相關(guān)數(shù)據(jù)的網(wǎng)站,例如下面這個(gè)網(wǎng)站:
http://forums.speedguide.net:8117/
連接上這個(gè)網(wǎng)站之前,請先取消你瀏覽器上的代理服務(wù)器(Proxy)的設(shè)置,才能顯示出正確的信息。如果在視窗系統(tǒng)的系統(tǒng)上想要修改MTU值的話,那就得要修改視窗系統(tǒng)的日志文件,在視窗系統(tǒng)上面對于MTU的檢測和修改的周詳做法能參考微軟的官方網(wǎng)站:
http://www.microsoft.com/taiwan/msclub/member/TIPS/Spring_2001
/tip1to3/tip1to3_2.htm
linux常用網(wǎng)絡(luò)命令5.traceroute
我 們前面談到的命令大多數(shù)都是針對主機(jī)的網(wǎng)絡(luò)參數(shù)設(shè)置所需要的,而ping是兩臺(tái)主機(jī)之間的回應(yīng)和否的判斷,那么有沒有命令能追蹤兩臺(tái)主機(jī)之間通過的各個(gè)節(jié) 點(diǎn)(Node)通信狀況的好壞呢?如果我們聯(lián)機(jī)到y(tǒng)ahoo的速度比平常慢,你覺得是自己的網(wǎng)絡(luò)環(huán)境有問題,還是外部的Internet有問題?如果是前 者的話,我們當(dāng)然需要檢查自己的網(wǎng)絡(luò)環(huán)境,看看究竟是誰中毒了?但如果是Internet的問題呢?那只有“等等等”了。判斷是這個(gè)問題就得要使用 traceroute這個(gè)命令。
[root@linux ~]# traceroute [-nwig] IP
參數(shù):
-n,能不必進(jìn)行主機(jī)的名稱解析,只用 IP ,速度較快。
-w,若對方主機(jī)在幾秒鐘內(nèi)沒有回聲就宣告不治...默認(rèn)是 5 秒。
-i,用在比較復(fù)雜的環(huán)境,如果你的網(wǎng)絡(luò)接口非常多非常復(fù)雜時(shí),才會(huì)用到這個(gè)參數(shù)。
例如,你有兩條 ADSL 能連接到外部,那你的主機(jī)會(huì)有兩個(gè) ppp。
你能使用 -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ì)針對你想要連接的目的地的所有Router進(jìn)行ICMP的超時(shí)等待,例如上面的例子當(dāng)中,由鳥哥的主機(jī)連接 到Y(jié)ahoo時(shí),他會(huì)經(jīng)過12個(gè)節(jié)點(diǎn),traceroute會(huì)主動(dòng)對這12個(gè)節(jié)點(diǎn)做ICMP的回應(yīng)等待,并檢測回復(fù)的時(shí)間,每個(gè)節(jié)點(diǎn)會(huì)檢測三次。所以像上 面顯示的結(jié)果,發(fā)現(xiàn)每個(gè)節(jié)點(diǎn)其實(shí)回復(fù)的時(shí)間大約在200 ms以內(nèi),算是Internet的環(huán)境還能了。而且由上面的信息來看,在61.58.33.133這個(gè)節(jié)點(diǎn)后的傳輸延遲較久,至于之前的9個(gè)節(jié)點(diǎn)則有不錯(cuò) 的表現(xiàn)。通過這種分析,能讓你了解到這條聯(lián)線是哪個(gè)環(huán)節(jié)出了問題。
另外,如果在默認(rèn)的5秒鐘之內(nèi)traceroute聽不到節(jié)點(diǎn)的回應(yīng),那么屏幕 上就會(huì)出現(xiàn)一個(gè)“*”的符號,告知該節(jié)點(diǎn)無法有順利的響應(yīng)。由于我們的traceroute用的是ICMP數(shù)據(jù)包,有些防火墻或主機(jī)可能會(huì)將ICMP數(shù)據(jù) 包扔掉,因此就會(huì)造成等不到回應(yīng)的狀況。另外,有些Gateway本來就不支持traceroute的功能,因此也會(huì)產(chǎn)生“*”的狀況,所以分析時(shí)要注意 一下。
linux常用網(wǎng)絡(luò)命令6.nslookup
這條命令的用途和host基本上是相同的,就是用來作為IP和主機(jī)名稱對應(yīng)的檢查,同樣是使用 /etc/resolv.conf這個(gè)文件作為DNS服務(wù)器的來源選擇。
[root@linux ~]# nslookup [-query=[type]] [hostname|IP]
參數(shù):
-query=type:查詢的類型,除了傳統(tǒng)的 IP 和主機(jī)名稱對應(yīng)外,DNS 更有非常多信息
所以我們能查詢非常多不同的信息,包括mx、cname 等
例如: -query=mx 的查詢方法。
范例一:找出 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ī)名稱
[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差不多吧。不過,這個(gè)nslookup還能通過IP找出主機(jī)名稱。例如,那個(gè)范例二,他的主機(jī)名稱是:dns.hinet.net。目前大家都建議使用dig這個(gè)命令來取代nslookup
linux常用網(wǎng)絡(luò)命令7.Telnet
Telnet 是早期個(gè)人計(jì)算機(jī)連接到服務(wù)器主機(jī)上工作時(shí)最重要的一個(gè)軟件了。他不僅能直接連接到服務(wù)器上,還能用來連接BBS呢。非常棒!不過,Telnet本身的數(shù) 據(jù)在傳送的時(shí)候是使用明文(原始的數(shù)據(jù),沒有加密),所以數(shù)據(jù)在Internet上面跑的時(shí)候,會(huì)比較危險(xiǎn)一點(diǎn)(就怕被別人監(jiān)聽)。更周詳?shù)膬?nèi)容我們會(huì)在 “遠(yuǎn)程聯(lián)機(jī)服務(wù)器”章節(jié)里做介紹的。
[root@linux ~]# Telnet [host|IP] [port]
范例一:連接到成大夢之大地這個(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ù)載正常]
?─┼────┼─? ?? ┌┤夢之大地├────────────┐
?──┬──┬──??───┴┴───┬? │ │
?──┴──┴──? │ │ 夢之大地由 │
?────────? ?─? │ 【計(jì)算機(jī)網(wǎng)絡(luò)愛好社‧CCNS】 │
?───┬───? ?──? │ 維護(hù)管理 │
│ │ ?─? │ │
?───┴───? ?┴───────? └───────────┤By BenHe├┘
┌┤本站站長群├────────┐ ? ? ? ?
│站長: billcho │ ?────┼────??─┼─?┼──┼?
│系統(tǒng): cat │ │ │ │ ││
│站務(wù): muwell ianwolf │ ??? │ │ ││
│ renn999 GG │ ?? ?? │ │ │?
│ │ ?? ?? │? │
└───────────────┘ ?? ?─??─┴? ?───?
參觀用賬號:guest,申請新賬號:new。目前在線人數(shù) [2183/5000] 人。
請輸入代號:
如 上所示,我們能通過Telnet輕易地連接到BBS上面,而如果你的主機(jī)有開啟Telnet服務(wù)的話,同樣地利用Telnet IP并且輸入賬號和密碼 之后,就能夠登錄主機(jī)了。另外,在Linux上的Telnet軟件還提供了Kerberos的認(rèn)證方式,有興趣的話請自行參閱man Telnet的說明。
除了連接到服務(wù)器及連接到BBS站之外,Telnet還能用來連接到某個(gè)port(服務(wù))上。例如,我們能用Telnet連接到port 110,看看這個(gè)port是否正確啟動(dòng)了。
范例二:檢測本機(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 沒有啟動(dòng)或是這個(gè)聯(lián)機(jī)有問題
# 因?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)聽的服務(wù)都有其特別的命令,例如,上述的port 25就是本機(jī)接口提供的電子郵件服務(wù),那個(gè)服務(wù)所支持的命令就如同上面使用的數(shù)據(jù)相同,不過其他的port就不見得支持這個(gè)ehlo命令,因?yàn)椴煌?port有不同的程式嘛,當(dāng)然支持的命令就不同了
linux常用網(wǎng)絡(luò)命令8.FTP
常常會(huì)聽到FTP這個(gè)服務(wù)。如果你想要下載Linux的光盤燒錄映象文件時(shí),能到FTP網(wǎng)站,他們都是FTP提供者啊。那我們要怎么去下載呢?當(dāng)然就是通過FTP的客戶端軟件了。在Linux下面,我們能通過FTP這個(gè)軟件,也能通過下一小節(jié)會(huì)提到的LFTP軟件。
[root@linux ~]# FTP [-p] [host|IP] [port]
參數(shù):
-p :啟動(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)詳談,這里我們先簡單介紹一下怎么使用FTP這個(gè)軟件。首先當(dāng)然需要登錄了,所以在上面的代碼中填入賬號和密碼。由于提供匿名登錄,而匿名登錄者 的賬號就是anonymous,所以直接填寫那個(gè)賬號即可。如果是私人的FTP,可能需要提供一組完整的賬號和密碼。
登錄FTP主機(jī)后,就能夠使 用FTP軟件的功能進(jìn)行上傳和下載的操作,幾個(gè)常用的FTP內(nèi)命令如上述代碼所示,不過,鳥哥建議你能連到大學(xué)的FTP網(wǎng)站后,使用help(或問號 ?)來查詢可用的命令,然后嘗試下載以測試使用一下這個(gè)命令吧。這樣以后沒有瀏覽器的時(shí)候,你也能直接連接下載FTP了。
另外,如果由于某些原因,讓你的FTP主機(jī)的port開在非正規(guī)的端口,那你就能利用下面的方式來連接到該臺(tái)主機(jī)。
[root@linux ~]# FTP hostname 318
# 假設(shè)對方主機(jī)的 FTP 服務(wù)開啟在 318 這個(gè) port 。
linux常用網(wǎng)絡(luò)命令9.LFTP
早期當(dāng)我們要登錄提供匿名登錄的主機(jī)時(shí),非常多時(shí)候都是使用ncFTP這個(gè)軟件,不過,目前有更棒的選擇,那就是LFTP。這個(gè)軟件甚至能在FTP里面使用類似Bash的指令功能,實(shí)在是非常的完美。而且整個(gè)使用的方法和上面提到的FTP又非常類似。
[root@linux ~]# LFTP [-p port] [-u user[,pass]] [host|IP]
參數(shù):
-p,后面能直接接上遠(yuǎn)程 FTP 主機(jī)提供的 port
-u,后面則是接上 賬號和密碼 ,就能夠連接上遠(yuǎn)程主機(jī)了
如果沒有加賬號密碼, lFTP 默認(rèn)會(huì)使用 anonymous 嘗試匿名登錄
范例一:利用 LFTP 登錄義守大學(xué)
[root@linux ~]# LFTP FTP.isu.edu.tw
lFTP FTP.isu.edu.tw:~>
# 瞧。一下子就登錄了
至 于登錄FTP主機(jī)后,相同能使用help來顯示出能執(zhí)行的命令,和FTP非常類似。不過多了書簽的功能,而且也非常的類似于bash,這個(gè)功能非常不錯(cuò)。 除了這個(gè)好用的文本界面的FTP軟件之外,事實(shí)上更有非常多圖像界面的好用軟件呢。最常見的就是gFTP了。不僅是圖像界面,而且和cute FTP非常像,非常容易上手。Cent OS本身就有提供gFTP了,你能拿出原版的光盤來安裝,然后進(jìn)入X Window后,啟動(dòng)一個(gè)Shell,輸入gFTP就能夠發(fā)現(xiàn)他的好用了。下面我們再來介紹一下實(shí)時(shí)通信吧。
linux常用網(wǎng)絡(luò)命令9.Gaim
我想,目前大家應(yīng)該都知道什么是MSN、雅虎實(shí)時(shí)通及其他的通信軟件吧。那么要連上這些服務(wù)器時(shí),該怎么處理哪?非常簡單,在X Window下面使用Gaim就行了,太方便了。請先進(jìn)入X Window系統(tǒng),然后開啟一個(gè)終端機(jī)窗口,接著直接輸入Gaim(請注意你必須已安裝了Gaim了),然后就會(huì)出現(xiàn)如圖5-1所示的窗口。
圖5-1 Gaim使用范例圖
輸入你的賬號和密碼,并選擇相對應(yīng)的實(shí)時(shí)通信服務(wù)器(如MSN或Yahoo實(shí)時(shí)通),就能進(jìn)入到如圖5-2所示的界面
圖5-2 Gaim使用范例圖
當(dāng)一切都沒有問題后,按下“登錄”按鈕,這樣就能在Linux上使用實(shí)時(shí)通信軟件了,方便得非常。
文本網(wǎng)頁瀏覽
什么?文本界面竟然有瀏覽器!別逗了好不好?呵呵!誰有那個(gè)時(shí)間在逗你。真的有這個(gè)東西,是在文本界面下上網(wǎng)瀏覽的好工具,他們分別是lynx及wget這兩個(gè)寶貝,不過,你必須確定你已安裝了這兩個(gè)軟件才行。下面就讓我們來聊一聊這兩個(gè)好用的家伙吧。
5.4.1 lynx
這 個(gè)命令最大的作用就是讓我們在文本模式下使用這個(gè)瀏覽器來瀏覽網(wǎng)頁。但鳥哥認(rèn)為,這個(gè)文件最大的功能是查閱Linux本機(jī)上面以HTML語法寫成的文件信 息(Document),怎么說呢?如果你原來在Linux本機(jī)下面的 /usr/share/doc這個(gè)目錄看過文件信息的話,就會(huì)常常發(fā)現(xiàn)一些網(wǎng)頁文件,使用vi去查閱時(shí),總是看到一堆HTML的語法,妨礙閱讀啊。這時(shí)候 使用lynx就是個(gè)好方法了,內(nèi)容能看得清清晰楚。
[root@linux ~]# lynx [options] [website]
參數(shù):
options 指的是一些慣用的參數(shù),能使用 man lynx 查閱,常見的有:
-anonymous :默認(rèn)使用匿名登錄。
-assume_charset=big5 :設(shè)置默認(rèn)的語系數(shù)據(jù)為 big5 ,用在中文網(wǎng)頁非常方便。
范例一:瀏覽 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ī)就得要有相對應(yīng)的顯示編碼才行,否則會(huì)有一堆亂碼產(chǎn)生。當(dāng)我直接輸入lynx網(wǎng)站的網(wǎng)址后,就會(huì)出現(xiàn)如圖5-3所示界面。
圖5-3 lynx使用范例圖
在圖5-3中,特別字體的部分是我們能使用Tab按鍵來進(jìn)行終極鏈接的轉(zhuǎn)換。而上圖最下面一行則顯示出一些熱鍵,能按上述的熱鍵來參考一些常見的命令功能。不過有些地方你還是要知道一下:
? 進(jìn)入界面之后,由于是文本模式,所以編排可能會(huì)有點(diǎn)位移。不過不要緊,不會(huì)影響我們查看信息。
? 這個(gè)時(shí)候能使用“上下鍵”讓光標(biāo)停在上面的選項(xiàng)當(dāng)中(如信箱、書簽等),再按下Enter就進(jìn)入該頁面。
? 能使用左右鍵來移動(dòng)“上一頁”或“下一頁”。
? 能通過修改 /etc/lynx.cfg來設(shè)置顯示的字符編碼(中國臺(tái)灣地區(qū)能選擇Big5編碼)。
? 其他的設(shè)置能使用上面的范例中最下面那一行的說明。
一些常見功能如下:
? h:Help,求助功能,在線說明書。
? g:Goto URL,按g后輸入網(wǎng)頁地址(URL)如
http://www.abc.edu/
等。
? d:download,下載文件。
? q:Quit,退出lynx 。
? Ctrl+C:強(qiáng)迫中止lynx的執(zhí)行。
? 方向鍵如下:
Ø 上:移動(dòng)光標(biāo)至本頁中“上一個(gè)可鏈接點(diǎn)”。
Ø 下:移動(dòng)光標(biāo)至本頁中“下一個(gè)可鏈接點(diǎn)”。
Ø 左:back,跳回上一頁。
Ø 右:進(jìn)入反白光標(biāo)所鏈接的網(wǎng)頁。
Ø Enter:等同“右”鍵。
至于如果是瀏覽Linux本機(jī)上面的網(wǎng)頁文件,那就能使用如下的方式:
[root@linux ~]# cd /usr/share/doc/samba-3.0.10/htmldocs
[root@linux htmldocs]# lynx index.html
在鳥哥的Cent OS 4.3當(dāng)中,有這么一個(gè)文件,我就能利用lynx來取得查看。顯示的結(jié)果如圖5-4所示。
圖5-4 lynx使用范例圖
當(dāng)然,因?yàn)槟愕沫h(huán)境可能是在Linux本機(jī)的tty1~tty6,所以無法顯示出中文,這個(gè)時(shí)候你就得要進(jìn)行LANG=en_US之類的語言設(shè)置才行。而如果你常常需要瀏覽中文語系的網(wǎng)頁,那就能直接修改設(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)站來自動(dòng)取得更新時(shí)。例如,早期的自動(dòng)在線更新主機(jī)名稱系統(tǒng),僅支持網(wǎng)頁更新,那你怎么進(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ǎng)頁的GET功能取得的各項(xiàng)變量數(shù)據(jù),利用這個(gè)功能,我們就能直接登錄到該網(wǎng)站上了。非常方便吧。而 且會(huì)將執(zhí)行的結(jié)果輸出到testfile文件中,不過如果網(wǎng)站提供的數(shù)據(jù)是以POST為主的話,那鳥哥就不知道怎么搞定了。
linux常用網(wǎng)絡(luò)命令10.tcpdump
說 實(shí)在的,對于tcpdump這個(gè)軟件來說,你甚至能說這個(gè)軟件其實(shí)就是個(gè)黑客軟件,因?yàn)樗粌H能分析數(shù)據(jù)包的流向,連數(shù)據(jù)包的內(nèi)容也能進(jìn)行監(jiān)聽,如果你使 用的傳輸數(shù)據(jù)是明文的話,在Router上就可能被人家監(jiān)聽走了。非??膳?。所以,我們也要來了解一下這個(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ù)名稱。
-i,后面接要「監(jiān)聽」的網(wǎng)絡(luò)接口,例如 eth0, lo, ppp0 等等的接口。
-w,如果你要將監(jiān)聽所得的數(shù)據(jù)包數(shù)據(jù)儲(chǔ)存下來,用這個(gè)參數(shù)就對了。后面接文件名。
-c,監(jiān)聽的數(shù)據(jù)包數(shù),如果沒有這個(gè)參數(shù), tcpdump 會(huì)持續(xù)不斷的監(jiān)聽,
直到用戶輸入 [ctrl]-c 為止。
-A,數(shù)據(jù)包的內(nèi)容以 ASCII 顯示,通常用來捉取 WWW 的網(wǎng)頁數(shù)據(jù)包資料。
-e,使用資料連接層 (OSI 第二層) 的 MAC 數(shù)據(jù)包數(shù)據(jù)來顯示。
-q,僅列出較為簡短的數(shù)據(jù)包信息,每一行的內(nèi)容比較精簡。
-X,能列出十六進(jìn)制 (hex) 及 ASCII 的數(shù)據(jù)包內(nèi)容,對于監(jiān)聽數(shù)據(jù)包內(nèi)容非常有用。
-r,從后面接的文件將數(shù)據(jù)包數(shù)據(jù)讀出來。那個(gè)「文件」是已存在的文件,
并且這個(gè)「文件」是由 -w 所制作出來的。
所欲捕捉的數(shù)據(jù)內(nèi)容:我們能專門針對某些通信協(xié)議或是 IP 來源進(jìn)行數(shù)據(jù)包捕捉。
那就能簡化輸出的結(jié)果,并取得最有用的信息。常見的表示方法有。
’host foo’, ’host 127.0.0.1’ :針對單臺(tái)主機(jī)來進(jìn)行數(shù)據(jù)包捕捉。
’net 192.168’ :針對某個(gè)網(wǎng)段來進(jìn)行數(shù)據(jù)包的捕捉。
’src host 127.0.0.1’ ’dst net 192.168’:同時(shí)加上來源(src)或目標(biāo)(dst)限制。
’tcp port 21’:還能針對通信協(xié)議檢測,如tcp、udp、arp、ether 等。
還能利用 and 和 or 來進(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ù),用戶如果沒有簡單的網(wǎng)絡(luò)數(shù)據(jù)包基礎(chǔ)知識,要看懂非常困難。所以,至少你得要 回到第2章“網(wǎng)絡(luò)基礎(chǔ)”里面去好好理解一下TCP數(shù)據(jù)包的表頭信息才好。至于那個(gè)在范例一所產(chǎn)生的輸出中,我們能大概區(qū)分為幾個(gè)字段,現(xiàn)以范例一當(dāng)中那行 特別字體行來說明一下:
? 01:33:40.41:這個(gè)是此數(shù)據(jù)包被捕捉的時(shí)間,“時(shí):分:秒”的單位。
? IP:通過的通信協(xié)議是IP。
? 192.168.1.100.22>:傳送端是192.168.1.100這個(gè)IP,而傳送的Port Number為22,那個(gè)大于(>)的符號指的是數(shù)據(jù)包的傳輸方向。
? 192.168.1.11.1190:接收端的IP是192.168.1.11,且該主機(jī)開啟port 1190來接收。
? 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)資料。
最 簡單的說法,就是該數(shù)據(jù)包是由192.168.1.100傳到192.168.1.11,通過的port是由22到1190,且?guī)в?16 Bytes的數(shù)據(jù)量,使用的是PUSH的標(biāo)記,而不是SYN之類的主動(dòng)聯(lián)機(jī)標(biāo)志。不容易看得懂吧。所以,我才會(huì)講請務(wù)必到“TCP表頭數(shù)據(jù)”的章節(jié)去看一 看。
接下來,在一個(gè)網(wǎng)絡(luò)狀態(tài)非常忙的主機(jī)上面,你想要取得某臺(tái)主機(jī)對你聯(lián)機(jī)的數(shù)據(jù)包數(shù)據(jù)時(shí),使用tcpdump配合管線命令和正則表達(dá)式也能,不 過,畢竟不好捕捉。我們能通過tcpdump的表達(dá)式功能,就能夠輕易地將所需要的數(shù)據(jù)獨(dú)立的取出來。在上面的范例一當(dāng)中,我們僅針對eth0做監(jiān)聽,所 以整個(gè)eth0接口上面的數(shù)據(jù)都會(huì)被顯示到屏幕上,但這樣不好分析,能簡化嗎?例如,只取出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ì)發(fā)現(xiàn)數(shù)據(jù)包的傳遞都是雙向的,Client端發(fā)出請求而Server端則予以響應(yīng),所以,當(dāng)然是有去有回了。而我們也就能經(jīng)過這個(gè)數(shù)據(jù)包的流向來了解到數(shù)據(jù)包運(yùn)動(dòng)的過程了。例如:
? 我們先在一個(gè)終端機(jī)窗口輸入“tcpdump-i lo-nn”的監(jiān)聽。
? 再另開一個(gè)終端機(jī)窗口來對本機(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的基本說明,然后:
第3行顯示的是來自Client端帶有SYN主動(dòng)聯(lián)機(jī)的數(shù)據(jù)包。
第4行顯示的是來自Server端,除了響應(yīng)Client端之外(ACK),還帶有SYN主動(dòng)聯(lián)機(jī)的標(biāo)志。
第5行則顯示Client端響應(yīng)Server確定聯(lián)機(jī)建立(ACK)。
第6行以后則開始進(jìn)入數(shù)據(jù)傳輸?shù)牟襟E。
從 第3~5行的流程來看,熟不熟悉啊?沒錯(cuò)。那就是3次握手的基礎(chǔ)流程,有趣吧。不過tcpdump之所以被稱為黑客軟件之一遠(yuǎn)不止上面介紹的功能。上面介 紹的功能能用來作為我們主機(jī)的數(shù)據(jù)包聯(lián)機(jī)和傳輸?shù)牧鞒谭治?,這將有助于我們了解到數(shù)據(jù)包的運(yùn)作,同時(shí)了解到主機(jī)的防火墻設(shè)置規(guī)則是否有需要修訂的地方。
更 有更神奇的用法。當(dāng)我們使用tcpdump在Router上面監(jiān)聽明文的傳輸數(shù)據(jù)時(shí),例如FTP傳輸協(xié)議,你覺得會(huì)發(fā)生什么問題呢?我們先在主機(jī)端執(zhí)行 “tcpdump -i lo port 21 -nn ?X”,然后再以FTP登錄本機(jī),并輸入賬號和密碼,結(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é)果中搜索相關(guān)的字符串才行。從上面輸出結(jié)果的特別字體中,我們能發(fā)現(xiàn)該FTP軟件使用的是 vsFTPd,并且用戶輸入dmtsai這個(gè)賬號名稱,且密碼是mypasswordisyou。你說可不可怕啊。如果使用的是明文方式來傳輸你的網(wǎng)絡(luò)數(shù) 據(jù)呢?所以我們才常常在講啊,網(wǎng)絡(luò)是非常不安全的。
另外你得了解,為了讓網(wǎng)絡(luò)接口能讓tcpdump監(jiān)聽,所以執(zhí)行tcpdump時(shí)網(wǎng)絡(luò)接口會(huì)啟 動(dòng)在“混雜模式(promiscuous)”,所以你會(huì)在 /var/log/messages里面看到非常多的警告信息,通知你說你的網(wǎng)卡被設(shè)置成為混雜模式。別擔(dān)心,那是正常的。至于更多的應(yīng)用,請參考man tcpdump了。
例題:怎么使用tcpdump監(jiān)聽來自eth0適配卡且通信協(xié)議為port 22,目標(biāo)來源為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類似,不過他的命令名稱為tethereal就是了。因?yàn)橛梅ú畈欢啵越ㄗh你直接使用man tethereal查閱。在Cent OS上原本就有ethereal,所以請拿出光盤來安裝即可,需要同時(shí)安裝ethereal和ethereal-gnome才行。
啟動(dòng)的方法非常簡單,你需要在X Window下面,先啟動(dòng)一個(gè)終端機(jī),然后直接輸入ethereal后,就會(huì)出現(xiàn)如圖5-5所示的畫面
圖5-5 ethereal使用范例圖
簡單的做法,你能單擊如圖5-5顯示的那個(gè)按鈕,會(huì)出現(xiàn)挑選監(jiān)聽的接口窗口,如圖5-6所示。
圖5-6 ethereal使用范例圖
你應(yīng)該選擇要監(jiān)聽的接口,在這里因?yàn)槭菧y試用的,所以鳥哥使用的是lo這個(gè)內(nèi)部接口,你當(dāng)然應(yīng)該要選擇你自己的網(wǎng)絡(luò)接口才是。然后單擊Start后,就會(huì)出現(xiàn)開始檢測的界面了,如圖5-7所示。
圖5-7 ethereal使用范例圖
在這個(gè)界面當(dāng)中你能看到非常多類型的數(shù)據(jù)包協(xié)議,在等你處理完畢后,就能單擊Stop結(jié)束監(jiān)聽,而開始進(jìn)入如圖5-8所示的數(shù)據(jù)包分析界面。
圖5-8 ethereal使用范例圖
數(shù) 據(jù)包分析界面共分為3大區(qū)塊,如圖5-8所示,第一區(qū)塊主要顯示的是數(shù)據(jù)包的標(biāo)頭資料,內(nèi)容有點(diǎn)類似tcpdump的顯示結(jié)果;第二區(qū)塊則是周詳?shù)谋眍^數(shù) 據(jù),包括通信協(xié)議的內(nèi)容及Socket Pair等信息。第三區(qū)塊則是16進(jìn)制和ASCII碼的顯示結(jié)果。通過這個(gè)ethereal,你就能一口氣得到所需要的所有數(shù)據(jù)包內(nèi)容。而且還是圖像界面 的,非常方便吧。通過在第一區(qū)塊選擇不同的數(shù)據(jù)包,就能夠查閱每個(gè)數(shù)據(jù)包的數(shù)據(jù)內(nèi)容了。
linux常用網(wǎng)絡(luò)命令12.nc、netcat
這 個(gè)nc能用來作為某些服務(wù)的檢測,因?yàn)樗苓B接到某個(gè)port來進(jìn)行通信,此外,還能自行啟動(dòng)一個(gè)port來傾聽其他用戶的聯(lián)機(jī),非常好用。如果在編譯的 時(shí)候設(shè)置GAPING_SECURITY_HOLE參數(shù)的話,這個(gè)軟件還能用來取得客戶端的bash??膳掳伞N覀兊腃entOS比較人性化,并沒有設(shè)置 上面的參數(shù),所以我們不能夠用來作為黑客軟件。不過用來取代Telnet功能已夠用了(有的系統(tǒng)將執(zhí)行文件改名為netcat了)。
[root@linux ~]# nc [IP|host] [port]
[root@linux ~]# nc -l -p [port]
參數(shù):
-l,作為監(jiān)聽之用,亦即開啟一個(gè) port 來監(jiān)聽用戶的聯(lián)機(jī)。
-p,開啟的這個(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è)最簡單的功能和Telnet幾乎相同吧,他能檢查某個(gè)服務(wù)。不過,更神奇的在后面,我們能建立兩個(gè)聯(lián)機(jī)來通信。舉個(gè)例子來說,我們先在Client端的地方啟動(dòng)一個(gè)port來進(jìn)行傾聽:
范例二:激活一個(gè) port 來監(jiān)聽用戶的聯(lián)機(jī)需求
[root@linux ~]# nc -l -p 20000
# 啟動(dòng)一個(gè) port 20000 在主機(jī)上,如果此時(shí)使用 netstat ?tlnp。
# 就能看到系統(tǒng)上多出來一個(gè) port 20000 在傾聽用戶的聯(lián)機(jī)。
然后在主機(jī)端的地方,也利用nc來聯(lián)機(jī)到客戶端,并且輸入一些命令看看。
[root@linux ~]# nc localhost 20000
此 時(shí),在主機(jī)端我們能打入一些字,你會(huì)發(fā)目前Client端會(huì)同時(shí)出現(xiàn)你輸入的文字。如果你同時(shí)設(shè)置一些額外的參數(shù),例如利用標(biāo)準(zhǔn)輸入和輸出(stdout 和stdin)的話,那么就能通過這個(gè)聯(lián)機(jī)來做非常多事情了。當(dāng)然nc的功能不僅如此,你還能發(fā)現(xiàn)非常多的用途。請自行到你主機(jī)內(nèi)的 /usr/share/doc/nc-1.10/scripts目錄下看看這些script,有幫助的。不過,如果你需要額外地編譯出含有GAPING_ SECURITY_HOLE功能,以使兩端聯(lián)機(jī)能進(jìn)行額外命令的執(zhí)行時(shí),就需要自己下載原始碼來編譯了。
重 點(diǎn) 回 顧
? 修改網(wǎng)絡(luò)接口的硬件相關(guān)參數(shù),能使用ifconfig這個(gè)命令,包括MTU等。
? ifup和ifdown其實(shí)只是script,在使用時(shí),會(huì)主動(dòng)去 /etc/sysconfig/network- scripts里找到相對應(yīng)的設(shè)備設(shè)置文件,才能夠正確地啟動(dòng)和關(guān)閉。
? 路由的修改和查閱能使用route來查詢,此外,route亦可進(jìn)行新增、刪除路由的工作。
? ip命令能用來作為整個(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主要是通過ICMP數(shù)據(jù)包來進(jìn)行網(wǎng)絡(luò)環(huán)境的檢測工作,并且能使用ping來查詢整體網(wǎng)段可接受的最大MTU值。
? 監(jiān)測每個(gè)節(jié)點(diǎn)的連接狀況,能使用traceroute這個(gè)命令來追蹤。
? netstat除了能觀察本機(jī)的啟動(dòng)接口外,還能觀察Unix socket的傳統(tǒng)接口數(shù)據(jù)。
? host和nslookup默認(rèn)都是通過/etc/resolv.conf內(nèi)設(shè)置的DNS主機(jī)來進(jìn)行主機(jī)名稱和IP的查詢。
? LFTP能用來匿名登錄遠(yuǎn)程的FTP主機(jī)。
? Telnet不僅用來進(jìn)行BBS的登錄,也能用來作為某些端口服務(wù)的測試。
? lynx主要的功能是瀏覽,包括本機(jī)上HTML語法的文件,wget則主要用來下載WWW的資料。
? 捕捉數(shù)據(jù)包以分析數(shù)據(jù)包的流向,可使用tcpdump,至于圖像界面的ethereal則能進(jìn)行更為周詳?shù)慕馕觥?/p>
? 通過tcpdump分析3次握手,及分析明文傳輸?shù)臄?shù)據(jù),可發(fā)現(xiàn)網(wǎng)絡(luò)加密的重要性。
? nc可用來取代Telnet進(jìn)行某些服務(wù)端口的檢測工作,同時(shí)若自行編譯nc,可額外地執(zhí)行-e參數(shù)。