最近更新日期:2006/08/02 Linux 的網(wǎng)路功能相當(dāng)?shù)膹?qiáng)悍,一時之間我們也無法完全的介紹所有的網(wǎng)路指令, 這個章節(jié)主要的目的在介紹一些常見的網(wǎng)路指令而已。至於每個指令的詳細(xì)用途將在後續(xù)伺服器架設(shè)時, 依照指令的相關(guān)性來進(jìn)行說明。當(dāng)然,在這個章節(jié)的主要目的是在於將所有的指令彙整在一起,比較容易瞭解啦! 還有,這一章鳥哥新增了一些封包擷取的指令,若不熟悉沒關(guān)係,先放著,全部讀完後再回來這一章仔細(xì)練習(xí)??! |
網(wǎng)路參數(shù)設(shè)定指令:
任何時刻如果你想要做好你的網(wǎng)路參數(shù)設(shè)定,包括 IP 參數(shù)、路由參數(shù)與無線網(wǎng)路等等, 就得要瞭解底下這些相關(guān)的指令才行!其中以 route 及 ip 這兩支指令算是較重要的喔! ^_^ 當(dāng)然,比較早期的用法,我們都是使用 ifconfig 的啦! ifconfig:查詢、設(shè)定網(wǎng)路卡與 IP 網(wǎng)域等相關(guān)參數(shù); ifup, ifdown:這兩個檔案是 script ,透過更簡單的方式來啟動網(wǎng)路介面; route:查詢、設(shè)定路由表 (route table) ip:複合式的指令,可以直接修改上述提到的功能;
ifconfig, ifup, ifdown
這三個指令的用途都是在啟動網(wǎng)路介面,不過, ifup 與 ifdown 僅能就 /etc/sysconfig/network-scripts 內(nèi)的 ifcfg-ethx (x 為數(shù)字) 進(jìn)行啟動或關(guān)閉的動作,並不能直接修改網(wǎng)路參數(shù),除非手動調(diào)整 ifcfg-ethx 檔案才行。至於 ifconfig 則可以直接手動給予某個介面 IP 或調(diào)整其網(wǎng)路參數(shù)! 底下我們就分別來談一談先!
ifconfig
ifconfig 主要是可以手動的啟動、觀察與修改網(wǎng)路介面的相關(guān)參數(shù),可以修改的參數(shù)很多啊, 包括 IP 參數(shù)以及 MTU 等等都可以修改,他的語法如下: [root@linux ~]# ifconfig {interface} {up|down} <== 觀察與啟動介面
[root@linux ~]# ifconfig interface {options} <== 設(shè)定與修改介面
參數(shù):
interface:網(wǎng)路卡介面代號,包括 eth0, eth1, ppp0 等等
options :可以接的參數(shù),包括如下:
up, down :啟動 (up) 或關(guān)閉 (down) 該網(wǎng)路介面(不涉及任何參數(shù))
mtu :可以設(shè)定不同的 MTU 數(shù)值,例如 mtu 1500 (單位為 byte)
netmask :就是子遮罩網(wǎng)路;
broadcast:就是廣播位址?。? 範(fàn)例:
範(fàn)例一:觀察所有的網(wǎng)路介面(直接輸入 ifconfig)
[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
inet6 addr: fe80::20f:eaff:fe73:682/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3439 errors:0 dropped:0 overruns:0 frame:0
TX packets:2735 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:646935 (631.7 KiB) TX bytes:562313 (549.1 KiB)
Interrupt:209 Memory:fb000000-0
|
一般來說, 直接輸入 ifconfig 就會列出目前已經(jīng)被啟動的卡, 不論這個卡是否有給予 IP ,都會被顯示出來。而 如果是輸入 ifconfig eth0 , 則會秀出這張介面的相關(guān)資料,而不管該介面是否有啟動。所以如果您想要知道某張網(wǎng)路卡的 Hardware Address,直接輸入『 ifconfig "網(wǎng)路介面代號" 』即可喔! ^_^! 至於上表出現(xiàn)的各項(xiàng)資料是這樣的(資料排列由上而下、由左而右): 透過觀察上述的資料,大致上可以瞭解到您的網(wǎng)路情況,尤其是那個 RX, TX 內(nèi)的 error 數(shù)量, 以及是否發(fā)生嚴(yán)重的 collision 情況,都是需要注意的喔! ^_^ 範(fàn)例二:暫時修改網(wǎng)路介面
[root@linux ~]# ifconfig eth0 192.168.100.100
# 如果不加任何其他參數(shù),則系統(tǒng)會依照該 IP 所在的 class 範(fàn)圍,
# 自動的計(jì)算出 netmask 以及 network, broadcast 等 IP 參數(shù);
[root@linux ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128 > mtu 8000
# 設(shè)定網(wǎng)路介面,同時設(shè)定 MTU 的數(shù)值!
[root@linux ~]# ifconfig eth0 mtu 9000
# 僅修改該介面的 MTU 數(shù)值,其他的保持不動!
[root@linux ~]# ifconfig eth0:0 192.168.50.50
# 仔細(xì)看那個介面, eth0:0 喔!那就是在該網(wǎng)路介面上,再模擬一個網(wǎng)路介面,
# 亦即是在一張網(wǎng)路卡上面設(shè)定多個 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)的資訊都相同?。]錯!因?yàn)槭峭粡埦W(wǎng)卡嘛!
[root@linux ~]# ifconfig eth0:0 down
# 關(guān)掉 eth0:0 這個介面。如果想要啟動 eth1 ,並且不給予任何網(wǎng)路參數(shù),
# ifconfig eth1 up 就可以達(dá)到了!
[root@linux ~]# /etc/init.d/network restart
# 剛剛設(shè)定的資料全部失效,會以 ifcfg-ethx 的設(shè)定為主!
|
呵呵!使用 ifconfig 可以暫時手動來設(shè)定或修改某個介面卡的相關(guān)功能, 並且也可以透過 eth0:0 這種虛擬的網(wǎng)路介面來設(shè)定好一張網(wǎng)路卡上面的多個 IP 喔! 手動的方式真是簡單??!並且設(shè)定錯誤也不打緊,因?yàn)槲覀兛梢岳? /etc/init.d/network restart 來重新啟動整個網(wǎng)路介面,那麼之前手動的設(shè)定資料會全部都失效喔!另外, 要啟動某個網(wǎng)路介面,但又不讓他具有 IP 參數(shù)時,直接給他 ifconfig eth0 up 即可! 這個動作 經(jīng)常在無線網(wǎng)卡當(dāng)中會進(jìn)行, 因?yàn)槲覀儽仨氁獑訜o線網(wǎng)卡讓他去偵測 AP 存在與否啊!
eth0:就是網(wǎng)路卡的代號,也有 lo 這個 loopback ; HWaddr:就是網(wǎng)路卡的硬體位址,俗稱的 MAC 是也; inet addr:IPv4 的 IP 位址,後續(xù)的 Bcase, Mask 分別代表的是 Broadcast 與 netmask 喔! inet6 addr:是 IPv6 的版本的 IP ,我們沒有使用,所以略過; MTU:就是 MTU ??! RX:那一行代表的是網(wǎng)路由啟動到目前為止的封包接收情況, packets 代表封包數(shù)、errors 代表封包發(fā)生錯誤的數(shù)量、 dropped 代表封包由於有問題而遭丟棄的數(shù)量等等 TX:與 RX 相反,為網(wǎng)路由啟動到目前為止的傳送情況; collisions:代表封包碰撞的情況,如果發(fā)生太多次, 表示您的網(wǎng)路狀況不太好; txqueuelen:代表用來傳輸資料的緩衝區(qū)的儲存長度; RX bytes, TX bytes:總傳送、接收的位元組總量 Interrupt, Memory:網(wǎng)路卡硬體的資料, IRQ 岔斷與記憶體位址;
ifup, ifdown
即時的手動修改一些網(wǎng)路介面參數(shù),可以利用 ifconfig 來達(dá)成,如果是要直接以設(shè)定檔, 亦即是在 /etc/sysconfig/network-scripts 裡面的 ifcfg-ethx 等檔案的設(shè)定參數(shù)來啟動的話, 那就得要透過 ifdown 或 ifup 來達(dá)成了。 [root@linux ~]# ifup {interface}
[root@linux ~]# ifdown {interface}
[root@linux ~]# ifup eth0
|
ifup 與 ifdown 真是太簡單了!這兩支程式其實(shí)是 script 而已,他會直接到 /etc/sysconfig/network-scripts 目錄下搜尋對應(yīng)的設(shè)定檔,例如 ifup eth0 時,他會找出 ifcfg- eth0 這個檔案的內(nèi)容,然後來加以設(shè)定。 關(guān)於 ifcfg-eth0 的設(shè)定則請參考前一章 連上 Internet 的說明。 不過,由於這兩支程式主要是搜尋設(shè)定檔 (ifcfg-ethx) 來進(jìn)行啟動與關(guān)閉的, 所以在使用前請確定 ifcfg-ethx 是否真的存在於正確的目錄內(nèi),否則會啟動失敗喔! 另外, 如果以 ifconfig eth0 .... 來設(shè)定或者是修改了網(wǎng)路介面後, 那就無法再以 ifdown eth0 的方式來關(guān)閉了!因?yàn)?ifdown 會分析比對目前的網(wǎng)路參數(shù)與 ifcfg-eth0 是否相符,不符的話,就會放棄該次動作。因此,使用 ifconfig 修改完畢後,應(yīng)該要以 ifconfig eth0 down 才能夠關(guān)閉該介面喔!
路由修改 route
我們在 網(wǎng)路基礎(chǔ)的時候談過關(guān)於路由的問題, 兩部主機(jī)之間一定要有路由才能夠互通 TCP/IP 的協(xié)定,否則就無法進(jìn)行連線??! 一般來說,只要有網(wǎng)路介面,該介面就會產(chǎn)生一個路由,例如在鳥哥實(shí)驗(yàn)室內(nèi)部的主機(jī)有一個 eth0 及 lo , 所以: [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 :使用更詳細(xì)的資訊來顯示
增加 (add) 與刪除 (del) 路由的相關(guān)參數(shù):
-net :表示後面接的路由為一個網(wǎng)域;
-host :表示後面接的為連接到單部主機(jī)的路由;
netmask :與網(wǎng)域有關(guān),可以設(shè)定 netmask 決定網(wǎng)域的大?。? gw :gateway 的簡寫,後續(xù)接的是 IP 的數(shù)值喔,與 dev 不同;
dev :如果只是要指定由那一塊網(wǎng)路卡連線出去,則使用這個設(shè)定,後面接 eth0 等
範(fà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
|
由上面的例子當(dāng)中仔細(xì)觀察 route 與 route -n 的輸出結(jié)果,你可以發(fā)現(xiàn)有加 -n 參數(shù)的主要是顯示出 IP ,至於使用 route 而已的話,顯示的則是『主機(jī)名稱』喔! 也就是說,在預(yù)設(shè)的情況下, route 會去找出該 IP 的主機(jī)名稱,如果找不到呢? 就會顯示的鈍鈍的(有點(diǎn)小慢),所以說,鳥哥通常都直接使用 route -n 啦! 由上面看起來,我們也知道 default = 0.0.0.0/0.0.0.0 , 而上面的資訊有哪些你必須要知道的呢? Destination, Genmask:這兩個玩意兒就是分別是 network 與 netmask 啦!所以這兩個咚咚就組合成為一個完整的網(wǎng)域囉! Gateway:該網(wǎng)域是通過那個 gateway 連接出去的? 如果顯示 0.0.0.0 表示該路由是直接由本機(jī)傳送,亦即可以透過區(qū)域網(wǎng)路的 MAC 直接傳訊; 如果有顯示 IP 的話,表示該路由需要經(jīng)過路由器 (通訊閘) 的幫忙才能夠傳送出去。 Flags:總共有多個旗標(biāo),代表的意義如下: U (route is up):該路由是啟動的; H (target is a host):目標(biāo)是一部主機(jī) (IP) 而非網(wǎng)域; G (use gateway):需要透過外部的主機(jī) (gateway) 來轉(zhuǎn)遞封包; R (reinstate route for dynamic routing):使用動態(tài)路由時,恢復(fù)路由資訊的旗標(biāo); D (dynamically installed by daemon or redirect):已經(jīng)由服務(wù)或轉(zhuǎn) port 功能設(shè)定為動態(tài)路由 M (modified from routing daemon or redirect):路由已經(jīng)被修改了; ! (reject route):這個路由將不會被接受(用來抵擋不安全的網(wǎng)域!)
Iface:這個路由傳遞封包的介面。
此外,觀察一下上面的路由排列順序喔, 依序是由小網(wǎng)域 (192.168.10.0/24 是 Class C),逐漸到大網(wǎng)域 (169.254.0.0/16 Class B) 最後則是預(yù)設(shè)路由 (0.0.0.0/0.0.0.0)。 然後當(dāng)我們要判斷某個網(wǎng)路封包應(yīng)該如何傳送的時候,該封包會經(jīng)由這個路由的過程來判斷喔! 舉例來說,我上頭僅有三個路由,若我有一個傳往 192.168.10.20 的封包要傳遞,那首先會找 192.168.10.0/24 這個網(wǎng)域的路由,找到了!所以直接由 eth0 傳送出去; 如果是傳送到 Yahoo 的主機(jī)呢? Yahoo 的主機(jī) IP 是 202.43.195.52,我通過判斷 1)不是 192.168.10.0/24, 2)不是 169.254.0.0/16 結(jié)果到達(dá) 3)0/0 時,OK!傳出去了,透過 eth0 將封包傳給 192.168.10.30 那部 gateway 主機(jī)??!所以說,路由是有順序的。 因此當(dāng)你重複設(shè)定多個同樣的路由時, 例如在你的主機(jī)上的兩張網(wǎng)路卡設(shè)定為相同網(wǎng)域的 IP 時,會出現(xiàn)什麼情況?會出現(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
|
也就是說, 由於路由是依照順序來排列與傳送的, 所以不論封包是由那個介面 (eth0, eth1) 所接收,都會由上述的 eth0 傳送出去, 所以,在一部主機(jī)上面設(shè)定兩個相同網(wǎng)域的 IP 本身沒有什麼意義!有點(diǎn)多此一舉就是了。 除非是類似虛擬主機(jī) (Xen, VMware 等軟體) 所架設(shè)的多主機(jī)時,才會有這個必要~ 範(fàn)例二:路由的增加與刪除
[root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
# 上面這個動作可以刪除掉 169.254.0.0/16 這個網(wǎng)域!
# 請注意,在刪除的時候,需要將路由表上面出現(xiàn)的資訊都寫入
# 包括 netmask , dev 等等參數(shù)喔!注意注意
[root@linux ~]# route add -net 192.168.100.0 > netmask 255.255.255.0 dev eth0
# 透過 route add 來增加一個路由!請注意,這個路由必須要能夠與你互通。
# 舉例來說,如果我下達(dá)底下的指令就會顯示錯誤:
# 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 這個 IP ,所以不能與 192.168.200.254
# 這個網(wǎng)段直接使用 MAC 互通!這樣說,可以理解喔???
[root@linux ~]# route add default gw 192.168.10.30
# 增加預(yù)設(shè)路由的方法!請注意,只要有一個預(yù)設(shè)路由就夠了喔!
# 在這個地方如果您隨便設(shè)定後,記得使用底下的指令重新設(shè)定你的網(wǎng)路
# /etc/init.d/network restart
|
如果是要進(jìn)行路由的刪除與增加,那就得要參考上面的例子了, 其實(shí),使用 man route 裡面的資料就很豐富了!仔細(xì)查閱一下囉! 你只要記得,當(dāng)出現(xiàn)『 SIOCADDRT: Network is unreachable』 這個錯誤時,肯定是由於 gw 後面接的 IP 無法直接與您的網(wǎng)域溝通 (Gateway 並不在你的網(wǎng)域內(nèi)), 所以,趕緊檢查一下是否輸入錯誤?。〖佑桶?!
ip
ip 是個指令喔!並不是那個 TCP/IP 的 IP 啦!這個 ip 指令的功能可多了! 基本上,他就是整合了 ifconfig 與 route 這兩個指令囉~不過, ip 可以達(dá)成的功能卻又多更多! 真是個相當(dāng)厲害的指令。如果您有興趣的話,請自行 vi /sbin/ifup ,就知道整個 ifup 就是利用 ip 這個指令來達(dá)成的。好了,如何使用呢?讓我們來瞧一瞧先! [root@linux ~]# ip [option] [動作] [指令]
參數(shù):
option :設(shè)定的參數(shù),主要有:
-s :顯示出該裝置的統(tǒng)計(jì)數(shù)據(jù)(statistics),例如總接受封包數(shù)等;
動作:亦即是可以針對哪些網(wǎng)路參數(shù)進(jìn)行動作,包括有:
link :關(guān)於裝置 (device) 的相關(guān)設(shè)定,包括 MTU, MAC 位址等等
addr/address :關(guān)於額外的 IP 協(xié)定,例如多 IP 的達(dá)成等等;
route :與路由有關(guān)的相關(guān)設(shè)定
|
由上面的語法我們可以知道, ip 除了可以設(shè)定一些基本的網(wǎng)路參數(shù)之外,還能夠進(jìn)行額外的 IP 協(xié)定, 包括多 IP 的達(dá)成,真是太完美了!底下我們就分三個部分 (link, addr, route) 來介紹這個 ip 指令吧!
關(guān)於裝置介面 (device) 的相關(guān)設(shè)定: ip link ip link 可以設(shè)定與裝置 (device) 有關(guān)的相關(guān)設(shè)定,包括 MTU 以及該網(wǎng)路介面的 MAC 等等, 當(dāng)然也可以啟動 (up) 或關(guān)閉 (down) 某個網(wǎng)路介面啦!整個語法是這樣的: [root@linux ~]# ip [-s] link show <== 單純的查閱該裝置相關(guān)的資訊
[root@linux ~]# ip link set [device] [動作與參數(shù)]
參數(shù):
show:僅顯示出這個裝置的相關(guān)內(nèi)容,如果加上 -s 會顯示更多統(tǒng)計(jì)數(shù)據(jù);
set :可以開始設(shè)定項(xiàng)目, device 指的是 eth0, eth1 等等介面代號;
動作與參數(shù):包括有底下的這些動作:
up|down :啟動 (up) 或關(guān)閉 (down) 某個介面,其他參數(shù)使用預(yù)設(shè)的乙太網(wǎng)路;
address :如果這個裝置可以更改 MAC 的話,用這個參數(shù)修改!
name :給予這個裝置一個特殊的名字;
mtu :就是最大傳輸單元?。? 範(fàn)例一:顯示出所有的介面資訊
[root@linux ~]# ip link show
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
[root@linux ~]# ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,10000> 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 可以顯示出整個裝置介面的硬體相關(guān)資訊,如上所示,包括網(wǎng)卡位址(MAC)、MTU等等, 比較有趣的應(yīng)該是那個 sit0 的介面了,那個 sit0 的介面是用在 IPv4 及 IPv6 的封包轉(zhuǎn)換上的, 對於我們僅使用 IPv4 的網(wǎng)路是沒有作用的。 lo 及 sit0 都是主機(jī)內(nèi)部所自行設(shè)定的。 而如果加上 -s 的參數(shù)後,則這個網(wǎng)路卡的相關(guān)統(tǒng)計(jì)資訊就會被列出來, 包括接收 (RX) 及傳送 (TX) 的封包數(shù)量等等,詳細(xì)的內(nèi)容與 ifconfig 所輸出的結(jié)果相同的。 範(fàn)例二:啟動、關(guān)閉與設(shè)定裝置的相關(guān)資訊
[root@linux ~]# ip link set eth0 up
# 啟動 eth0 這個裝置介面;
[root@linux ~]# ip link set eth0 down
# 阿就關(guān)閉??!簡單的要命~
[root@linux ~]# ip link set eth0 mtu 1000
# 更改 MTU 的值,達(dá)到 1000 bytes,單位就是 bytes ??!
|
更新網(wǎng)路卡的 MTU 使用 ifconfig 也可以達(dá)成??!沒啥了不起,不過,如果是要更改『網(wǎng)路卡代號、 MAC 位址的資訊』的話,那可就得使用 ip 囉~不過,設(shè)定前得要先關(guān)閉該網(wǎng)路卡,否則會不成功。 如下所示: 範(fàn)例三:修改網(wǎng)路卡代號、MAC 等參數(shù)
[root@linux ~]# ip link set eth0 name vbird
SIOCSIFNAME: Device or resource busy # 因?yàn)樵撗b置目前是啟動的,所以不能這樣做設(shè)定。你應(yīng)該要這樣做:
[root@linux ~]# ip link set eth0 down <==關(guān)閉介面
[root@linux ~]# ip link set eth0 name vbird <==重新設(shè)定
[root@linux ~]# ip link show <==觀察一下
2. vbird: <BROADCAST,MILTICASE> mtu 900 qdisc pfifo_fast qlen 1000
link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff # 怕了吧!連網(wǎng)路卡代號都可以改變!不過,玩玩後記得改回來啊!
# 因?yàn)槲覀兊?nbsp;ifcfg-eth0 還是使用原本的裝置代號!避免有問題,要改回來
[root@linux ~]# ip link set vbird name eth0 <==介面改回來
[root@linux ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa
[root@linux ~]# ip link show eth0
# 如果你的網(wǎng)路卡支援硬體位址 (MAC) 可以更改的話,
# 那麼上面這個動作就可以更改你的網(wǎng)路卡位址了!厲害吧!
# 不過,還是那句老話,測試完之後請立刻改回來啊!
|
在這個裝置的硬體相關(guān)資訊設(shè)定上面,包括 MTU, MAC 以及傳輸?shù)哪J降鹊?,都可以在這裡設(shè)定。 有趣的是那個 address 的項(xiàng)目,那個項(xiàng)目後面接的可是硬體位址 (MAC) 而不是 IP 喔! 很容易搞錯?。∏杏浨杏?!更多的硬體參數(shù)可以使用 man ip 查閱一下與 ip link 有關(guān)的設(shè)定。
關(guān)於額外的 IP 相關(guān)設(shè)定: ip address 如果說 ip link 是與 OSI 七層協(xié)定 的第二層資料連階層有關(guān)的話,那麼 ip address (ip addr) 就是與第三層網(wǎng)路層有關(guān)的參數(shù)啦! 主要是在設(shè)定與 IP 有關(guān)的各項(xiàng)參數(shù),包括 netmask, broadcast 等等。 [root@linux ~]# ip address show <==就是查閱 IP 參數(shù)??!
[root@linux ~]# ip address [add|del] [IP參數(shù)] [dev 裝置名] [相關(guān)參數(shù)]
參數(shù):
show :單純的顯示出介面的 IP 資訊啊;
add|del :進(jìn)行相關(guān)參數(shù)的增加 (add) 或刪除 (del) 設(shè)定,主要有:
IP 參數(shù):主要就是網(wǎng)域的設(shè)定,例如 192.168.100.100/24 之類的設(shè)定喔;
dev :這個 IP 參數(shù)所要設(shè)定的介面,例如 eth0, eth1 等等;
相關(guān)參數(shù):主要有底下這些:
broadcast:設(shè)定廣播位址,如果設(shè)定值是 + 表示『讓系統(tǒng)自動計(jì)算』
label :亦即是這個裝置的別名,例如 eth0:0 就是了!
scope :這個介面的領(lǐng)域,通常是這幾個大類:
global :允許來自所有來源的連線;
site :僅支援 IPv6 ,僅允許本主機(jī)的連線;
link :僅允許本裝置自我連線;
host :僅允許本主機(jī)內(nèi)部的連線;
所以當(dāng)然是使用 global 囉!預(yù)設(shè)也是 global 啦!
範(fàn)例一:顯示出所有的介面之 IP 參數(shù):
[root@linux ~]# ip address show
1: lo: <LOOPBACK,UP,10000> 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: <BROADCAST,MULTICAST,UP,10000> 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: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
|
看到上面那個特殊的字體嗎?沒錯!那就是 IP 參數(shù)啦!也是 ip address 最主要的功能。 底下我們進(jìn)一步來新增虛擬的網(wǎng)路介面試看看: 範(fàn)例二:新增一個介面,名稱假設(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
# 至於那個 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 就能夠看到這個怪東西了!可愛吧! ^_^
範(fàn)例三:將剛剛的介面刪除
[root@linux ~]# ip address del 192.168.50.50/24 dev eth0
# 刪除就比較簡單??! ^_^
|
關(guān)於路由的相關(guān)設(shè)定: ip route 呵呵,這個項(xiàng)目當(dāng)然就是路由的觀察與設(shè)定囉!事實(shí)上, ip route 的功能幾乎與 route 這個指令差不多,但是,他還可以進(jìn)行額外的參數(shù)設(shè)計(jì),例如 MTU 的規(guī)劃等等,相當(dāng)?shù)膹?qiáng)悍啊! [root@linux ~]# ip route show <==單純的顯示出路由的設(shè)定而已
[root@linux ~]# ip route [add|del] [IP或網(wǎng)域] [via gateway] [dev 裝置]
參數(shù):
show :單純的顯示出路由表,也可以使用 list ;
add|del :增加 (add) 或刪除 (del) 路由的意思。
IP或網(wǎng)域:可使用 192.168.50.0/24 之類的網(wǎng)域或者是單純的 IP ;
via :從那個 gateway 出去,不一定需要;
dev :由那個裝置連出去,這就需要了!
mtu :可以額外的設(shè)定 MTU 的數(shù)值喔!
範(fàn)例一:顯示出目前的路由資料
[root@linux ~]# ip route show
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
169.254.0.0/16 dev eth1 scope link
default via 192.168.1.254 dev eth1
|
如上表所示,最簡單的功能就是顯示出目前的路由資訊,其實(shí)跟 route 這個指令相同啦! 指示必須要注意幾個小東西:再來看一下如何進(jìn)行路由的增加與刪除吧! 範(fà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 ....以下省略....
範(fàn)例三:增加可以通往外部的路由,需透過 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)槲矣?nbsp;192.168.5.0/24 的路由存在 (我的網(wǎng)卡直接聯(lián)繫),
# 所以才可以將 192.168.10.0/24 的路由丟給 192.168.5.100
# 那部主機(jī)來幫忙傳遞喔!與之前提到的 route 指令是一樣的限制!
範(fàn)例四:增加預(yù)設(shè)路由
[root@linux ~]# ip route add default via 192.168.1.2 dev eth0
# 那個 192.168.1.2 就是我的預(yù)設(shè)路由器 (gateway) 的意思啊! ^_^
# 真的記得,只要一個預(yù)設(shè)路由就 OK !
範(fàn)例五:刪除路由
[root@linux ~]# ip route del 192.168.10.0/24
[root@linux ~]# ip route del 192.168.5.0/24
|
事實(shí)上,這個 ip 的指令實(shí)在是太博大精深了!剛接觸 Linux 網(wǎng)路的朋友,可能會看到有點(diǎn)暈~ 不要緊啦!您先會使用 ifconfig, ifup , ifdown 與 route 即可, 等以後有經(jīng)驗(yàn)了之後,再繼續(xù)回來玩 ip 這個好玩的指令吧! ^_^ 有興趣的話,也可以自行參考 ethtool 這個指令喔! (man ethtool)。
proto:此路由的路由協(xié)定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判斷自動設(shè)定。 scope:路由的範(fàn)圍,主要是 link ,亦即是與本裝置有關(guān)的直接連線。
iwlist, iwconfig
這兩個指令您必須要有無線網(wǎng)卡才能夠進(jìn)行喔!這兩個指令的用途是這樣的: 這兩個指令的應(yīng)用我們在前一章裡面的 無線網(wǎng)卡設(shè)定 談了很多了,所以這裡我們不再詳談,有興趣的朋友應(yīng)該先使用 man iwlist 與 man iwconfig 瞭解一下語法, 然後再到前一章的無線網(wǎng)路小節(jié)查一查相關(guān)的用法,就瞭解了啦! ^_^
dhclient
如果你是使用 DHCP 協(xié)定在區(qū)域網(wǎng)路內(nèi)取得 IP 的話,那麼是否一定要去編輯 ifcfg-eth0 內(nèi)的 BOOTPROTO 呢? 嘿嘿!有個更快速的作法,那就是利用 dhclient 這個指令~因?yàn)檫@個指令才是真正發(fā)送 dhcp 要求工作的程式??!那要如何使用呢?很簡單!如果不考慮其他的參數(shù),使用底下的方法即可: [root@linux ~]# dhclient eth0
|
夠簡單吧!這樣就可以立刻叫我們的網(wǎng)路卡以 dhcp 協(xié)定去嘗試取得 IP 喔! 不過在 SuSE distribution 裡面,他僅有 dhcpcd 這支程式,他與 dhclient 是相同的咚咚啦! ^_^
網(wǎng)路偵錯與觀察指令:
在網(wǎng)路的互助論壇中,最常聽到的一句話就是:『 高手求救!我的 Linux 不能連上網(wǎng)路了!』我的天吶!不能上網(wǎng)路的原因多的很!而要完全搞懂也不是一件簡單的事情呢! 不過,事實(shí)上我們可以自己使用測試軟體來追蹤可能的錯誤原因,而很多的網(wǎng)路偵測指令其實(shí)在 Linux 裡頭已經(jīng)都預(yù)設(shè)存在了,只要您好好的學(xué)一學(xué)基本的偵測指令,那麼一些朋友在告訴您如何偵錯的時候, 您應(yīng)該就立刻可以知道如何來搞定他囉!好了,底下我們就簡單的來談一談幾個很基本的網(wǎng)路常用的偵錯指令啦!
ping
這個 ping 是很重要的指令,ping 主要透過 ICMP 封包 來進(jìn)行整個網(wǎng)路的狀況報(bào)告,當(dāng)然啦,最重要的就是那個 ICMP type 0, 8 這兩個類型, 分別是要求回報(bào)與主動回報(bào)網(wǎng)路狀態(tài)是否存在的特性。要特別注意的是, ping 還是需要透過 IP 封包來傳送 ICMP 封包的, 而 IP 封包裡面有個相當(dāng)重要的 TTL (Time To Live) 屬性,這是很重要的一個路由特性, 詳細(xì)的 IP 與 ICMP 表頭資料請參考 網(wǎng)路基礎(chǔ)的詳細(xì)介紹。 [root@linux ~]# ping [-bcstnM] IP
參數(shù):
-b :後面接的是 broadcast 的 IP,用在你『需要對整個網(wǎng)域的主機(jī)進(jìn)行 ping 』時;
-c :後面接的是執(zhí)行 ping 的次數(shù),例如 -c 5 ;
-n :不進(jìn)行 IP 與主機(jī)名稱的反查,直接使用 IP ;
-s :發(fā)送出去的 ICMP 封包大小,預(yù)設(shè)為 56(bytes),再加 8 bytes 的 ICMP 表頭資料
-t :TTL 的數(shù)值,預(yù)設(shè)是 255,每經(jīng)過一個節(jié)點(diǎn)就會少一;
-M [do|dont] :主要在偵測網(wǎng)路的 MTU 數(shù)值大小,兩個常見的項(xiàng)目是:
do :代表傳送一個 DF (Don‘t Fragment) 旗標(biāo),讓封包不能重新拆包與打包;
dont:代表不要傳送 DF 旗標(biāo),表示封包可以在其他主機(jī)上拆包與打包
範(fàn)例一:偵測一下 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 封包去要求對方主機(jī)回應(yīng)是否存在於網(wǎng)路環(huán)境中, 上面的回應(yīng)訊息當(dāng)中,幾個重要的項(xiàng)目是這樣的: 64 bytes:表示這次傳送的 ICMP 封包大小為 64 bytes 這麼大,這是預(yù)設(shè)值, 在某些特殊場合中,例如要搜索整個網(wǎng)路內(nèi)最大的 MTU 時,可以使用 -s 2000 之類的數(shù)值來取代; icmp_seq=0:ICMP 所偵測進(jìn)行的次數(shù),第一次編號為 0 ; ttl=243:TTL 與 IP 封包內(nèi)的 TTL 是相同的,每經(jīng)過一個帶有 MAC 的節(jié)點(diǎn) (node) 時,例如 router, bridge 時, TTL 就會減少一,預(yù)設(shè)的 TTL 為 255 , 你可以透過 -t 150 之類的方法來重新設(shè)定預(yù)設(shè) TTL 數(shù)值; time=9.16 ms:回應(yīng)時間,單位有 ms(0.001秒)及 us(0.000001秒), 一般來說,越小的回應(yīng)時間,表示兩部主機(jī)之間的網(wǎng)路連線越良好!
如果你忘記加上 -c 3 這樣的規(guī)定偵測次數(shù),那就得要使用 [ctrl]-c 將他結(jié)束掉了! 範(fàn)例二:針對整個網(wǎng)域進(jìn)行 ping 的追查
[root@linux ~]# ping -c 3 -b 192.168.10.255
WARNING: pinging broadcast address <==會告知危險(xiǎn)喔!
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!) # 當(dāng)要針對整部主機(jī)作 ping 的偵測時,可以利用 -b 這個參數(shù)。
# 請?zhí)貏e注意,當(dāng)使用 ping -b 時,會對整個網(wǎng)域進(jìn)行偵測喔!沒事別亂用。
# 例如上面的範(fàn)例中,區(qū)網(wǎng)內(nèi)的 192.168.10.20... 等主機(jī)會被偵測到。
|
如果想要瞭解區(qū)網(wǎng)內(nèi)有多少部主機(jī)存活著,那麼使用 ping -b broadcast 就能夠知道了! 而不必一部一部主機(jī)來偵測??!方便~另外也特別注意一下, 如果您的主機(jī)與待偵測主機(jī)並不在同一個網(wǎng)域內(nèi), 那麼 TTL 預(yù)設(shè)使用 255 ,如果是同一個網(wǎng)域內(nèi),那麼 TTL 預(yù)設(shè)則使用 64 喔! 看看上面的輸出即可瞭解。 用 ping 追蹤最大 MTU 數(shù)值
我們由前幾章的 網(wǎng)路基礎(chǔ)裡面談到加大訊框 (frame) 時, 對於網(wǎng)路效能是有幫助的,因?yàn)榉獍虬拇螖?shù)會減少,加上如果整個傳輸?shù)拿襟w都能夠接受這個 frame 而不需要重新進(jìn)行封包的拆解與重組的話,那麼效能當(dāng)然會更好,那個修改 frame 大小的參數(shù)就是 MTU 啦!好了,現(xiàn)在我們知道網(wǎng)路卡的 MTU 可以透過 ifconfig 或者是 ip 等來達(dá)成, 那麼追蹤整個網(wǎng)路傳輸?shù)淖畲?MTU 時,又該如何查詢?呵呵!最簡單的方法當(dāng)然是透過 ping 傳送一個大封包, 並且不許中繼的路由器或 switch 將該封包重組,那就能夠處理啦!沒錯!可以這樣的: 範(fàn)例三:找出最大的 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),那就是可以接受這個封包,如果無回應(yīng),那就表示這個 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
# 根本就是無法達(dá)成的!那要如何是好?用前一小節(jié)介紹的 ip link 來進(jìn)行 MTU 設(shè)定吧!
|
不過,你需要知道的是,由於 IP 封包表頭 (不含 options) 就已經(jīng)佔(zhàn)用了 20 bytes ,再加上 ICMP 的表頭有 8 bytes ,所以 當(dāng)然你在使用 -s size 的時候,那個封包的大小就得要先扣除 (20+8=28) 的大小了。 因此如果要使用 MTU 為 1500 時,就得要下達(dá)『 ping -s 1472 -M do xx.yy.zz.ip 』才行啊! 另外,由於本地端的網(wǎng)路卡 MTU 也會影響到偵測,所以如果想要偵測整個傳輸媒體的 MTU 數(shù)值, 那麼每個可以調(diào)整的主機(jī)就得要先使用 ifcofig 或 ip 先將 MTU 調(diào)大,然後再去進(jìn)行偵測, 否則就會出現(xiàn)像上面提供的案例一樣,可能會出現(xiàn)『Message too long, mtu=1500』之類的字樣喔! 至於如果偵測完畢後,想要調(diào)整最佳化的 MTU ,那麼請參考前一章節(jié)的內(nèi)容來調(diào)整囉! ^_^ 不過這個 MTU 不要隨便調(diào)整??!除非真的有問題。通常調(diào)整 MTU 的時間是在這個時候: 因?yàn)槿康闹鳈C(jī)群都是在內(nèi)部的區(qū)網(wǎng),例如叢集架構(gòu) (cluster) 的環(huán)境下, 由於內(nèi)部的網(wǎng)路節(jié)點(diǎn)都是我們可以控制的,因此可以透過修改 MTU 來增進(jìn)網(wǎng)路效能; 因?yàn)樽鳂I(yè)系統(tǒng)預(yù)設(shè)的 MTU 與您的網(wǎng)域不符,導(dǎo)致某些網(wǎng)站可以順利連線,某些網(wǎng)站則無法連線。 以 Windows 作業(yè)系統(tǒng)作為連線分享的主機(jī)時,在 Client 端挺容易發(fā)生這個問題;
如果是要連上 Internet 的主機(jī),注意不要隨便調(diào)整 MTU ,因?yàn)槲覀儫o法知道 Internet 上面的每部機(jī)器能夠支援的 MTU 到多大,因?yàn)?.....不是我們能夠管的到的嘛! ^_^ 另外,其實(shí)每種連線方式都有不同的 MTU 值,常見的各種介面的 MTU 值分別為︰ 網(wǎng)路介面 | MTU | Ethernet | 1500 | PPPoE | 1492 | Dial-up(Modem) | 576 |
網(wǎng)路上也有免費(fèi)幫忙查詢 MTU 與傳輸相關(guān)資料的網(wǎng)站,例如底下這個網(wǎng)站: 連接上這個網(wǎng)站之前,請先取消您瀏覽器上的代理伺服器 (Proxy) 的設(shè)定,才能顯示出正確的訊息。 如果在 Windows 的系統(tǒng)上面想要修改 MTU 值的話,那就得要修改 Windows 的登錄檔, 在 Windows 上面對於 MTU 的偵測與修改的詳細(xì)作法可以參考微軟的官方網(wǎng)站:
traceroute
我們前面談到的指令大多數(shù)都是針對主機(jī)的網(wǎng)路參數(shù)設(shè)定所需要的,而 ping 是兩部主機(jī)之間的回聲與否判斷, 那麼有沒有指令可以追蹤兩部主機(jī)之間通過的各個節(jié)點(diǎn) (node) 通訊狀況的好壞呢? 舉例來說,如果我們連線到 yahoo 的速度比平常慢,你覺得是 (1)自己的網(wǎng)路環(huán)境有問題? (2)還是外部的 Internet 有問題?如果是 (1) 的話,我們當(dāng)然需要檢查自己的網(wǎng)路環(huán)境啊, 看看是否又有誰中毒了?但如果是 Internet 的問題呢?那只有『等等等』啊! 判斷是 (1) 還是 (2) 就得要使用 traceroute 這個指令啦! [root@linux ~]# traceroute [-nwig] IP
參數(shù):
-n :可以不必進(jìn)行主機(jī)的名稱解析,單純用 IP ,速度較快!
-w :若對方主機(jī)在幾秒鐘內(nèi)沒有回聲就宣告不治...預(yù)設(shè)是 5 秒
-i :用在比較複雜的環(huán)境,如果你的網(wǎng)路介面很多很複雜時,才會用到這個參數(shù);
舉例來說,你有兩條 ADSL 可以連接到外部,那你的主機(jī)會有兩個 ppp,
你可以使用 -i 來選擇是 ppp0 還是 ppp1 啦!
-g :與 -i 的參數(shù)相仿,只是 -g 後面接的是 gateway 的 IP 就是了。
範(fàn)例一:
[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 進(jìn)行 ICMP 的逾時等待, 例如上面的例子當(dāng)中,由鳥哥的主機(jī)連接到 Yahoo 時,他會經(jīng)過 12 個節(jié)點(diǎn),traceroute 會主動的對這 12 個節(jié)點(diǎn)做 ICMP 的回聲等待,並偵測回覆的時間,每個節(jié)點(diǎn)會偵測三次。 所以像上頭顯示的結(jié)果,發(fā)現(xiàn)每個節(jié)點(diǎn)其實(shí)回覆的時間大約在 200 ms 以內(nèi),算是還可以的 Internet 環(huán)境了。 而且由上面的資訊來看,可以看出在 61.58.33.133 這個節(jié)點(diǎn)後的傳輸延遲較久,至於之前的 9 個節(jié)點(diǎn)則有不錯的表現(xiàn)。透過這種解析,可以讓您瞭解到這條連線是那個環(huán)節(jié)出了問題喔。 另外,如果在預(yù)設(shè)的 5 秒鐘之內(nèi) traceroute 聽不到節(jié)點(diǎn)的回聲,那麼螢?zāi)簧暇蜁艹鲆粋€『 * 』的符號, 告知該節(jié)點(diǎn)無法有順利的回應(yīng)。由於我們的 traceroute 用的是 ICMP 封包,有些防火牆或者主機(jī)可能會將 ICMP 可通過的權(quán)力拿掉,因此就會造成等不到回聲的狀態(tài)!另外,有些 gateway 本來就不支援 traceroute 的功能,因此也會產(chǎn)生那個『 * 』的狀況。所以分析時得要注意一下吶!
netstat
如果你覺得你的某個網(wǎng)路服務(wù)明明就啟動了,但是就是無法造成連線的話,那麼應(yīng)該怎麼辦? 首先你應(yīng)該要查詢一下自己的網(wǎng)路介面所監(jiān)聽的埠口 (port) 來看看是否真的有啟動, 因?yàn)橛袝r候螢?zāi)簧厦骘@示的 [OK] 並不一定是 OK ??! ^_^ [root@linux ~]# netstat -[rn] <==與路由有關(guān)的參數(shù)
[root@linux ~]# netstat -[antulpc] <==與網(wǎng)路介面有關(guān)的參數(shù)
參數(shù):
與路由 (route) 有關(guān)的參數(shù)說明:
-r :列出路由表(route table),功能如同 route 這個指令;
-n :不使用主機(jī)名稱與服務(wù)名稱,使用 IP 與 port number ,如同 route -n
與網(wǎng)路介面有關(guān)的參數(shù):
-a :列出所有的連線狀態(tài),包括 tcp/udp/unix socket 等;
-t :僅列出 TCP 封包的連線;
-u :僅列出 UDP 封包的連線;
-l :僅列出有在 Listen (監(jiān)聽) 的服務(wù)之網(wǎng)路狀態(tài);
-p :列出 PID 與 Program 的檔名;
-c :可以設(shè)定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網(wǎng)路狀態(tài)的顯示;
範(fàn)例一:列出目前的路由表狀態(tài),且以 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 # 其實(shí)這個參數(shù)就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦!
範(fàn)例二:列出目前的所有網(wǎng)路連線狀態(tài),使用 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 的網(wǎng)路介面部分,以及傳統(tǒng)的 Unix socket 部分。 還記得我們在基礎(chǔ)篇裡面曾經(jīng)談到檔案的類型嗎?那個 socket 與 FIFO 檔案還記得吧? 那就是在 Unix 介面用來做為程式資料交流的介面了,也就是上頭表格內(nèi)看到的 Active Unix domain sockets 的內(nèi)容囉~ 通常鳥哥都是建議加上『 -n 』這個參數(shù)的,因?yàn)榭梢员苓^主機(jī)名稱與服務(wù)名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當(dāng)中, 我們先來談一談關(guān)於網(wǎng)路連線狀態(tài)的輸出部分,他主要是分為底下幾個大項(xiàng): Proto:該連線的封包協(xié)定,主要為 TCP/UDP 等封包;
Recv-Q:非由使用者程式連接所複製而來的總 bytes 數(shù);
Send-Q:由遠(yuǎn)端主機(jī)所傳送而來,但不具有 ACK 標(biāo)誌的總 bytes 數(shù), 意指主動連線 SYN 或其他標(biāo)誌的封包所佔(zhàn)的 bytes 數(shù);
Local Address:本地端的位址,可以是 IP (-n 參數(shù)存在時), 也可以是完整的主機(jī)名稱。如上表我們看到的 IP 格式有兩種,一種是 IPv4 的標(biāo)準(zhǔn), 亦即是四組十進(jìn)位的數(shù)字後面加上冒號『:』後,接著 port number 。一種是 IPv6 , 前面的 IP 加上很多冒號『:』的格式。我們可以由這個顯示的資料看出這個服務(wù)是開放在哪一個介面, 例如上表當(dāng)中, port 22 是開放在 0.0.0.0 ,亦即是所有介面都可以連到 port 22 , 至於 port 53 則僅開放在本機(jī)的 127.0.0.1 這個介面而已,所以是不對外部介面開放的意思。
Foreign Address:遠(yuǎn)端的主機(jī) IP 與 port number
stat:狀態(tài)列,主要的狀態(tài)含有:
ESTABLISED:已建立連線的狀態(tài); SYN_SENT:發(fā)出主動連線 (SYN 標(biāo)誌) 的連線封包; SYN_RECV:接收到一個要求連線的主動連線封包; FIN_WAIT1:該插槽服務(wù)(socket)已中斷,該連線正在斷線當(dāng)中; FIN_WAIT2:該連線已掛斷,但正在等待對方主機(jī)回應(yīng)斷線確認(rèn)的封包; TIME_WAIT:該連線已掛斷,但 socket 還在網(wǎng)路上等待結(jié)束; LISTEN:通常用在服務(wù)的監(jiān)聽 port !可使用『 -l 』參數(shù)查閱。
基本上,我們常常談到的 netstat 的功能,就是在觀察網(wǎng)路的連線狀態(tài)了,而網(wǎng)路連線狀態(tài)中, 又以觀察『 我目前開了多少的 port 在等待用戶端的連線』以及 『 目前我的網(wǎng)路連線狀態(tài)中,有多少連線已建立或產(chǎn)生問題』最常見。 那你如何瞭解與觀察呢?通常鳥哥是這樣處理的: 範(fàn)例三:秀出目前已經(jīng)啟動的網(wǎng)路服務(wù)
[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 # 上面最重要的其實(shí)是那個 -l 的參數(shù),因?yàn)榭梢詢H列出有在 Listen 的 port
|
你可以在上面的範(fàn)例當(dāng)中發(fā)現(xiàn),我的網(wǎng)路連線僅有對外開放 port 25 以及 port 22 而已 (因?yàn)獒槍?0.0.0.0 開放), 至於 port 53 則僅針對內(nèi)部的 127.0.0.1 來開放,所以是不對 Internet 開放這個服務(wù)的喔! 而其中 port 22,25 都是使用 TCP 封包,至於 port 53 則是開放在 UDP 封包的狀態(tài)! 再仔細(xì)的看,每一行輸出的最右邊,你可以發(fā)現(xiàn)鳥哥的主機(jī) port 22 是由 sshd 這支程式所啟動的, 並且他的 PID 是 1924 ,看到這邊,聰明的您應(yīng)該知道,『 那我如何關(guān)閉這個 port 』吧?使用 kill 或 killall 即可啊! ^_^ 範(fàn)例四:觀察本機(jī)上頭所有的網(wǎng)路連線狀態(tài)
[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
|
看到上頭的特殊字體吧?那代表目前已經(jīng)建立連線的一條網(wǎng)路連線,他是由遠(yuǎn)端主機(jī) 192.168.1.210 啟動一個大於 1024 的埠口向本地端主機(jī) 192.168.1.100 的 port 22 進(jìn)行連線的一條連線, 你必須要想起來的是:『 Client 端是隨機(jī)取一個大於 1024 以上的 port 進(jìn)行連線』,此外『 只有 root 可以啟動小於 1023 以下的 port 』,那就看的懂上頭那條連線囉!如果這條連線你想要砍掉他的話, 看到最右邊的 30417/sshd 了沒? kill 會用吧! ^_^ 至於傳統(tǒng)的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機(jī)上運(yùn)作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機(jī)上運(yùn)作而已嗎?那何必啟動網(wǎng)路的 port 呢?當(dāng)然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網(wǎng)路伺服器,由於很多動作都是在本機(jī)上頭來完成的, 所以以會佔(zhàn)用很多的 Unix socket 喔! 例題一:請說明服務(wù)名稱與 port number 的對應(yīng)在 Linux 當(dāng)中,是用那個檔案來設(shè)定對應(yīng)的?
答: |
host
這個指令可以用來查出某個主機(jī)名稱的 IP 喔!舉例來說,我們想要知道 tw.yahoo.com 的 IP 時, 可以這樣做:
[root@linux ~]# host [-a] hostname [server]
參數(shù):
-a :列出該主機(jī)詳細(xì)的各項(xiàng)主機(jī)名稱設(shè)定資料
[server] :可以使用非為 /etc/resolv.conf 的 DNS 主機(jī)來查詢。
範(fàn)例一:列出 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 是向誰查詢的呢?其實(shí)就是寫在 /etc/resolv.conf 那個檔案內(nèi)的 DNS 主機(jī)啦!如果不想要使用該檔案內(nèi)的主機(jī)來查詢,也可以這樣做:
[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
|
會告訴我們所使用來查詢的主機(jī)是哪一部吶!這樣就夠清楚了吧?至於更詳細(xì)的 host 用法,我們會在 DNS 主機(jī) 那個章節(jié)再來好好聊一聊吧!
nslookup
這玩意兒的用途與 host 基本上是一樣的,就是用來作為 IP 與主機(jī)名稱對應(yīng)的檢查, 同樣是使用 /etc/resolv.conf 這個檔案來作為 DNS 伺服器的來源選擇。
[root@linux ~]# nslookup [-query=[type]] [hostname|IP]
參數(shù):
-query=type:查詢的類型,除了傳統(tǒng)的 IP 與主機(jī)名稱對應(yīng)外,DNS 還有很多資訊,
所以我們可以查詢很多不同的資訊,包括 mx, cname 等等,
例如: -query=mx 的查詢方法!
範(fà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
範(fàn)例二:找出 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 差不多吧!不過,這個 nslookup 還可以由 IP 找出主機(jī)名稱喔! 例如那個範(fàn)例二,他的主機(jī)名稱是: dns.hinet.net 哩!目前大家都建議使用 dig 這個指令來取代 nslookup ,我們會在 DNS 伺服器 那時再來好好談一談吧!
遠(yuǎn)端連線指令:
啥是遠(yuǎn)端連線呢?其實(shí)就是在不同的電腦之間進(jìn)行登入的情況啦! 我們可以透過 telnet, ssh 或者是 ftp 等協(xié)定來進(jìn)行遠(yuǎn)端主機(jī)的登入, 底下我們就分別來介紹一下這些基本的指令吧!另外,相關(guān)的伺服器我們則會在後續(xù)進(jìn)行說明的。
telnet
telnet 是早期我們在個人電腦上面要連結(jié)到伺服器主機(jī)上工作時,最重要的一個軟體了! 他不但可以直接連接到伺服器上頭,還可以用來連結(jié) BBS 呢!非常棒! 不過, telnet 本身的資料在傳送的時候是使用明碼 (原始的資料,沒有加密) , 所以資料在 Internet 上面跑的時候,會比較危險(xiǎn)一點(diǎn) (就怕被別人監(jiān)聽啊)。 更詳細(xì)的資料我們會在『 遠(yuǎn)端連線伺服器』章節(jié)內(nèi)做介紹的。
[root@linux ~]# telnet [host|IP] [port]
範(fàn)例一:連結(jié)到成大夢之大地這個 BBS 站
[root@linux ~]# telnet bbs.dorm.
bbs.ccns. ⊙ 夢之大地 逼逼ㄟ四 ⊙ 140.116.250.3 [DreamBBS Ver.040223]
歡迎光臨【 夢之大地 逼逼ㄟ四 】。系統(tǒng)負(fù)載:0.16 0.16 0.16 [負(fù)載正常]
╭─┼────┼─╮ ╭╮ ┌┤夢之大地├─────────┐
╭──┬──┬──╮╭───┴┴──┬╮ │ │
╰──┴──┴──╯ │ │ 夢之大地由 │
╭────────╮ ╭─╯ │ 【電腦網(wǎng)路愛好社?CCNS】 │
╭───┬───╮ ╭──╯ │ 維護(hù)管理 │
│ │ ╭─╯ │ │
╰───┴───╯ ╰┴───────╯ └─────────┤By BenHe├┘
┌┤本站站長群├────────┐ ╭ ╭ ╭ ╮
│站長: billcho │ ╭───┼────╮╭─┼─╭┼──┼╮
│系統(tǒng): cat │ │ │ │ ││
│站務(wù): muwell ianwolf │ ╭╯╮ │ │ ││
│ renn999 GG │ ╭╯ ╰╮ │ │ │╯
│ │ ╭╯ ╰╮ │╭ │
└───────────────┘ ╰╯ ╰─╯╰─┴╯ ╰───╯
參觀用帳號:guest,申請新帳號:new。目前線上人數(shù) [2183/5000] 人。
請輸入代號:
|
如上所示,我們可以透過 telnet 輕易的連結(jié)到 BBS 上面, 而如果您的主機(jī)有開啟 telnet 服務(wù)的話, 同樣的利用『 telnet IP 』並且輸入帳號與密碼之後,就能夠登入主機(jī)了。 另外,在 Linux 上的 telnet 軟體還提供了 Kerberos 的認(rèn)證方式,有興趣的話請自行參閱 man telnet 的說明。 除了連結(jié)到伺服器以及連結(jié)到 BBS 站之外, telnet 還可以用來連結(jié)到某個 port (服務(wù)) 上頭吶! 舉例來說,我們可以用 telnet 連接到 port 110 ,看看這個 port 是否有正確的啟動呢?
範(fàn)例二:偵測本機(jī)端的 110 這個 port 是否正確啟動?
[root@linux ~]# telnet localhost 110
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused # 如果出現(xiàn)這樣的訊息,代表這個 port 沒有啟動或者是這個連線有問題,
# 因?yàn)槟吹侥莻€ 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é)果,我們就能夠知道這個通訊協(xié)定 (port number 提供的通訊協(xié)定功能) 是否有成功的啟動吶! 而在每個 port 所監(jiān)聽的服務(wù)都有其特殊的指令,例如上述的 port 25 就是在本機(jī)介面所提供的電子郵件服務(wù), 那個服務(wù)所支援的指令就如同上面使用的資料一樣,但是其他的 port 就不見得支援這個『 ehlo 』的命令, 因?yàn)椴煌?port 有不同的程式嘛!所以當(dāng)然支援的命令就不同囉! 與 mail server 有關(guān)的 telnet 用法,我們將在郵件伺服器內(nèi)提到喔!
ftp
常常會聽到『FTP』這個咚咚吧!舉例來說,如果你想要下載 Linux 的光碟燒錄映象檔時,要去哪裡下載啊? 不是說要去義守大學(xué)嗎?也可以到成大或崑山科大等等的 FTP 網(wǎng)站,嘿嘿!沒錯~那就是 FTP 提供者啦! 那我們要如何去下載呢?當(dāng)然就是透過 ftp 的用戶端軟體了。在 Linux 底下,我們可以透過 ftp 這個軟體, 也可以透過下一小節(jié)會提到的 lftp 說~
[root@linux ~]# ftp [-p] [host|IP] [port]
參數(shù):
-p :啟動被動式模式 (passive, PASV);
範(fàn)例一:連線到義守大學(xué)去看看
[root@linux ~]# ftp ftp.isu.edu.tw
Connected to ftp.isu.edu.tw (140.127.177.17).
220-歡迎光臨義守大學(xué)檔案伺服器
220-
220-本站提供以下軟體可供下載:
220-*******************************************************************************
220-/pub/BeOS/ BeOS 作業(yè)系統(tǒng)
220-/pub/Linux/ Linux 作業(yè)系統(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 <==提供更多的可用指令,可以常參考!
ftp> cd /pub <==變換目錄到 /pub 當(dāng)中
ftp> dir <==顯示遠(yuǎn)端主機(jī)的目錄內(nèi)容
ftp> get file <==下載 file 這個檔案
ftp> mget file <==下載 file 這個目錄或檔案
ftp> put file <==上傳 file 這個檔案到伺服器上
ftp> delete file <==刪除主機(jī)上的 file 這個檔案
ftp> mkdir dir <==建立 dir 這個目錄
ftp> lcd /home <==切換『本地端主機(jī)』的工作目錄
ftp> passive <==啟動或關(guān)閉 passive 模式
ftp> binary <==資料傳輸模式設(shè)定為 binary 格式
|
FTP 其實(shí)算是一個很麻煩的協(xié)定,因?yàn)樗褂脙蓚€ port 分別進(jìn)行命令與資料的交流, 詳細(xì)的資料我們會在後續(xù)的 FTP 伺服器內(nèi)詳談,這裡我們先單純的介紹一下如何使用 ftp 這個軟體。 首先我們當(dāng)然是需要登入囉,所以在上頭的表格當(dāng)中我們當(dāng)然需要填入帳號與密碼了。 不過由於義守大學(xué)提供匿名登入,而匿名登入者的帳號就是『 anonymous 』所以直接填寫那個帳號即可。 如果是私人的 FTP 時,才需要提供一組完整的帳號與密碼啦! 登入 FTP 主機(jī)後,就能夠使用 ftp 軟體的功能進(jìn)行上傳與下載的動作, 幾個常用的 ftp 內(nèi)指令如上表,不過,鳥哥建議您可以連到大學(xué)的 FTP 網(wǎng)站後, 使用 help (或問號 ?) 來參考可用的指令,然後嘗試下載以測試使用一下這個指令吧! 這樣以後沒有瀏覽器的時候,你也可以到 ftp 下載了呢!不錯吧! ^_^ 另外,如果由於某些理由,讓你的 FTP 主機(jī)的 port 開在非正規(guī)的埠口時, 那你就可以利用底下的方式來連接到該部主機(jī)喔!
[root@linux ~]# ftp hostname 318
# 假設(shè)對方主機(jī)的 ftp 服務(wù)開啟在 318 這個 port 啊!
|
lftp
早期當(dāng)我們要登入提供匿名登入的主機(jī)時,很多時候都是使用 ncftp 這個軟體, 不過,現(xiàn)在有更棒的選擇,那就是 lftp 啦!這個軟體甚至可以在 ftp 裡面使用類似 bash 的指令功能, 實(shí)在是非常的完美!而整個使用的方法與上面提到的 ftp 又非常類似吶!
[root@linux ~]# lftp [-p port] [-u user[,pass]] [host|IP]
參數(shù):
-p :後面可以直接接上遠(yuǎn)端 FTP 主機(jī)提供的 port
-u :後面則是接上 帳號與密碼 ,就能夠連接上遠(yuǎn)端主機(jī)了
如果沒有加帳號密碼, lftp 預(yù)設(shè)會使用 anonymous 嘗試匿名登入
範(fàn)例一:利用 lftp 登入義守大學(xué)
[root@linux ~]# lftp ftp.isu.edu.tw
lftp ftp.isu.edu.tw:~>
# 瞧!一下子就登入了!很快樂吧! ^_^
|
至於登入 FTP 主機(jī)後,一樣可以使用『help』來顯示出可以執(zhí)行的指令, 與 ftp 很類似啦!不過多了書籤的功能,而且也非常的類似 bash 那!很不錯呦! 除了這個好用的文字介面的 FTP 軟體之外,事實(shí)上還有很多圖形介面的好用軟體呢! 最常見的就是 gftp 了~不但是圖形介面,而且與 cute ftp 簡直就是像到不行!非常的容易上手喔! CentOS 本身就有提供 gftp 了,你可以拿出原版的光碟來安裝,然後進(jìn)入 X Window 後, 啟動一個 shell ,輸入『 gftp 』就能夠發(fā)現(xiàn)他的好用啦!底下我們在來介紹一下即時通訊吧!
gaim
我想,現(xiàn)在應(yīng)該大家都知道什麼是 MSN, 雅虎即時通以及其他的通訊軟體吧? 那麼要連上這些伺服器時,該怎麼處理哪?很簡單,在 X Window 底下使用 gaim 就好了! 簡直簡單到不行~ ^_^ 請先進(jìn)入 X Window 系統(tǒng),然後開啟一個終端機(jī)視窗,接著直接輸入 gaim (請注意您必須已經(jīng)安裝了 gaim 了) 然後就會出現(xiàn)如下的視窗啦:
 圖一、gaim 使用範(fàn)例圖在輸入你的帳號與密碼,並選擇相對應(yīng)的即時通訊伺服器 (如 MSN 或 Yahoo 即時通) ,就可以進(jìn)入到如下畫面:
 圖二、gaim 使用範(fàn)例圖若一切都沒有問題後,按下『登入』嘿嘿~您就可以在 Linux 上頭使用即時通訊軟體啦!方便的很哩! ^_^
文字介面網(wǎng)頁瀏覽
什麼?文字界面竟然有瀏覽器!別逗了好不好?呵呵!誰有那個時間在逗您呦!真的啦!有這個東西, 是在文字界面下上網(wǎng)瀏覽的好工具!分別是 lynx 及 wget 這兩個寶貝蛋,但是,您必需要確定您已經(jīng)安裝了這兩個套件才行。 底下就讓我們來聊一聊這兩個好用的傢伙吧!
lynx
這個指令可以讓我們來瀏覽網(wǎng)頁,但鳥哥認(rèn)為,這個檔案最大的功能是在『 查閱 Linux 本機(jī)上面以 HTML 語法寫成的文件資料 (document)』 怎麼說呢?如果你曾經(jīng)到 Linux 本機(jī)底下的 /usr/share/doc 這個目錄看過文件資料的話, 就會常常發(fā)現(xiàn)一些網(wǎng)頁檔案,使用 vi 去查閱時,老是看到一堆 HTML 的語法!有礙閱讀啊~ 這時候使用 lynx 就是個好方法啦!可以看的清清楚楚??! ^_^
[root@linux ~]# lynx [options] [website]
參數(shù):
options 指的是一些慣用的參數(shù),可以使用 man lynx 查閱,常見的有:
-anonymous :預(yù)設(shè)使用匿名登入;
-assume_charset=big5 :設(shè)定預(yù)設(shè)的語系資料為 big5 ,用在中文網(wǎng)頁很方便
範(fàn)例一:瀏覽 Linux kernel 網(wǎng)站
[root@linux ~]# LANG=zh_TW.big5
[root@linux ~]# lynx http://www.
|
輸入 LANG=zh_TW.big5 是當(dāng)您想要瀏覽中文網(wǎng)站時,那麼終端機(jī)就得要有相對應(yīng)的顯示編碼才行, 否則會有一堆亂碼產(chǎn)生啊!當(dāng)我直接輸入 lynx 網(wǎng)站網(wǎng)址後,就會出現(xiàn)如下的圖示:  圖三、lynx 使用範(fàn)例圖 在特殊字體的部分是我們可以使用 <tab> 按鍵來進(jìn)行『超連結(jié)』的按鈕啦~而上圖最底下一行則顯示出一些熱鍵, 你可以按上述的熱鍵來參考一些常見的指令功能。不過有些地方您還是得要知道才行:
進(jìn)入畫面之後,由於是文字型態(tài),所以編排可能會有點(diǎn)位移!不過不打緊!不會影響我們看咚咚! 這個時候可以使用『上下鍵』來讓游標(biāo)在上面的選項(xiàng)當(dāng)中(如信箱、書籤等等的),按下 Enter 就進(jìn)入該頁面 可以使用『左右鍵』來移動『上一頁或下一頁』 可以藉由修改 /etc/lynx.cfg 來設(shè)定顯示的字元編碼 (臺灣地區(qū)可以選擇 Big5 編碼) 其他的設(shè)定可以使用上面的範(fàn)例當(dāng)中,最底下那一行的說明喔! 一些常見功能: 上 :移動游標(biāo)至本頁中 "上一個可連結(jié)點(diǎn)" . 下 :移動游標(biāo)至本頁中 "下一個可連結(jié)點(diǎn)" . 左 :back. 跳回上一頁. 右 :進(jìn)入反白游標(biāo)所連結(jié)之網(wǎng)頁. ENTER 同 "右" 鍵.
至於如果是瀏覽 Linux 本機(jī)上面的網(wǎng)頁檔案,那就可以使用如下的方式:
[root@linux ~]# cd /usr/share/doc/samba-3.0.10/htmldocs
[root@linux htmldocs]# lynx index.html
|
在鳥哥的 CentOS 4.3 當(dāng)中,有這麼一個檔案,我就可以利用 lynx 來取出察看吶! 顯示的結(jié)果有點(diǎn)像底下這樣:  圖四、lynx 使用範(fàn)例圖 當(dāng)然啦!因?yàn)槟沫h(huán)境可能是在 Linux 本機(jī)的 tty1~tty6 ,所以無法顯示出中文, 這個時候你就得要設(shè)定為:『LANG=en_US』之類的語系設(shè)定才行喔! 而如果你常常需要瀏覽中文語系的網(wǎng)頁,那就可以直接修改設(shè)定檔,例如 /etc/lynx.cfg 這個檔案內(nèi):
[root@linux ~]# vi /etc/lynx.cfg
CHARACTER_SET:utf-8 <==約在 399 行
#ASSUME_CHARSET:iso-8859-1 <==約在 414 行
#PREFERRED_LANGUAGE:en <==約在 542 行
# 你可以將他改成如下所示:
CHARACTER_SET:big5
ASSUME_CHARSET:big5
PREFERRED_LANGUAGE:zh_TW
|
另外,如果某些時刻你必須上網(wǎng)點(diǎn)選某個網(wǎng)站以自動取得更新時,舉例來說,早期的自動線上更新主機(jī)名稱系統(tǒng), 僅支援網(wǎng)頁更新,那你如何進(jìn)行更新呢?嘿嘿!可以使用 lynx 喔!利用 -dump 這個參數(shù)處理先:
[root@linux ~]# lynx -dump > http://some./web.php?name=user&password=pw > testfile
|
上面的網(wǎng)站後面有加個問號 (?) 對吧?後面接的則是利用網(wǎng)頁的『 GET 』功能取得的各項(xiàng)變數(shù)資料, 利用這個功能,我們就可以直接點(diǎn)選到該網(wǎng)站上囉!非常的方便吧!而且會將執(zhí)行的結(jié)果輸出到 testfile 檔案中,不過如果網(wǎng)站提供的資料是以『 POST 』為主的話,那鳥哥就不知道如何搞定了。 關(guān)於 GET 與 POST 的相關(guān)資訊我們會在 WWW 伺服器當(dāng)中再次的提及的!別緊張?。?br>
wget
如果說 lynx 是在進(jìn)行網(wǎng)頁的『瀏覽』,那麼 wget 就是在進(jìn)行『網(wǎng)頁資料的取得』。 舉例來說,我們的 Linux 核心是放置在 www.kernel.ort 內(nèi),主要同時提供 ftp 與 http 來下載。 我們知道可以使用 lftp 來下載資料,但如果想要用瀏覽器來下載呢? 那就利用 wget 吧!
[root@linux ~]# wget [option] [網(wǎng)址]
參數(shù):
若想要連線的網(wǎng)站有提供帳號與密碼的保護(hù)時,可以利用這兩個參數(shù)來輸入喔!
--http-user=usrname
--http-password=password
--quiet :不要顯示 wget 在抓取資料時候的顯示訊息
更多的參數(shù)請自行參考 man wget 吧! ^_^
範(fàn)例一:請下載 2.6.17 版的核心
[root@linux ~]# wget > http://www./pub/linux/kernel/v2.6/linux-2.6.17.tar.gz
--16:06:10-- http://www./pub/linux/kernel/v2.6/linux-2.6.17.tar.gz
=> `linux-2.6.17.tar.gz‘
Resolving www.... 204.152.191.37, 204.152.191.5
Connecting to www.|204.152.191.37|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 51,700,445 (49M) [application/x-gzip]
3% [==> ] 1,890,568 220.69K/s ETA 04:12
|
您瞧瞧~很可愛吧!不必透過瀏覽器,只要知道網(wǎng)址後,立即可以進(jìn)行檔案的下載, 又快速又方便,還可以透過 proxy 的幫助來下載呢!透過修改 /etc/wgetrc 來設(shè)定你的代理伺服器:
[root@linux ~]# vi /etc/wgetrc
#http_proxy = http://proxy.:18023/ <==找到底下這幾行,大約在 78 行後;
#ftp_proxy = http://proxy.:18023/
#use_proxy = on # 將他改成類似底下的模樣,記得,你必須要有可接受的 proxy 主機(jī)才行!
http_proxy = http://proxy.:3128/
use_proxy = no
|
封包擷取功能
很多時候由於我們的網(wǎng)路連線出現(xiàn)問題,使用類似 ping 的軟體功能卻又無法找出問題點(diǎn), 最常見的是因?yàn)槁酚膳c IP 轉(zhuǎn)遞後所產(chǎn)生的一些困擾 (請參考防火牆與 NAT 主機(jī)部分), 這個時候要怎麼辦?最簡單的方法就是『 分析封包的流向』囉! 透過分析封包的流向,我們可以瞭解一條連線應(yīng)該是如何進(jìn)行雙向的連線的動作, 也就會清楚的瞭解到可能發(fā)生的問題所在了!底下我們就來談一談這個 tcpdump 與圖形介面的封包分析軟體吧!
tcpdump
說實(shí)在的,對於 tcpdump 這個軟體來說,你甚至可以說這個軟體其實(shí)就是個駭客軟體, 因?yàn)樗坏梢苑治龇獍牧飨?,連封包的內(nèi)容也可以進(jìn)行『監(jiān)聽』, 如果你使用的傳輸資料是明碼的話,不得了,在 router 上面就可能被人家監(jiān)聽走了! 很可怕吶!所以,我們也要來瞭解一下這個軟體?。?註:這個 tcpdump 必須使用 root 的身份執(zhí)行)
[root@linux ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數(shù)] [-Ae]
[-qX] [-r 檔案] [所欲擷取的資料內(nèi)容]
參數(shù):
-nn:直接以 IP 及 port number 顯示,而非主機(jī)名與服務(wù)名稱
-i :後面接要『監(jiān)聽』的網(wǎng)路介面,例如 eth0, lo, ppp0 等等的介面;
-w :如果你要將監(jiān)聽所得的封包資料儲存下來,用這個參數(shù)就對了!後面接檔名
-c :監(jiān)聽的封包數(shù),如果沒有這個參數(shù), tcpdump 會持續(xù)不斷的監(jiān)聽,
直到使用者輸入 [ctrl]-c 為止。
-A :封包的內(nèi)容以 ASCII 顯示,通常用來捉取 WWW 的網(wǎng)頁封包資料。
-e :使用資料連接層 (OSI 第二層) 的 MAC 封包資料來顯示;
-q :僅列出較為簡短的封包資訊,每一行的內(nèi)容比較精簡
-X :可以列出十六進(jìn)位 (hex) 以及 ASCII 的封包內(nèi)容,對於監(jiān)聽封包內(nèi)容很有用
-r :從後面接的檔案將封包資料讀出來。那個『檔案』是已經(jīng)存在的檔案,
並且這個『檔案』是由 -w 所製作出來的。
所欲擷取的資料內(nèi)容:我們可以專門針對某些通訊協(xié)定或者是 IP 來源進(jìn)行封包擷取,
那就可以簡化輸出的結(jié)果,並取得最有用的資訊。常見的表示方法有:
‘host foo‘, ‘host 127.0.0.1‘ :針對單部主機(jī)來進(jìn)行封包擷取
‘net 192.168‘ :針對某個網(wǎng)域來進(jìn)行封包的擷取;
‘src host 127.0.0.1‘ ‘dst net 192.168‘:同時加上來源(src)或目標(biāo)(dst)限制
‘tcp port 21‘:還可以針對通訊協(xié)定偵測,如 tcp, udp, arp, ether 等
還可以利用 and 與 or 來進(jìn)行封包資料的整合顯示呢!
範(fàn)例一:以 IP 與 port number 捉下 eth0 這個網(wǎng)路卡上的封包,持續(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 <==按下 [ctrl]-c 之後結(jié)束
6680 packets captured <==捉下來的封包數(shù)量
14250 packets received by filter <==由過濾所得的總封包數(shù)量
7512 packets dropped by kernel <==被核心所丟棄的封包
|
如果你是第一次看 tcpdump 的 man page 時,肯定一個頭兩個大,因?yàn)?tcpdump 幾乎都是分析封包的表頭資料,使用者如果沒有簡易的網(wǎng)路封包基礎(chǔ),要看懂粉難吶! 所以,至少您得要回到 網(wǎng)路基礎(chǔ)裡面去將 TCP 封包的表頭資料理解理解才好啊! ^_^!至於那個範(fàn)例一所產(chǎn)生的輸出範(fàn)例中,我們可以約略區(qū)分為數(shù)個欄位, 我們以範(fàn)例一當(dāng)中那個特殊字體行來說明一下:
01:33:40.41:這個是此封包被擷取的時間,『時:分:秒』的單位; IP:透過的通訊協(xié)定是 IP ; 192.168.1.100.22 > :傳送端是 192.168.1.100 這個 IP,而傳送的 port number 為 22,您必須要瞭解的是,那個大於 (>) 的符號指的是封包的傳輸方向喔! 192.168.1.11.1190:接收端的 IP 是 192.168.1.11, 且該主機(jī)開啟 port 1190 來接收; P 116:232(116):這個封包帶有 PUSH 的資料傳輸標(biāo)誌, 且傳輸?shù)馁Y料為整體資料的 116~232 byte,所以這個封包帶有 116 bytes 的資料量; ack 1 win 9648:ACK與 Window size 的相關(guān)資料。
最簡單的說法,就是該封包是由 192.168.1.100 傳到 192.168.1.11,透過的 port 是由 22 到 1190 , 且?guī)в?116 bytes 的資料量,使用的是 PUSH 的旗標(biāo),而不是 SYN 之類的主動連線標(biāo)誌。 呵呵!不容易看的懂吧!所以說,上頭才講請務(wù)必到 TCP 表頭資料的部分去瞧一瞧的?。?br> 再來,一個網(wǎng)路狀態(tài)很忙的主機(jī)上面,你想要取得某部主機(jī)對你連線的封包資料而已時, 使用 tcpdump 配合管線命令與正規(guī)表示法也可以,不過,畢竟不好捉取! 我們可以透過 tcpdump 的表示法功能,就能夠輕易的將所需要的資料獨(dú)立的取出來。 在上面的範(fàn)例一當(dāng)中,我們僅針對 eth0 做監(jiān)聽,所以整個 eth0 介面上面的資料都會被顯示到螢?zāi)簧希?不好分析??!那麼我們可以簡化嗎?例如只取出 port 21 的連線封包,可以這樣做:
[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ì)看的話,你會發(fā)現(xiàn)封包的傳遞都是雙向的, client 端發(fā)出『要求』而 server 端則予以『回應(yīng)』,所以,當(dāng)然是有去有回?。?而我們也就可以經(jīng)過這個封包的流向來瞭解到封包運(yùn)作的過程。 舉例來說: 我們先在一個終端機(jī)視窗輸入『 tcpdump -i lo -nn 』 的監(jiān)聽, 再另開一個終端機(jī)視窗來對本機(jī) (127.0.0.1) 登入『ssh localhost』
那麼輸出的結(jié)果會是如何?
[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 <mss 16396,sackOK,timestamp 236681316 0,nop,wscale 2> 4 11:02:54.253831 IP 127.0.0.1.22 > 127.0.0.1.32936: S 920046702:920046702(0) ack 933696133 win 32767 <mss 16396,sackOK,timestamp 236681316 236681316,nop,
wscale 2> 5 11:02:54.253871 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 1 win 8192 <nop,
nop,timestamp 236681316 236681316> 6 11:02:54.272124 IP 127.0.0.1.22 > 127.0.0.1.32936: P 1:23(22) ack 1 win 8192
<nop,nop,timestamp 236681334 236681316> 7 11:02:54.272375 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 23 win 8192 <nop,
nop,timestamp 236681334 236681334>
|
上表顯示的頭兩行是 tcpdump 的基本說明,然後: 第 3 行顯示的是『來自 client 端,帶有 SYN 主動連線的封包』, 第 4 行顯示的是『來自 server 端,除了回應(yīng) client 端之外(ACK),還帶有 SYN 主動連線的標(biāo)誌; 第 5 行則顯示 client 端回應(yīng) server 確定連線建立 (ACK) 第 6 行以後則開始進(jìn)入資料傳輸?shù)牟襟E。
從第 3-5 行的流程來看,熟不熟悉???沒錯!那就是 三向交握 的基礎(chǔ)流程啦!夠有趣吧! 不過 tcpdump 之所以被稱為駭客軟體之一可不止上頭介紹的功能吶! 上面介紹的功能可以用來作為我們主機(jī)的封包連線與傳輸?shù)牧鞒谭治觯?這將有助於我們瞭解到封包的運(yùn)作,同時瞭解到主機(jī)的防火牆設(shè)定規(guī)則是否有需要修訂的地方。 更神奇的使用要來啦!如果我們使用 tcpdump 在 router 上面監(jiān)聽『明碼』的傳輸資料時, 例如 FTP 傳輸協(xié)定,你覺得會發(fā)生什麼問題呢? 我們先在主機(jī)端下達(dá)『 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 .....<.........g
0x0030: 0e2e 0b61 3232 3020 2876 7346 5450 6420 ...a220.(vsFTPd.
0x0040: 322e 302e 3129 0d0a 2.0.1)..
0x0000: 4510 0041 d34b 4000 4006 6959 7f00 0001 E..A.K@.@.iY....
0x0010: 7f00 0001 80ab 0015 835c d825 8355 215d .........\.%.U!]
0x0020: 8018 2000 fe35 0000 0101 080a 0e2e 1b37 .....5.........7
0x0030: 0e2e 0b67 5553 4552 2064 6d74 7361 690d ...gUSER.dmtsai.
0x0040: 0a .
0x0000: 4510 004a d34f 4000 4006 694c 7f00 0001 E..J.O@.@.iL....
0x0010: 7f00 0001 80ab 0015 835c d832 8355 217f .........\.2.U!.
0x0020: 8018 2000 fe3e 0000 0101 080a 0e2e 3227 .....>........2‘
0x0030: 0e2e 1b38 5041 5353 206d 7970 6173 7377 ...8PASS.mypassw
0x0040: 6f72 6469 7379 6f75 0d0a ordisyou..
|
上面的輸出結(jié)果已經(jīng)被簡化過了,你必須要自行在你的輸出結(jié)果當(dāng)中搜尋相關(guān)的字串才行。 從上面輸出結(jié)果的特殊字體中,我們可以發(fā)現(xiàn)『 該 FTP 軟體使用的是 vsftpd ,並且使用者輸入 dmtsai 這個帳號名稱,且密碼是 mypasswordisyou』 嘿嘿!你說可不可怕啊!如果使用的是明碼的方式來傳輸你的網(wǎng)路資料? 所以我們才常常在講啊,網(wǎng)路是很不安全低! 另外你得瞭解,為了讓網(wǎng)路介面可以讓 tcpdump 監(jiān)聽,所以執(zhí)行 tcpdump 時網(wǎng)路介面會啟動在 『錯亂模式 (promiscuous)』,所以你會在 /var/log/messages 裡面看到很多的警告訊息, 通知你說你的網(wǎng)路卡被設(shè)定成為錯亂模式!別擔(dān)心,那是正常的。 至於更多的應(yīng)用,請參考 man tcpdump 囉!
例題:如何使用 tcpdump 監(jiān)聽 (1)來自 eth0 介面卡且 (2)通訊協(xié)定為 port 22 ,(3)目標(biāo)來源為 192.168.1.100 的封包資料?
答: |
ethereal
除了 tcpdump 這個軟體之外,其實(shí)你還可以使用 ethereal 這個好用的網(wǎng)路流量分析軟體吶! ethereal 分為文字介面與圖形介面,文字介面的用法與 tcpdump 相當(dāng)?shù)念愃?,不過他的指令名稱為 tethereal 就是了。因?yàn)橛梅ú畈欢?,所以建議您直接使用 man tethereal 查閱吧! 在 CentOS 上原本就有 ethereal 了,所以請拿出光碟來安裝即可喔! 需要安裝 ethereal 與 ethereal-gnome 才行吶! 啟動的方法很簡單,你必須要在 X Window 底下,先開啟一個終端機(jī),然後直接輸入 ethereal 後, 就會出現(xiàn)如下的畫面了:
 圖五、ethereal 使用範(fàn)例圖簡單的作法,你可以點(diǎn)選如上圖顯示的那個按鈕,會出現(xiàn)挑選監(jiān)聽的介面視窗,如下所示:
 圖六、ethereal 使用範(fàn)例圖你應(yīng)該選擇要監(jiān)聽的介面,在這裡因?yàn)槭菧y試用的,所以鳥哥使用的是 lo 這個內(nèi)部介面, 你當(dāng)然應(yīng)該要選擇你自己的網(wǎng)路介面才是。然後按下 start 後,就會出現(xiàn)開始偵測的畫面了:
 圖七、ethereal 使用範(fàn)例圖在這個畫面當(dāng)中你可以看到很多類型的封包協(xié)定,在等你處理完畢後,就可以按下『stop』結(jié)束監(jiān)聽, 而開始進(jìn)入如下的封包分析畫面。
 圖八、ethereal 使用範(fàn)例圖封包分析畫面共分為三大區(qū)塊,如上圖所示,第一區(qū)塊主要顯示的是封包的標(biāo)頭資料, 內(nèi)容就有點(diǎn)類似 tcpdump 的顯示結(jié)果,第二區(qū)塊則是詳細(xì)的表頭資料, 包括訊框的內(nèi)容、通訊協(xié)定的內(nèi)容以及 socket pair 等等資訊。 第三區(qū)塊則是 16 進(jìn)位與 ASCII 碼的顯示結(jié)果。透過這個 ethereal 您就可以一口氣得到所需要的所有封包內(nèi)容啦! 而且還是圖形介面的,很方便吧!透過在第一區(qū)塊選擇不同的封包,就能夠查閱每個封包的資料內(nèi)容囉!
nc, netcat
這個 nc 可以用來作為某些服務(wù)的檢測,因?yàn)樗梢赃B接到某個 port 來進(jìn)行溝通, 此外,還可以自行啟動一個 port 來傾聽其他用戶的連線吶!非常的不錯用! 如果在編譯的時候給予『GAPING_SECURITY_HOLE』參數(shù)的話,嘿嘿! 這個軟體還可以用來取得用戶端的 bash 哩!可怕吧!我們的 CentOS 比較人性化,並沒有給予上面的參數(shù),所以我們不能夠用來作為駭客軟體~ 但是用來取代 telnet 也是個很棒的功能了!(有的系統(tǒng)將執(zhí)行檔改名為 netcat 啦!)
[root@linux ~]# nc [IP|host] [port]
[root@linux ~]# nc -l -p [port]
參數(shù):
-l :作為監(jiān)聽之用,亦即開啟一個 port 來監(jiān)聽用戶的連線;
-p :開啟的這個 port number
範(fàn)例一:連接本地端的 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
|
這個最簡單的功能與 telnet 幾乎一樣吧!可以去檢查某個服務(wù)啦!不過,更神奇的在後面, 我們可以建立兩個連線來傳訊喔!舉個例子來說,我們先在 client 端的地方啟動一個 port 來進(jìn)行傾聽:
範(fàn)例二:啟動一個 port 來監(jiān)聽使用者的連線要求
[root@linux ~]# nc -l -p 20000
# 啟動一個 port 20000 在主機(jī)上,如果此時使用 netstat -tlnp
# 就可以看到系統(tǒng)上多出來一個 port 20000 在傾聽使用者的連線喔!
|
然後在主機(jī)端的地方,也利用 nc 來連線到用戶端,並且輸入一些指令看看喔!
[root@linux ~]# nc localhost 20000
<==這裡可以開始輸入字串了!
|
此時,在主機(jī)端我們可以打入一些字,你會發(fā)現(xiàn)在 client 端會同時出現(xiàn)你輸入的字眼吶! 如果你同時給予一些額外的參數(shù),例如利用標(biāo)準(zhǔn)輸入與輸出 (stdout, stdin) 的話, 那麼就可以透過這個連線來作很多事情了! 當(dāng)然 nc 的功能不只如此,你還可以發(fā)現(xiàn)很多的用途喔! 請自行到您主機(jī)內(nèi)的 /usr/share/doc/nc-1.10/scripts 目錄下看看這些 script ,有幫助的吶! 不過,如果你需要額外的編譯出含有 GAPING_SECURITY_HOLE 功能, 以使兩端連線可以進(jìn)行額外指令的執(zhí)行時,就得要自行下載原始碼來編譯了!
重點(diǎn)回顧
修改網(wǎng)路介面的硬體相關(guān)參數(shù),可以使用 ifconfig 這個指令,包括 MTU 等等; ifup 與 ifdown 其實(shí)只是 script ,在使用時,會主動去 /etc/sysconfig/network-scripts 下找到相對應(yīng)的裝置設(shè)定檔,才能夠正確的啟動與關(guān)閉; 路由的修改與查閱可以使用 route 來查詢,此外, route 亦可進(jìn)行新增、刪除路由的工作; ip 指令可以用來作為整個網(wǎng)路環(huán)境的設(shè)定,利用 ip link 可以修改『網(wǎng)路裝置的硬體相關(guān)功能』, 包括 MTU 與 MAC 等等,可以使用 ip address 修改 TCP/IP 方面的參數(shù),包括 IP 以及網(wǎng)域參數(shù)等等, ip route 則可以修改路由! ping 主要是透過 ICMP 封包來進(jìn)行網(wǎng)路環(huán)境的檢測工作,並且可以使用 ping 來查詢整體網(wǎng)域可接受最大的 MTU 值; 偵察每個節(jié)點(diǎn)的連線狀況,可以使用 traceroute 這個指令來追蹤! netstat 除了可以觀察本機(jī)的啟動介面外,還可以觀察 Unix socket 的傳統(tǒng)插槽介面資料; host 與 nslookup 預(yù)設(shè)都是透過 /etc/resolv.conf 內(nèi)設(shè)定的 DNS 主機(jī)來進(jìn)行主機(jī)名稱與 IP 的查詢; lftp 可以用來匿名登入遠(yuǎn)端的 FTP 主機(jī); telnet 不只用來進(jìn)行 BBS 的登入,也可以用來作為某些埠口的連線測試; lynx 主要的功能是『瀏覽』,包括本機(jī)上 HTML 語法的檔案, wget 則主要在用來下載 WWW 的資料; 擷取封包以分析封包的流向,可使用 tcpdump ,至於圖形介面的 ethereal 則可以進(jìn)行更為詳細(xì)的解析。 透過 tcpdump 分析三向交握,以及分析明碼傳輸?shù)馁Y料,可發(fā)現(xiàn)網(wǎng)路加密的重要性。 nc 可用來取代 telnet 進(jìn)行某些服務(wù)埠口的檢測工作,同時若自行編譯 nc 時,可額外的執(zhí)行 -e 參數(shù)。
課後練習(xí)
暫時將你的 eth0 這張網(wǎng)路卡的 IP 設(shè)定為 192.168.1.100 ,如何進(jìn)行? ifconfig eth0 192.168.1.100 我要增加一個路由規(guī)則,以 eth0 連接 192.168.100.100/24 這個網(wǎng)域,應(yīng)該如何下達(dá)指令? route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0 我的網(wǎng)路停頓的很厲害,尤其是連接到 tw.yahoo.com 的時候,那麼我應(yīng)該如何檢查那個環(huán)節(jié)出了問題? traceroute tw.yahoo.com 我發(fā)現(xiàn)我的 Linux 主機(jī)上面有個連線很怪異,想要將他斷線,應(yīng)該如何進(jìn)行? 以 root 的身份進(jìn)行『netstat -anp |more』查出該連線的 PID,然後以『 kill -9 PID 』踢掉該連線。 您如何知道 green.ev. 這部主機(jī)的 IP ? 方法很多,可以利用 host green.ev. 或 dig green.ev. 或 nslookup green.ev. 等方法找出 請找出您的機(jī)器上面最適當(dāng)?shù)?MTU 應(yīng)該是多少? 請利用『ping -c 3 -M do -s MTU yourIP 』找出您的 IP 的 MTU 數(shù)值。 事實(shí)上,你還可以先以 ip 設(shè)定網(wǎng)路卡較大的 MTU 後,在進(jìn)行上述的動作,才能夠找出網(wǎng)域內(nèi)適合的 MTU。 如何在終端機(jī)介面上面進(jìn)行 WWW 瀏覽?又該如何下載 WWW 上面提供的檔案? 要瀏覽可以使用 lynx ,至於要下載則使用 wget 這個軟體。 在終端機(jī)介面中,如何連接 bbs.sayya.org 這個 BBS ? 利用 telnet bbs.sayya.org 即可連接上 請自行以 tcpdump 觀察本機(jī)端的 ssh 連線時,三向交握的內(nèi)容 請自行回答:為何使用明碼傳輸?shù)木W(wǎng)路連線資料較為危險(xiǎn)?並自行以軟體將封包取出,並與同學(xué)討論封包的資訊 請自行至 Internet 下載 nc(netcat) 的原始碼,並且編譯成為具有 GAPING_SECURITY_HOLE 的參數(shù), 然後建立一條連線使用 -e /bin/bash 嘗試將本地端的 bash 丟給目的端執(zhí)行 (特殊功能,可讓 client 取得來自主機(jī)的 bash)。
|