Linux 的網(wǎng)路功能相當(dāng)?shù)膹?qiáng)悍,一時(shí)之間我們也無(wú)法完全的介紹所有的網(wǎng)路指令, 這個(gè)章節(jié)主要的目的在介紹一些常見(jiàn)的網(wǎng)路指令而已。至於每個(gè)指令的詳細(xì)用途將在後續(xù)伺服器架設(shè)時(shí), 依照指令的相關(guān)性來(lái)進(jìn)行說(shuō)明。當(dāng)然,在這個(gè)章節(jié)的主要目的是在於將所有的指令彙整在一起,比較容易瞭解啦! 還有,這一章鳥(niǎo)哥新增了一些封包擷取的指令,若不熟悉沒(méi)關(guān)係,先放著,全部讀完後再回來(lái)這一章仔細(xì)練習(xí)??! |
ifconfig:查詢(xún)、設(shè)定網(wǎng)路卡與 IP 網(wǎng)域等相關(guān)參數(shù);
ifup, ifdown:這兩個(gè)檔案是 script ,透過(guò)更簡(jiǎn)單的方式來(lái)啟動(dòng)網(wǎng)路介面;
route:查詢(xún)、設(shè)定路由表 (route table)
ip:複合式的指令,可以直接修改上述提到的功能;
ifconfig
[root@linux ~]# ifconfig {interface} {up|down} <== 觀察與啟動(dòng)介面 [root@linux ~]# ifconfig interface {options} <== 設(shè)定與修改介面 參數(shù): interface:網(wǎng)路卡介面代號(hào),包括 eth0, eth1, ppp0 等等 options :可以接的參數(shù),包括如下: up, down :?jiǎn)?dòng) (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 |
範(fàn)例二:暫時(shí)修改網(wǎng)路介面 [root@linux ~]# ifconfig eth0 192.168.100.100 # 如果不加任何其他參數(shù),則系統(tǒng)會(huì)依照該 IP 所在的 class 範(fàn)圍, # 自動(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)路介面,同時(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)路介面上,再模擬一個(gè)網(wǎng)路介面, # 亦即是在一張網(wǎng)路卡上面設(shè)定多個(gè) IP 的意思啦! [root@linux ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2 inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3669 errors:0 dropped:0 overruns:0 frame:0 TX packets:2892 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:667547 (651.9 KiB) TX bytes:584799 (571.0 KiB) Interrupt:209 Memory:fb000000-0 eth0:0 Link encap:Ethernet HWaddr 00:0F:EA:A3:06:A2 inet addr:192.168.200.2 Bcast:192.168.200.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:209 Memory:fb000000-0 # 仔細(xì)看,是否與硬體有關(guān)的資訊都相同?。](méi)錯(cuò)!因?yàn)槭峭粡埦W(wǎng)卡嘛! [root@linux ~]# ifconfig eth0:0 down # 關(guān)掉 eth0:0 這個(gè)介面。如果想要啟動(dòng) eth1 ,並且不給予任何網(wǎng)路參數(shù), # ifconfig eth1 up 就可以達(dá)到了! [root@linux ~]# /etc/init.d/network restart # 剛剛設(shè)定的資料全部失效,會(huì)以 ifcfg-ethx 的設(shè)定為主! |
eth0:就是網(wǎng)路卡的代號(hào),也有 lo 這個(gè) loopback ;
HWaddr:就是網(wǎng)路卡的硬體位址,俗稱(chēng)的 MAC 是也;
inet addr:IPv4 的 IP 位址,後續(xù)的 Bcase, Mask 分別代表的是 Broadcast 與 netmask 喔!
inet6 addr:是 IPv6 的版本的 IP ,我們沒(méi)有使用,所以略過(guò);
MTU:就是 MTU ?。?/p>
RX:那一行代表的是網(wǎng)路由啟動(dòng)到目前為止的封包接收情況, packets 代表封包數(shù)、errors 代表封包發(fā)生錯(cuò)誤的數(shù)量、 dropped 代表封包由於有問(wèn)題而遭丟棄的數(shù)量等等
TX:與 RX 相反,為網(wǎng)路由啟動(dòng)到目前為止的傳送情況;
collisions:代表封包碰撞的情況,如果發(fā)生太多次, 表示您的網(wǎng)路狀況不太好;
txqueuelen:代表用來(lái)傳輸資料的緩衝區(qū)的儲(chǔ)存長(zhǎng)度;
RX bytes, TX bytes:總傳送、接收的位元組總量
Interrupt, Memory:網(wǎng)路卡硬體的資料, IRQ 岔斷與記憶體位址;
ifup, ifdown
[root@linux ~]# ifup {interface} [root@linux ~]# ifdown {interface} [root@linux ~]# ifup eth0 |
[root@linux ~]# route [-nee] [root@linux ~]# route add [-net|-host] [網(wǎng)域或主機(jī)] netmask [mask] [gw|dev] [root@linux ~]# route del [-net|-host] [網(wǎng)域或主機(jī)] netmask [mask] [gw|dev] 觀察的參數(shù): -n :不要使用通訊協(xié)定或主機(jī)名稱(chēng),直接使用 IP 或 port number; -ee :使用更詳細(xì)的資訊來(lái)顯示 增加 (add) 與刪除 (del) 路由的相關(guān)參數(shù): -net :表示後面接的路由為一個(gè)網(wǎng)域; -host :表示後面接的為連接到單部主機(jī)的路由; netmask :與網(wǎng)域有關(guān),可以設(shè)定 netmask 決定網(wǎng)域的大小; gw :gateway 的簡(jiǎn)寫(xiě),後續(xù)接的是 IP 的數(shù)值喔,與 dev 不同; dev :如果只是要指定由那一塊網(wǎng)路卡連線出去,則使用這個(gè)設(shè)定,後面接 eth0 等 範(fàn)例一:?jiǎn)渭兊挠^察路由狀態(tài) [root@linux ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.10.30 0.0.0.0 UG 0 0 0 eth0 [root@linux ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.10.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default server.cluster 0.0.0.0 UG 0 0 0 eth0 |
Destination, Genmask:這兩個(gè)玩意兒就是分別是 network 與 netmask 啦!所以這兩個(gè)咚咚就組合成為一個(gè)完整的網(wǎng)域囉!
Gateway:該網(wǎng)域是通過(guò)那個(gè) gateway 連接出去的? 如果顯示 0.0.0.0 表示該路由是直接由本機(jī)傳送,亦即可以透過(guò)區(qū)域網(wǎng)路的 MAC 直接傳訊; 如果有顯示 IP 的話,表示該路由需要經(jīng)過(guò)路由器 (通訊閘) 的幫忙才能夠傳送出去。
Flags:總共有多個(gè)旗標(biāo),代表的意義如下:
U (route is up):該路由是啟動(dòng)的;
H (target is a host):目標(biāo)是一部主機(jī) (IP) 而非網(wǎng)域;
G (use gateway):需要透過(guò)外部的主機(jī) (gateway) 來(lái)轉(zhuǎn)遞封包;
R (reinstate route for dynamic routing):使用動(dòng)態(tài)路由時(shí),恢復(fù)路由資訊的旗標(biāo);
D (dynamically installed by daemon or redirect):已經(jīng)由服務(wù)或轉(zhuǎn) port 功能設(shè)定為動(dòng)態(tài)路由
M (modified from routing daemon or redirect):路由已經(jīng)被修改了;
! (reject route):這個(gè)路由將不會(huì)被接受(用來(lái)抵擋不安全的網(wǎng)域!)
Iface:這個(gè)路由傳遞封包的介面。
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 |
範(fàn)例二:路由的增加與刪除 [root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0 # 上面這個(gè)動(dòng)作可以刪除掉 169.254.0.0/16 這個(gè)網(wǎng)域! # 請(qǐng)注意,在刪除的時(shí)候,需要將路由表上面出現(xiàn)的資訊都寫(xiě)入 # 包括 netmask , dev 等等參數(shù)喔!注意注意 [root@linux ~]# route add -net 192.168.100.0 > netmask 255.255.255.0 dev eth0 # 透過(guò) route add 來(lái)增加一個(gè)路由!請(qǐng)注意,這個(gè)路由必須要能夠與你互通。 # 舉例來(lái)說(shuō),如果我下達(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 互通!這樣說(shuō),可以理解喔??? [root@linux ~]# route add default gw 192.168.10.30 # 增加預(yù)設(shè)路由的方法!請(qǐng)注意,只要有一個(gè)預(yù)設(shè)路由就夠了喔! # 在這個(gè)地方如果您隨便設(shè)定後,記得使用底下的指令重新設(shè)定你的網(wǎng)路 # /etc/init.d/network restart |
[root@linux ~]# ip [option] [動(dòng)作] [指令] 參數(shù): option :設(shè)定的參數(shù),主要有: -s :顯示出該裝置的統(tǒng)計(jì)數(shù)據(jù)(statistics),例如總接受封包數(shù)等; 動(dòng)作:亦即是可以針對(duì)哪些網(wǎng)路參數(shù)進(jìn)行動(dòng)作,包括有: link :關(guān)於裝置 (device) 的相關(guān)設(shè)定,包括 MTU, MAC 位址等等 addr/address :關(guān)於額外的 IP 協(xié)定,例如多 IP 的達(dá)成等等; route :與路由有關(guān)的相關(guān)設(shè)定 |
關(guān)於裝置介面 (device) 的相關(guān)設(shè)定: ip link
[root@linux ~]# ip [-s] link show <== 單純的查閱該裝置相關(guān)的資訊 [root@linux ~]# ip link set [device] [動(dòng)作與參數(shù)] 參數(shù): show:僅顯示出這個(gè)裝置的相關(guān)內(nèi)容,如果加上 -s 會(huì)顯示更多統(tǒng)計(jì)數(shù)據(jù); set :可以開(kāi)始設(shè)定項(xiàng)目, device 指的是 eth0, eth1 等等介面代號(hào); 動(dòng)作與參數(shù):包括有底下的這些動(dòng)作: up|down :?jiǎn)?dòng) (up) 或關(guān)閉 (down) 某個(gè)介面,其他參數(shù)使用預(yù)設(shè)的乙太網(wǎng)路; address :如果這個(gè)裝置可以更改 MAC 的話,用這個(gè)參數(shù)修改! name :給予這個(gè)裝置一個(gè)特殊的名字; 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 |
範(fàn)例二:?jiǎn)?dòng)、關(guān)閉與設(shè)定裝置的相關(guān)資訊 [root@linux ~]# ip link set eth0 up # 啟動(dòng) eth0 這個(gè)裝置介面; [root@linux ~]# ip link set eth0 down # 阿就關(guān)閉??!簡(jiǎn)單的要命~ [root@linux ~]# ip link set eth0 mtu 1000 # 更改 MTU 的值,達(dá)到 1000 bytes,單位就是 bytes ??! |
範(fàn)例三:修改網(wǎng)路卡代號(hào)、MAC 等參數(shù) [root@linux ~]# ip link set eth0 name vbird SIOCSIFNAME: Device or resource busy # 因?yàn)樵撗b置目前是啟動(dòng)的,所以不能這樣做設(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)路卡代號(hào)都可以改變!不過(guò),玩玩後記得改回來(lái)??! # 因?yàn)槲覀兊?nbsp;ifcfg-eth0 還是使用原本的裝置代號(hào)!避免有問(wèn)題,要改回來(lái) [root@linux ~]# ip link set vbird name eth0 <==介面改回來(lái) [root@linux ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa [root@linux ~]# ip link show eth0 # 如果你的網(wǎng)路卡支援硬體位址 (MAC) 可以更改的話, # 那麼上面這個(gè)動(dòng)作就可以更改你的網(wǎng)路卡位址了!厲害吧! # 不過(guò),還是那句老話,測(cè)試完之後請(qǐng)立刻改回來(lái)??! |
關(guān)於額外的 IP 相關(guān)設(shè)定: ip address
[root@linux ~]# ip address show <==就是查閱 IP 參數(shù)??! [root@linux ~]# ip address [add|del] [IP參數(shù)] [dev 裝置名] [相關(guān)參數(shù)] 參數(shù): show :?jiǎn)渭兊娘@示出介面的 IP 資訊??; add|del :進(jìn)行相關(guān)參數(shù)的增加 (add) 或刪除 (del) 設(shè)定,主要有: IP 參數(shù):主要就是網(wǎng)域的設(shè)定,例如 192.168.100.100/24 之類(lèi)的設(shè)定喔; dev :這個(gè) IP 參數(shù)所要設(shè)定的介面,例如 eth0, eth1 等等; 相關(guān)參數(shù):主要有底下這些: broadcast:設(shè)定廣播位址,如果設(shè)定值是 + 表示『讓系統(tǒng)自動(dòng)計(jì)算』 label :亦即是這個(gè)裝置的別名,例如 eth0:0 就是了! scope :這個(gè)介面的領(lǐng)域,通常是這幾個(gè)大類(lèi): global :允許來(lái)自所有來(lái)源的連線; 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 |
範(fàn)例二:新增一個(gè)介面,名稱(chēng)假設(shè)為 eth0:vbird [root@linux ~]# ip address add 192.168.50.50/24 broadcast + > dev eth0 label eth0:vbird [root@linux ~]# ip address show eth0 2: eth0:mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird inet6 fe80::240:d0ff:fe13:c346/64 scope link valid_lft forever preferred_lft forever # 看到上面的特殊字體了吧?多出了一行新的介面,且名稱(chēng)是 eth0:vbird # 至於那個(gè) broadcast + 也可以寫(xiě)成 broadcast 192.168.50.255 啦! [root@linux ~]# ifconfig eth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46 inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:5 Base address:0x3e00 # 如果使用 ifconfig 就能夠看到這個(gè)怪東西了!可愛(ài)吧! ^_^ 範(fàn)例三:將剛剛的介面刪除 [root@linux ~]# ip address del 192.168.50.50/24 dev eth0 # 刪除就比較簡(jiǎn)單??! ^_^ |
關(guān)於路由的相關(guān)設(shè)定: ip route
[root@linux ~]# ip route show <==單純的顯示出路由的設(shè)定而已 [root@linux ~]# ip route [add|del] [IP或網(wǎng)域] [via gateway] [dev 裝置] 參數(shù): show :?jiǎn)渭兊娘@示出路由表,也可以使用 list ; add|del :增加 (add) 或刪除 (del) 路由的意思。 IP或網(wǎng)域:可使用 192.168.50.0/24 之類(lèi)的網(wǎng)域或者是單純的 IP ; via :從那個(gè) gateway 出去,不一定需要; dev :由那個(gè)裝置連出去,這就需要了! 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 |
範(fàn)例二:增加路由,主要是本機(jī)直接可溝通的網(wǎng)域 [root@linux ~]# ip route add 192.168.5.0/24 dev eth0 # 針對(duì)本機(jī)直接溝通的網(wǎng)域設(shè)定好路由,不需要透過(guò)外部的路由器 [root@linux ~]# ip route show 192.168.5.0/24 dev eth0 scope link ....以下省略.... 範(fàn)例三:增加可以通往外部的路由,需透過(guò) router 喔! [root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0 [root@linux ~]# ip route show 192.168.5.0/24 dev eth0 scope link ....其他省略.... 192.168.10.0/24 via 192.168.5.100 dev eth0 # 仔細(xì)看喔,因?yàn)槲矣?nbsp;192.168.5.0/24 的路由存在 (我的網(wǎng)卡直接聯(lián)繫), # 所以才可以將 192.168.10.0/24 的路由丟給 192.168.5.100 # 那部主機(jī)來(lái)幫忙傳遞喔!與之前提到的 route 指令是一樣的限制! 範(fàn)例四:增加預(yù)設(shè)路由 [root@linux ~]# ip route add default via 192.168.1.2 dev eth0 # 那個(gè) 192.168.1.2 就是我的預(yù)設(shè)路由器 (gateway) 的意思啊! ^_^ # 真的記得,只要一個(gè)預(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í)上,這個(gè) ip 的指令實(shí)在是太博大精深了!剛接觸 Linux 網(wǎng)路的朋友,可能會(huì)看到有點(diǎn)暈~ 不要緊啦!您先會(huì)使用 ifconfig, ifup , ifdown 與 route 即可, 等以後有經(jīng)驗(yàn)了之後,再繼續(xù)回來(lái)玩 ip 這個(gè)好玩的指令吧! ^_^ 有興趣的話,也可以自行參考 ethtool 這個(gè)指令喔! (man ethtool)。
proto:此路由的路由協(xié)定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判斷自動(dòng)設(shè)定。
scope:路由的範(fàn)圍,主要是 link ,亦即是與本裝置有關(guān)的直接連線。
iwlist:利用無(wú)線網(wǎng)卡進(jìn)行無(wú)線 AP 的偵測(cè)與取得相關(guān)的資料;
iwconfig:設(shè)定無(wú)線網(wǎng)卡的相關(guān)參數(shù)。
[root@linux ~]# dhclient eth0 |
[root@linux ~]# ping [-bcstnM] IP 參數(shù): -b :後面接的是 broadcast 的 IP,用在你『需要對(duì)整個(gè)網(wǎng)域的主機(jī)進(jìn)行 ping 』時(shí); -c :後面接的是執(zhí)行 ping 的次數(shù),例如 -c 5 ; -n :不進(jìn)行 IP 與主機(jī)名稱(chēng)的反查,直接使用 IP ; -s :發(fā)送出去的 ICMP 封包大小,預(yù)設(shè)為 56(bytes),再加 8 bytes 的 ICMP 表頭資料 -t :TTL 的數(shù)值,預(yù)設(shè)是 255,每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)就會(huì)少一; -M [do|dont] :主要在偵測(cè)網(wǎng)路的 MTU 數(shù)值大小,兩個(gè)常見(jiàn)的項(xiàng)目是: do :代表傳送一個(gè) DF (Don‘t Fragment) 旗標(biāo),讓封包不能重新拆包與打包; dont:代表不要傳送 DF 旗標(biāo),表示封包可以在其他主機(jī)上拆包與打包 範(fàn)例一:偵測(cè)一下 168.95.1.1 這部 DNS 主機(jī)是否存在? [root@linux ~]# ping -c 3 168.95.1.1 PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data. 64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms 64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms 64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms --- 168.95.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2 |
64 bytes:表示這次傳送的 ICMP 封包大小為 64 bytes 這麼大,這是預(yù)設(shè)值, 在某些特殊場(chǎng)合中,例如要搜索整個(gè)網(wǎng)路內(nèi)最大的 MTU 時(shí),可以使用 -s 2000 之類(lèi)的數(shù)值來(lái)取代;
icmp_seq=0:ICMP 所偵測(cè)進(jìn)行的次數(shù),第一次編號(hào)為 0 ;
ttl=243:TTL 與 IP 封包內(nèi)的 TTL 是相同的,每經(jīng)過(guò)一個(gè)帶有 MAC 的節(jié)點(diǎn) (node) 時(shí),例如 router, bridge 時(shí), TTL 就會(huì)減少一,預(yù)設(shè)的 TTL 為 255 , 你可以透過(guò) -t 150 之類(lèi)的方法來(lái)重新設(shè)定預(yù)設(shè) TTL 數(shù)值;
time=9.16 ms:回應(yīng)時(shí)間,單位有 ms(0.001秒)及 us(0.000001秒), 一般來(lái)說(shuō),越小的回應(yīng)時(shí)間,表示兩部主機(jī)之間的網(wǎng)路連線越良好!
範(fàn)例二:針對(duì)整個(gè)網(wǎng)域進(jìn)行 ping 的追查 [root@linux ~]# ping -c 3 -b 192.168.10.255 WARNING: pinging broadcast address <==會(huì)告知危險(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)要針對(duì)整部主機(jī)作 ping 的偵測(cè)時(shí),可以利用 -b 這個(gè)參數(shù)。 # 請(qǐng)?zhí)貏e注意,當(dāng)使用 ping -b 時(shí),會(huì)對(duì)整個(gè)網(wǎng)域進(jìn)行偵測(cè)喔!沒(méi)事別亂用。 # 例如上面的範(fàn)例中,區(qū)網(wǎng)內(nèi)的 192.168.10.20... 等主機(jī)會(huì)被偵測(cè)到。 |
範(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),那就是可以接受這個(gè)封包,如果無(wú)回應(yīng),那就表示這個(gè) MTU 太大了。 [root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data. ping: local error: Message too long, mtu=1500 # 這個(gè)錯(cuò)誤訊息是說(shuō),本地端的 MTU 才到 1500 而已,你要偵測(cè) 8000 的 MTU # 根本就是無(wú)法達(dá)成的!那要如何是好?用前一小節(jié)介紹的 ip link 來(lái)進(jìn)行 MTU 設(shè)定吧! |
因?yàn)槿康闹鳈C(jī)群都是在內(nèi)部的區(qū)網(wǎng),例如叢集架構(gòu) (cluster) 的環(huán)境下, 由於內(nèi)部的網(wǎng)路節(jié)點(diǎn)都是我們可以控制的,因此可以透過(guò)修改 MTU 來(lái)增進(jìn)網(wǎng)路效能;
因?yàn)樽鳂I(yè)系統(tǒng)預(yù)設(shè)的 MTU 與您的網(wǎng)域不符,導(dǎo)致某些網(wǎng)站可以順利連線,某些網(wǎng)站則無(wú)法連線。 以 Windows 作業(yè)系統(tǒng)作為連線分享的主機(jī)時(shí),在 Client 端挺容易發(fā)生這個(gè)問(wèn)題;
網(wǎng)路介面 | MTU |
Ethernet | 1500 |
PPPoE | 1492 |
Dial-up(Modem) | 576 |
[root@linux ~]# traceroute [-nwig] IP 參數(shù): -n :可以不必進(jìn)行主機(jī)的名稱(chēng)解析,單純用 IP ,速度較快! -w :若對(duì)方主機(jī)在幾秒鐘內(nèi)沒(méi)有回聲就宣告不治...預(yù)設(shè)是 5 秒 -i :用在比較複雜的環(huán)境,如果你的網(wǎng)路介面很多很複雜時(shí),才會(huì)用到這個(gè)參數(shù); 舉例來(lái)說(shuō),你有兩條 ADSL 可以連接到外部,那你的主機(jī)會(huì)有兩個(gè) ppp, 你可以使用 -i 來(lá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 |
[root@linux ~]# netstat -[rn] <==與路由有關(guān)的參數(shù) [root@linux ~]# netstat -[antulpc] <==與網(wǎng)路介面有關(guān)的參數(shù) 參數(shù): 與路由 (route) 有關(guān)的參數(shù)說(shuō)明: -r :列出路由表(route table),功能如同 route 這個(gè)指令; -n :不使用主機(jī)名稱(chēng)與服務(wù)名稱(chēng),使用 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)聽(tīng)) 的服務(wù)之網(wǎng)路狀態(tài); -p :列出 PID 與 Program 的檔名; -c :可以設(shè)定幾秒鐘後自動(dòng)更新一次,例如 -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í)這個(gè)參數(shù)就跟 route -n 一模一樣,對(duì)吧!這不是 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 ......(底下省略)...... |
Proto:該連線的封包協(xié)定,主要為 TCP/UDP 等封包;
Recv-Q:非由使用者程式連接所複製而來(lái)的總 bytes 數(shù);
Send-Q:由遠(yuǎn)端主機(jī)所傳送而來(lái),但不具有 ACK 標(biāo)誌的總 bytes 數(shù), 意指主動(dòng)連線 SYN 或其他標(biāo)誌的封包所佔(zhàn)的 bytes 數(shù);
Local Address:本地端的位址,可以是 IP (-n 參數(shù)存在時(shí)), 也可以是完整的主機(jī)名稱(chēng)。如上表我們看到的 IP 格式有兩種,一種是 IPv4 的標(biāo)準(zhǔn), 亦即是四組十進(jìn)位的數(shù)字後面加上冒號(hào)『:』後,接著 port number 。一種是 IPv6 , 前面的 IP 加上很多冒號(hào)『:』的格式。我們可以由這個(gè)顯示的資料看出這個(gè)服務(wù)是開(kāi)放在哪一個(gè)介面, 例如上表當(dāng)中, port 22 是開(kāi)放在 0.0.0.0 ,亦即是所有介面都可以連到 port 22 , 至於 port 53 則僅開(kāi)放在本機(jī)的 127.0.0.1 這個(gè)介面而已,所以是不對(duì)外部介面開(kāi)放的意思。
Foreign Address:遠(yuǎn)端的主機(jī) IP 與 port number
stat:狀態(tài)列,主要的狀態(tài)含有:
ESTABLISED:已建立連線的狀態(tài);
SYN_SENT:發(fā)出主動(dòng)連線 (SYN 標(biāo)誌) 的連線封包;
SYN_RECV:接收到一個(gè)要求連線的主動(dòng)連線封包;
FIN_WAIT1:該插槽服務(wù)(socket)已中斷,該連線正在斷線當(dāng)中;
FIN_WAIT2:該連線已掛斷,但正在等待對(duì)方主機(jī)回應(yīng)斷線確認(rèn)的封包;
TIME_WAIT:該連線已掛斷,但 socket 還在網(wǎng)路上等待結(jié)束;
LISTEN:通常用在服務(wù)的監(jiān)聽(tīng) port !可使用『 -l 』參數(shù)查閱。
範(fàn)例三:秀出目前已經(jīng)啟動(dò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í)是那個(gè) -l 的參數(shù),因?yàn)榭梢詢(xún)H列出有在 Listen 的 port |
範(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 |
例題一:請(qǐng)說(shuō)明服務(wù)名稱(chēng)與 port number 的對(duì)應(yīng)在 Linux 當(dāng)中,是用那個(gè)檔案來(lái)設(shè)定對(duì)應(yīng)的? 答:
|
[root@linux ~]# host [-a] hostname [server] 參數(shù): -a :列出該主機(jī)詳細(xì)的各項(xiàng)主機(jī)名稱(chēng)設(shè)定資料 [server] :可以使用非為 /etc/resolv.conf 的 DNS 主機(jī)來(lái)查詢(xún)。 範(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 |
[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 |
[root@linux ~]# nslookup [-query=[type]] [hostname|IP] 參數(shù): -query=type:查詢(xún)的類(lèi)型,除了傳統(tǒng)的 IP 與主機(jī)名稱(chēng)對(duì)應(yīng)外,DNS 還有很多資訊, 所以我們可以查詢(xún)很多不同的資訊,包括 mx, cname 等等, 例如: -query=mx 的查詢(xún)方法! 範(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ī)名稱(chēng) [root@linux ~]# nslookup 168.95.1.1 Server: 168.95.1.1 Address: 168.95.1.1#53 1.1.95.168.in-addr.arpa name = dns.hinet.net. |
[root@linux ~]# telnet [host|IP] [port] 範(fàn)例一:連結(jié)到成大夢(mèng)之大地這個(gè) BBS 站 [root@linux ~]# telnet bbs.dorm.ncku.edu.tw bbs.ccns.ncku.edu.tw ⊙ 夢(mèng)之大地 逼逼ㄟ四 ⊙ 140.116.250.3 [DreamBBS Ver.040223] 歡迎光臨【 夢(mèng)之大地 逼逼ㄟ四 】。系統(tǒng)負(fù)載:0.16 0.16 0.16 [負(fù)載正常] ╭─┼────┼─╮ ╭╮ ┌┤夢(mèng)之大地├─────────┐ ╭──┬──┬──╮╭───┴┴──┬╮ │ │ ╰──┴──┴──╯ │ │ 夢(mèng)之大地由 │ ╭────────╮ ╭─╯ │ 【電腦網(wǎng)路愛(ài)好社?CCNS】 │ ╭───┬───╮ ╭──╯ │ 維護(hù)管理 │ │ │ ╭─╯ │ │ ╰───┴───╯ ╰┴───────╯ └─────────┤By BenHe├┘ ┌┤本站站長(zhǎng)群├────────┐ ╭ ╭ ╭ ╮ │站長(zhǎng): billcho │ ╭───┼────╮╭─┼─╭┼──┼╮ │系統(tǒng): cat │ │ │ │ ││ │站務(wù): muwell ianwolf │ ╭╯╮ │ │ ││ │ renn999 GG │ ╭╯ ╰╮ │ │ │╯ │ │ ╭╯ ╰╮ │╭ │ └───────────────┘ ╰╯ ╰─╯╰─┴╯ ╰───╯ 參觀用帳號(hào):guest,申請(qǐng)新帳號(hào):new。目前線上人數(shù) [2183/5000] 人。 請(qǐng)輸入代號(hào): |
範(fàn)例二:偵測(cè)本機(jī)端的 110 這個(gè) port 是否正確啟動(dòng)? [root@linux ~]# telnet localhost 110 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused # 如果出現(xiàn)這樣的訊息,代表這個(gè) port 沒(méi)有啟動(dòng)或者是這個(gè)連線有問(wèn)題, # 因?yàn)槟吹侥莻€(gè) refused 嘛! [root@linux ~]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is ‘^]‘. 220 vbird.vbird.idv.tw ESMTP Postfix ehlo localhost 250-linux.dm.tsai 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME quit 221 Bye Connection closed by foreign host. |
[root@linux ~]# ftp [-p] [host|IP] [port] 參數(shù): -p :?jiǎn)?dòng)被動(dòng)式模式 (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 這個(gè)檔案 ftp> mget file <==下載 file 這個(gè)目錄或檔案 ftp> put file <==上傳 file 這個(gè)檔案到伺服器上 ftp> delete file <==刪除主機(jī)上的 file 這個(gè)檔案 ftp> mkdir dir <==建立 dir 這個(gè)目錄 ftp> lcd /home <==切換『本地端主機(jī)』的工作目錄 ftp> passive <==啟動(dòng)或關(guān)閉 passive 模式 ftp> binary <==資料傳輸模式設(shè)定為 binary 格式 |
[root@linux ~]# ftp hostname 318 # 假設(shè)對(duì)方主機(jī)的 ftp 服務(wù)開(kāi)啟在 318 這個(gè) port 啊! |
[root@linux ~]# lftp [-p port] [-u user[,pass]] [host|IP] 參數(shù): -p :後面可以直接接上遠(yuǎn)端 FTP 主機(jī)提供的 port -u :後面則是接上 帳號(hào)與密碼 ,就能夠連接上遠(yuǎn)端主機(jī)了 如果沒(méi)有加帳號(hào)密碼, lftp 預(yù)設(shè)會(huì)使用 anonymous 嘗試匿名登入 範(fàn)例一:利用 lftp 登入義守大學(xué) [root@linux ~]# lftp ftp.isu.edu.tw lftp ftp.isu.edu.tw:~> # 瞧!一下子就登入了!很快樂(lè)吧! ^_^ |
[root@linux ~]# lynx [options] [website] 參數(shù): options 指的是一些慣用的參數(shù),可以使用 man lynx 查閱,常見(jiàn)的有: -anonymous :預(yù)設(shè)使用匿名登入; -assume_charset=big5 :設(shè)定預(yù)設(shè)的語(yǔ)系資料為 big5 ,用在中文網(wǎng)頁(yè)很方便 範(fàn)例一:瀏覽 Linux kernel 網(wǎng)站 [root@linux ~]# LANG=zh_TW.big5 [root@linux ~]# lynx http://www.kernel.org |
進(jìn)入畫(huà)面之後,由於是文字型態(tài),所以編排可能會(huì)有點(diǎn)位移!不過(guò)不打緊!不會(huì)影響我們看咚咚!
這個(gè)時(shí)候可以使用『上下鍵』來(lái)讓游標(biāo)在上面的選項(xiàng)當(dāng)中(如信箱、書(shū)籤等等的),按下 Enter 就進(jìn)入該頁(yè)面
可以使用『左右鍵』來(lái)移動(dòng)『上一頁(yè)或下一頁(yè)』
可以藉由修改 /etc/lynx.cfg 來(lái)設(shè)定顯示的字元編碼 (臺(tái)灣地區(qū)可以選擇 Big5 編碼)
其他的設(shè)定可以使用上面的範(fàn)例當(dāng)中,最底下那一行的說(shuō)明喔!
一些常見(jiàn)功能:
上 :移動(dòng)游標(biāo)至本頁(yè)中 "上一個(gè)可連結(jié)點(diǎn)" .
下 :移動(dòng)游標(biāo)至本頁(yè)中 "下一個(gè)可連結(jié)點(diǎn)" .
左 :back. 跳回上一頁(yè).
右 :進(jìn)入反白游標(biāo)所連結(jié)之網(wǎng)頁(yè).
ENTER 同 "右" 鍵.
h:Help, 求助功能. 線上說(shuō)明書(shū).
g:Goto URL, 按 g 後輸入網(wǎng)頁(yè)位址(URL) 如:http://www.abc.edu/等
d:download, 下載檔案.
q:Quit, 跳離 lynx !
Ctrl+C :強(qiáng)迫切斷 lynx 的執(zhí)行.
方向鍵:
[root@linux ~]# cd /usr/share/doc/samba-3.0.10/htmldocs [root@linux htmldocs]# lynx index.html |
[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 |
[root@linux ~]# lynx -dump > http://some.site.name/web.php?name=user&password=pw > testfile |
[root@linux ~]# wget [option] [網(wǎng)址] 參數(shù): 若想要連線的網(wǎng)站有提供帳號(hào)與密碼的保護(hù)時(shí),可以利用這兩個(gè)參數(shù)來(lái)輸入喔! --http-user=usrname --http-password=password --quiet :不要顯示 wget 在抓取資料時(shí)候的顯示訊息 更多的參數(shù)請(qǐng)自行參考 man wget 吧! ^_^ 範(fàn)例一:請(qǐng)下載 2.6.17 版的核心 [root@linux ~]# wget > http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.gz --16:06:10-- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.gz => `linux-2.6.17.tar.gz‘ Resolving www.kernel.org... 204.152.191.37, 204.152.191.5 Connecting to www.kernel.org|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 |
[root@linux ~]# vi /etc/wgetrc #http_proxy = http://proxy.yoyodyne.com:18023/ <==找到底下這幾行,大約在 78 行後; #ftp_proxy = http://proxy.yoyodyne.com:18023/ #use_proxy = on # 將他改成類(lèi)似底下的模樣,記得,你必須要有可接受的 proxy 主機(jī)才行! http_proxy = http://proxy.ncku.edu.tw:3128/ use_proxy = no |
[root@linux ~]# tcpdump [-nn] [-i 介面] [-w 儲(chǔ)存檔名] [-c 次數(shù)] [-Ae] [-qX] [-r 檔案] [所欲擷取的資料內(nèi)容] 參數(shù): -nn:直接以 IP 及 port number 顯示,而非主機(jī)名與服務(wù)名稱(chēng) -i :後面接要『監(jiān)聽(tīng)』的網(wǎng)路介面,例如 eth0, lo, ppp0 等等的介面; -w :如果你要將監(jiān)聽(tīng)所得的封包資料儲(chǔ)存下來(lái),用這個(gè)參數(shù)就對(duì)了!後面接檔名 -c :監(jiān)聽(tīng)的封包數(shù),如果沒(méi)有這個(gè)參數(shù), tcpdump 會(huì)持續(xù)不斷的監(jiān)聽(tīng), 直到使用者輸入 [ctrl]-c 為止。 -A :封包的內(nèi)容以 ASCII 顯示,通常用來(lái)捉取 WWW 的網(wǎng)頁(yè)封包資料。 -e :使用資料連接層 (OSI 第二層) 的 MAC 封包資料來(lái)顯示; -q :僅列出較為簡(jiǎn)短的封包資訊,每一行的內(nèi)容比較精簡(jiǎn) -X :可以列出十六進(jìn)位 (hex) 以及 ASCII 的封包內(nèi)容,對(duì)於監(jiān)聽(tīng)封包內(nèi)容很有用 -r :從後面接的檔案將封包資料讀出來(lái)。那個(gè)『檔案』是已經(jīng)存在的檔案, 並且這個(gè)『檔案』是由 -w 所製作出來(lái)的。 所欲擷取的資料內(nèi)容:我們可以專(zhuān)門(mén)針對(duì)某些通訊協(xié)定或者是 IP 來(lái)源進(jìn)行封包擷取, 那就可以簡(jiǎn)化輸出的結(jié)果,並取得最有用的資訊。常見(jiàn)的表示方法有: ‘host foo‘, ‘host 127.0.0.1‘ :針對(duì)單部主機(jī)來(lái)進(jìn)行封包擷取 ‘net 192.168‘ :針對(duì)某個(gè)網(wǎng)域來(lái)進(jìn)行封包的擷?。? ‘src host 127.0.0.1‘ ‘dst net 192.168‘:同時(shí)加上來(lái)源(src)或目標(biāo)(dst)限制 ‘tcp port 21‘:還可以針對(duì)通訊協(xié)定偵測(cè),如 tcp, udp, arp, ether 等 還可以利用 and 與 or 來(lái)進(jìn)行封包資料的整合顯示呢! 範(fàn)例一:以 IP 與 port number 捉下 eth0 這個(gè)網(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 <==捉下來(lái)的封包數(shù)量 14250 packets received by filter <==由過(guò)濾所得的總封包數(shù)量 7512 packets dropped by kernel <==被核心所丟棄的封包 |
01:33:40.41:這個(gè)是此封包被擷取的時(shí)間,『時(shí):分:秒』的單位;
IP:透過(guò)的通訊協(xié)定是 IP ;
192.168.1.100.22 > :傳送端是 192.168.1.100 這個(gè) IP,而傳送的 port number 為 22,您必須要瞭解的是,那個(gè)大於 (>) 的符號(hào)指的是封包的傳輸方向喔!
192.168.1.11.1190:接收端的 IP 是 192.168.1.11, 且該主機(jī)開(kāi)啟 port 1190 來(lái)接收;
P 116:232(116):這個(gè)封包帶有 PUSH 的資料傳輸標(biāo)誌, 且傳輸?shù)馁Y料為整體資料的 116~232 byte,所以這個(gè)封包帶有 116 bytes 的資料量;
ack 1 win 9648:ACK與 Window size 的相關(guān)資料。
[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 |
我們先在一個(gè)終端機(jī)視窗輸入『 tcpdump -i lo -nn 』 的監(jiān)聽(tīng),
再另開(kāi)一個(gè)終端機(jī)視窗來(lái)對(duì)本機(jī) (127.0.0.1) 登入『ssh localhost』
[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> |
第 3 行顯示的是『來(lái)自 client 端,帶有 SYN 主動(dòng)連線的封包』,
第 4 行顯示的是『來(lái)自 server 端,除了回應(yīng) client 端之外(ACK),還帶有 SYN 主動(dòng)連線的標(biāo)誌;
第 5 行則顯示 client 端回應(yīng) server 確定連線建立 (ACK)
第 6 行以後則開(kāi)始進(jìn)入資料傳輸?shù)牟襟E。
[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.. |
例題:如何使用 tcpdump 監(jiān)聽(tīng) (1)來(lái)自 eth0 介面卡且 (2)通訊協(xié)定為 port 22 ,(3)目標(biāo)來(lái)源為 192.168.1.100 的封包資料? 答:
|
[root@linux ~]# nc [IP|host] [port] [root@linux ~]# nc -l -p [port] 參數(shù): -l :作為監(jiān)聽(tīng)之用,亦即開(kāi)啟一個(gè) port 來(lái)監(jiān)聽(tīng)用戶(hù)的連線; -p :開(kāi)啟的這個(gè) 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 |
範(fàn)例二:?jiǎn)?dòng)一個(gè) port 來(lái)監(jiān)聽(tīng)使用者的連線要求 [root@linux ~]# nc -l -p 20000 # 啟動(dòng)一個(gè) port 20000 在主機(jī)上,如果此時(shí)使用 netstat -tlnp # 就可以看到系統(tǒng)上多出來(lái)一個(gè) port 20000 在傾聽(tīng)使用者的連線喔! |
[root@linux ~]# nc localhost 20000 <==這裡可以開(kāi)始輸入字串了! |
修改網(wǎng)路介面的硬體相關(guān)參數(shù),可以使用 ifconfig 這個(gè)指令,包括 MTU 等等;
ifup 與 ifdown 其實(shí)只是 script ,在使用時(shí),會(huì)主動(dòng)去 /etc/sysconfig/network-scripts 下找到相對(duì)應(yīng)的裝置設(shè)定檔,才能夠正確的啟動(dòng)與關(guān)閉;
路由的修改與查閱可以使用 route 來(lái)查詢(xún),此外, route 亦可進(jìn)行新增、刪除路由的工作;
ip 指令可以用來(lái)作為整個(gè)網(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 主要是透過(guò) ICMP 封包來(lái)進(jìn)行網(wǎng)路環(huán)境的檢測(cè)工作,並且可以使用 ping 來(lái)查詢(xún)整體網(wǎng)域可接受最大的 MTU 值;
偵察每個(gè)節(jié)點(diǎn)的連線狀況,可以使用 traceroute 這個(gè)指令來(lái)追蹤!
netstat 除了可以觀察本機(jī)的啟動(dòng)介面外,還可以觀察 Unix socket 的傳統(tǒng)插槽介面資料;
host 與 nslookup 預(yù)設(shè)都是透過(guò) /etc/resolv.conf 內(nèi)設(shè)定的 DNS 主機(jī)來(lái)進(jìn)行主機(jī)名稱(chēng)與 IP 的查詢(xún);
lftp 可以用來(lái)匿名登入遠(yuǎn)端的 FTP 主機(jī);
telnet 不只用來(lái)進(jìn)行 BBS 的登入,也可以用來(lái)作為某些埠口的連線測(cè)試;
lynx 主要的功能是『瀏覽』,包括本機(jī)上 HTML 語(yǔ)法的檔案, wget 則主要在用來(lái)下載 WWW 的資料;
擷取封包以分析封包的流向,可使用 tcpdump ,至於圖形介面的 ethereal 則可以進(jìn)行更為詳細(xì)的解析。
透過(guò) tcpdump 分析三向交握,以及分析明碼傳輸?shù)馁Y料,可發(fā)現(xiàn)網(wǎng)路加密的重要性。
nc 可用來(lái)取代 telnet 進(jìn)行某些服務(wù)埠口的檢測(cè)工作,同時(shí)若自行編譯 nc 時(shí),可額外的執(zhí)行 -e 參數(shù)。
暫時(shí)將你的 eth0 這張網(wǎng)路卡的 IP 設(shè)定為 192.168.1.100 ,如何進(jìn)行?
我要增加一個(gè)路由規(guī)則,以 eth0 連接 192.168.100.100/24 這個(gè)網(wǎng)域,應(yīng)該如何下達(dá)指令?
我的網(wǎng)路停頓的很厲害,尤其是連接到 tw.yahoo.com 的時(shí)候,那麼我應(yīng)該如何檢查那個(gè)環(huán)節(jié)出了問(wèn)題?
我發(fā)現(xiàn)我的 Linux 主機(jī)上面有個(gè)連線很怪異,想要將他斷線,應(yīng)該如何進(jìn)行?
您如何知道 green.ev.ncku.edu.tw 這部主機(jī)的 IP ?
請(qǐng)找出您的機(jī)器上面最適當(dāng)?shù)?MTU 應(yīng)該是多少?
如何在終端機(jī)介面上面進(jìn)行 WWW 瀏覽?又該如何下載 WWW 上面提供的檔案?
在終端機(jī)介面中,如何連接 bbs.sayya.org 這個(gè) BBS ?
請(qǐng)自行以 tcpdump 觀察本機(jī)端的 ssh 連線時(shí),三向交握的內(nèi)容
請(qǐng)自行回答:為何使用明碼傳輸?shù)木W(wǎng)路連線資料較為危險(xiǎn)?並自行以軟體將封包取出,並與同學(xué)討論封包的資訊
請(qǐng)自行至 Internet 下載 nc(netcat) 的原始碼,並且編譯成為具有 GAPING_SECURITY_HOLE 的參數(shù), 然後建立一條連線使用 -e /bin/bash 嘗試將本地端的 bash 丟給目的端執(zhí)行 (特殊功能,可讓 client 取得來(lái)自主機(jī)的 bash)。
聯(lián)系客服