Linux 的網路功能相當的強悍,一時之間我們也無法完全的介紹所有的網路指令, 這個章節主要的目的在介紹一些常見的網路指令而已。至於每個指令的詳細用途將在後續伺服器架設時, 依照指令的相關性來進行說明。當然,在這個章節的主要目的是在於將所有的指令彙整在一起,比較容易瞭解啦! 還有,這一章鳥哥新增了一些封包擷取的指令,若不熟悉沒關係,先放著,全部讀完後再回來這一章仔細練習啊! |
1.1 ifconfig, ifup, ifdown
1.2 route
1.3 ip
1.4 iwlist, iwconfig
1.5 dhclient
2. 網路偵錯與觀察指令
2.1 ping:用 ping 追蹤最大 MTU 數值
2.2 traceroute
2.3 netstat
2.4 host
2.5 nslookup
3. 遠端連線指令
3.1 telnet
3.2 ftp
3.3 lftp
3.4 gaim:圖形介面的即時通訊軟體
4. 文字介面網頁瀏覽
4.1 lynx
4.2 wget
5. 封包擷取功能
5.1 tcpdump
5.2 ethereal
5.3 nc, netcat
6. 重點回顧
7. 課後練習:
8. 參考資料
9. 針對本文的建議:http://phorumhttp://www.360doc.com/content/07/0413/17/viewtopic.php?t=26123
網路參數設定指令:
ifconfig:查詢、設定網路卡與 IP 網域等相關參數;
ifconfig: query, configuration of network cards and IP domain parameters;
ifup, ifdown:這兩個檔案是 script ,透過更簡單的方式來啟動網路介面;
ifup, ifdown: These two files are script, which activates the network interface in a simpler way;
route:查詢、設定路由表 (route table)
ip:複合式的指令,可以直接修改上述提到的功能;
ip : complex instructions that can directly modify the functions mentioned above;
ifconfig, ifup, ifdown
- ifconfig 主要是可以手動的啟動、觀察與修改網路介面的相關參數,可以修改的參數很多啊, 包括 IP 參數以及 MTU 等等都可以修改,他的語法如下:
一般來說,直接輸入 ifconfig 就會列出目前已經被啟動的卡, 不論這個卡是否有給予 IP ,都會被顯示出來。而如果是輸入 ifconfig eth0 , 則會秀出這張介面的相關資料,而不管該介面是否有啟動。所以如果您想要知道某張網路卡的 Hardware Address,直接輸入『 ifconfig "網路介面代號" 』即可喔! ^_^! 至於上表出現的各項資料是這樣的(資料排列由上而下、由左而右):[root@linux ~]# ifconfig {interface} {up|down} <== 觀察與啟動介面 [root@linux ~]# ifconfig interface {options} <== 設定與修改介面 參數: interface:網路卡介面代號,包括 eth0, eth1, ppp0 等等 options :可以接的參數,包括如下: up, down :啟動 (up) 或關閉 (down) 該網路介面(不涉及任何參數) mtu :可以設定不同的 MTU 數值,例如 mtu 1500 (單位為 byte) netmask :就是子遮罩網路; broadcast:就是廣播位址啊! 範例: 範例一:觀察所有的網路介面(直接輸入 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
透過觀察上述的資料,大致上可以瞭解到您的網路情況,尤其是那個 RX, TX 內的 error 數量, 以及是否發生嚴重的 collision 情況,都是需要注意的喔! ^_^
呵呵!使用 ifconfig 可以暫時手動來設定或修改某個介面卡的相關功能, 並且也可以透過 eth0:0 這種虛擬的網路介面來設定好一張網路卡上面的多個 IP 喔! 手動的方式真是簡單啊!並且設定錯誤也不打緊,因為我們可以利用 /etc/init.d/network restart 來重新啟動整個網路介面,那麼之前手動的設定資料會全部都失效喔!另外, 要啟動某個網路介面,但又不讓他具有 IP 參數時,直接給他 ifconfig eth0 up 即可! 這個動作經常在無線網卡當中會進行, 因為我們必須要啟動無線網卡讓他去偵測 AP 存在與否啊!範例二:暫時修改網路介面 [root@linux ~]# ifconfig eth0 192.168.100.100 # 如果不加任何其他參數,則系統會依照該 IP 所在的 class 範圍, # 自動的計算出 netmask 以及 network, broadcast 等 IP 參數; [root@linux ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128 > mtu 8000 # 設定網路介面,同時設定 MTU 的數值! [root@linux ~]# ifconfig eth0 mtu 9000 # 僅修改該介面的 MTU 數值,其他的保持不動! [root@linux ~]# ifconfig eth0:0 192.168.50.50 # 仔細看那個介面, eth0:0 喔!那就是在該網路介面上,再模擬一個網路介面, # 亦即是在一張網路卡上面設定多個 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 # 仔細看,是否與硬體有關的資訊都相同啊!沒錯!因為是同一張網卡嘛! [root@linux ~]# ifconfig eth0:0 down # 關掉 eth0:0 這個介面。如果想要啟動 eth1 ,並且不給予任何網路參數, # ifconfig eth1 up 就可以達到了! [root@linux ~]# /etc/init.d/network restart # 剛剛設定的資料全部失效,會以 ifcfg-ethx 的設定為主!
eth0:就是網路卡的代號,也有 lo 這個 loopback ;
eth0 strong > : the code name of the Internet card and also lo this loopback;
HWaddr:就是網路卡的硬體位址,俗稱的 MAC 是也;
HWaddr: is the hardware address of the Internet card, commonly known as MAC is;
inet addr:IPv4 的 IP 位址,後續的 Bcase, Mask 分別代表的是 Broadcast 與 netmask 喔!
int addr: IPv4 IP address, followed by Bcase, Mask representing Broadcast and netmask!
inet6 addr:是 IPv6 的版本的 IP ,我們沒有使用,所以略過;
inet6 addr: IPv6 version IP, which we did not use, so we missed;
MTU:就是 MTU 啊!
: MTU!
RX:那一行代表的是網路由啟動到目前為止的封包接收情況, packets 代表封包數、errors 代表封包發生錯誤的數量、 dropped 代表封包由於有問題而遭丟棄的數量等等
RX : The line represents the receipt of a package from the start-up to the present, packs represents the number of envelopes, errors represents the number of bugs in a package, dropped represents the number of envelopes abandoned due to problems, etc.
TX:與 RX 相反,為網路由啟動到目前為止的傳送情況;
TX: Contrary to RX, transmission from the start-up to the present;
collisions:代表封包碰撞的情況,如果發生太多次, 表示您的網路狀況不太好;
collisions: for the case of a package collision, if it occurs too many times, indicates that your network is not very good;
txqueuelen:代表用來傳輸資料的緩衝區的儲存長度;
txqueuelen: for the storage length of the buffer zone used to transmit data;
RX bytes, TX bytes:總傳送、接收的位元組總量
: Total bytes sent, received
Interrupt, Memory:網路卡硬體的資料, IRQ 岔斷與記憶體位址;
: data on hardware on Internet cards, IRQ interlocking and memory address;
- 即時的手動修改一些網路介面參數,可以利用 ifconfig 來達成,如果是要直接以設定檔, 亦即是在 /etc/sysconfig/network-scripts 裡面的 ifcfg-ethx 等檔案的設定參數來啟動的話, 那就得要透過 ifdown 或 ifup 來達成了。
ifup 與 ifdown 真是太簡單了!這兩支程式其實是 script 而已,他會直接到 /etc/sysconfig/network-scripts 目錄下搜尋對應的設定檔,例如 ifup eth0 時,他會找出 ifcfg-eth0 這個檔案的內容,然後來加以設定。 關於 ifcfg-eth0 的設定則請參考前一章連上 Internet 的說明。[root@linux ~]# ifup {interface} [root@linux ~]# ifdown {interface} [root@linux ~]# ifup eth0
不過,由於這兩支程式主要是搜尋設定檔 (ifcfg-ethx) 來進行啟動與關閉的, 所以在使用前請確定 ifcfg-ethx 是否真的存在於正確的目錄內,否則會啟動失敗喔! 另外,如果以 ifconfig eth0 .... 來設定或者是修改了網路介面後, 那就無法再以 ifdown eth0 的方式來關閉了!因為 ifdown 會分析比對目前的網路參數與 ifcfg-eth0 是否相符,不符的話,就會放棄該次動作。因此,使用 ifconfig 修改完畢後,應該要以 ifconfig eth0 down 才能夠關閉該介面喔!
路由修改 route
[root@linux ~]# route [-nee] [root@linux ~]# route add [-net|-host] [網域或主機] netmask [mask] [gw|dev] [root@linux ~]# route del [-net|-host] [網域或主機] netmask [mask] [gw|dev] 觀察的參數: -n :不要使用通訊協定或主機名稱,直接使用 IP 或 port number; -ee :使用更詳細的資訊來顯示 增加 (add) 與刪除 (del) 路由的相關參數: -net :表示後面接的路由為一個網域; -host :表示後面接的為連接到單部主機的路由; netmask :與網域有關,可以設定 netmask 決定網域的大小; gw :gateway 的簡寫,後續接的是 IP 的數值喔,與 dev 不同; dev :如果只是要指定由那一塊網路卡連線出去,則使用這個設定,後面接 eth0 等 範例一:單純的觀察路由狀態 [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:這兩個玩意兒就是分別是 network 與 netmask 啦!所以這兩個咚咚就組合成為一個完整的網域囉!
: These two things are the difference between network work and netmask! So these two knockouts combine into a full domain!
Gateway:該網域是通過那個 gateway 連接出去的? 如果顯示 0.0.0.0 表示該路由是直接由本機傳送,亦即可以透過區域網路的 MAC 直接傳訊; 如果有顯示 IP 的話,表示該路由需要經過路由器 (通訊閘) 的幫忙才能夠傳送出去。
Gateway: The domain is connected through the Gateway? If 0.0.0.0 indicates that the route is sent directly from the local network, it can be sent directly through the regional network MAC; If there is an IP, it means that the route will need the help of a router (communication link) to get out.
Flags:總共有多個旗標,代表的意義如下:
Flags: There are a number of flags, representing the following:
U (route is up):該路由是啟動的;
H (target is a host):目標是一部主機 (IP) 而非網域;
H (target is a host): The target is a host (IP) and not a domain;
G (use gateway):需要透過外部的主機 (gateway) 來轉遞封包;
R (reinstate route for dynamic routing):使用動態路由時,恢復路由資訊的旗標;
R (reinstate route for dynamic routeing): When dynamic routers are used, the flag of the route route information is restored;
D (dynamically installed by daemon or redirect):已經由服務或轉 port 功能設定為動態路由
D (diNMically installed by daemon or redacted): set by service or transfer port function as a dynamic route
M (modified from routing daemon or redirect):路由已經被修改了;
M (modified from building damon or redacted): Routes have been modified;
! (reject route):這個路由將不會被接受(用來抵擋不安全的網域!)
(reject route): This route will not be accepted (to counter unsafe domains!
Iface:這個路由傳遞封包的介面。
如果是傳送到 Yahoo 的主機呢? Yahoo 的主機 IP 是 202.43.195.52,我通過判斷 1)不是 192.168.10.0/24, 2)不是 169.254.0.0/16 結果到達 3)0/0 時,OK!傳出去了,透過 eth0 將封包傳給 192.168.10.30 那部 gateway 主機啊!所以說,路由是有順序的。
因此當你重複設定多個同樣的路由時, 例如在你的主機上的兩張網路卡設定為相同網域的 IP 時,會出現什麼情況?會出現如下的情況:
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 |
範例二:路由的增加與刪除 [root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0 # 上面這個動作可以刪除掉 169.254.0.0/16 這個網域! # 請注意,在刪除的時候,需要將路由表上面出現的資訊都寫入 # 包括 netmask , dev 等等參數喔!注意注意 [root@linux ~]# route add -net 192.168.100.0 > netmask 255.255.255.0 dev eth0 # 透過 route add 來增加一個路由!請注意,這個路由必須要能夠與你互通。 # 舉例來說,如果我下達底下的指令就會顯示錯誤: # route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254 # 因為我的環境內僅有 192.168.10.100 這個 IP ,所以不能與 192.168.200.254 # 這個網段直接使用 MAC 互通!這樣說,可以理解喔!? [root@linux ~]# route add default gw 192.168.10.30 # 增加預設路由的方法!請注意,只要有一個預設路由就夠了喔! # 在這個地方如果您隨便設定後,記得使用底下的指令重新設定你的網路 # /etc/init.d/network restart |
ip
[root@linux ~]# ip [option] [動作] [指令] 參數: option :設定的參數,主要有: -s :顯示出該裝置的統計數據(statistics),例如總接受封包數等; 動作:亦即是可以針對哪些網路參數進行動作,包括有: link :關於裝置 (device) 的相關設定,包括 MTU, MAC 位址等等 addr/address :關於額外的 IP 協定,例如多 IP 的達成等等; route :與路由有關的相關設定 |
關於裝置介面 (device) 的相關設定: ip link
ip link 可以設定與裝置 (device) 有關的相關設定,包括 MTU 以及該網路介面的 MAC 等等, 當然也可以啟動 (up) 或關閉 (down) 某個網路介面啦!整個語法是這樣的:
使用 ip link show 可以顯示出整個裝置介面的硬體相關資訊,如上所示,包括網卡位址(MAC)、MTU等等, 比較有趣的應該是那個 sit0 的介面了,那個 sit0 的介面是用在 IPv4 及 IPv6 的封包轉換上的, 對於我們僅使用 IPv4 的網路是沒有作用的。 lo 及 sit0 都是主機內部所自行設定的。 而如果加上 -s 的參數後,則這個網路卡的相關統計資訊就會被列出來, 包括接收 (RX) 及傳送 (TX) 的封包數量等等,詳細的內容與 ifconfig 所輸出的結果相同的。[root@linux ~]# ip [-s] link show <== 單純的查閱該裝置相關的資訊 [root@linux ~]# ip link set [device] [動作與參數] 參數: show:僅顯示出這個裝置的相關內容,如果加上 -s 會顯示更多統計數據; set :可以開始設定項目, device 指的是 eth0, eth1 等等介面代號; 動作與參數:包括有底下的這些動作: up|down :啟動 (up) 或關閉 (down) 某個介面,其他參數使用預設的乙太網路; address :如果這個裝置可以更改 MAC 的話,用這個參數修改! name :給予這個裝置一個特殊的名字; mtu :就是最大傳輸單元啊! 範例一:顯示出所有的介面資訊 [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
更新網路卡的 MTU 使用 ifconfig 也可以達成啊!沒啥了不起,不過,如果是要更改『網路卡代號、 MAC 位址的資訊』的話,那可就得使用 ip 囉~不過,設定前得要先關閉該網路卡,否則會不成功。 如下所示:範例二:啟動、關閉與設定裝置的相關資訊 [root@linux ~]# ip link set eth0 up # 啟動 eth0 這個裝置介面; [root@linux ~]# ip link set eth0 down # 阿就關閉啊!簡單的要命~ [root@linux ~]# ip link set eth0 mtu 1000 # 更改 MTU 的值,達到 1000 bytes,單位就是 bytes 啊!
在這個裝置的硬體相關資訊設定上面,包括 MTU, MAC 以及傳輸的模式等等,都可以在這裡設定。 有趣的是那個 address 的項目,那個項目後面接的可是硬體位址 (MAC) 而不是 IP 喔! 很容易搞錯啊!切記切記!更多的硬體參數可以使用 man ip 查閱一下與 ip link 有關的設定。範例三:修改網路卡代號、MAC 等參數 [root@linux ~]# ip link set eth0 name vbird SIOCSIFNAME: Device or resource busy # 因為該裝置目前是啟動的,所以不能這樣做設定。你應該要這樣做: [root@linux ~]# ip link set eth0 down <==關閉介面 [root@linux ~]# ip link set eth0 name vbird <==重新設定 [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 # 怕了吧!連網路卡代號都可以改變!不過,玩玩後記得改回來啊! # 因為我們的 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 # 如果你的網路卡支援硬體位址 (MAC) 可以更改的話, # 那麼上面這個動作就可以更改你的網路卡位址了!厲害吧! # 不過,還是那句老話,測試完之後請立刻改回來啊!
關於額外的 IP 相關設定: ip address
如果說 ip link 是與 OSI 七層協定 的第二層資料連階層有關的話,那麼 ip address (ip addr) 就是與第三層網路層有關的參數啦! 主要是在設定與 IP 有關的各項參數,包括 netmask, broadcast 等等。
看到上面那個特殊的字體嗎?沒錯!那就是 IP 參數啦!也是 ip address 最主要的功能。 底下我們進一步來新增虛擬的網路介面試看看:[root@linux ~]# ip address show <==就是查閱 IP 參數啊! [root@linux ~]# ip address [add|del] [IP參數] [dev 裝置名] [相關參數] 參數: show :單純的顯示出介面的 IP 資訊啊; add|del :進行相關參數的增加 (add) 或刪除 (del) 設定,主要有: IP 參數:主要就是網域的設定,例如 192.168.100.100/24 之類的設定喔; dev :這個 IP 參數所要設定的介面,例如 eth0, eth1 等等; 相關參數:主要有底下這些: broadcast:設定廣播位址,如果設定值是 + 表示『讓系統自動計算』 label :亦即是這個裝置的別名,例如 eth0:0 就是了! scope :這個介面的領域,通常是這幾個大類: global :允許來自所有來源的連線; site :僅支援 IPv6 ,僅允許本主機的連線; link :僅允許本裝置自我連線; host :僅允許本主機內部的連線; 所以當然是使用 global 囉!預設也是 global 啦! 範例一:顯示出所有的介面之 IP 參數: [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
範例二:新增一個介面,名稱假設為 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 就能夠看到這個怪東西了!可愛吧! ^_^ 範例三:將剛剛的介面刪除 [root@linux ~]# ip address del 192.168.50.50/24 dev eth0 # 刪除就比較簡單啊! ^_^
關於路由的相關設定: ip route
呵呵,這個項目當然就是路由的觀察與設定囉!事實上, ip route 的功能幾乎與 route 這個指令差不多,但是,他還可以進行額外的參數設計,例如 MTU 的規劃等等,相當的強悍啊!
如上表所示,最簡單的功能就是顯示出目前的路由資訊,其實跟 route 這個指令相同啦! 指示必須要注意幾個小東西:再來看一下如何進行路由的增加與刪除吧![root@linux ~]# ip route show <==單純的顯示出路由的設定而已 [root@linux ~]# ip route [add|del] [IP或網域] [via gateway] [dev 裝置] 參數: show :單純的顯示出路由表,也可以使用 list ; add|del :增加 (add) 或刪除 (del) 路由的意思。 IP或網域:可使用 192.168.50.0/24 之類的網域或者是單純的 IP ; via :從那個 gateway 出去,不一定需要; dev :由那個裝置連出去,這就需要了! mtu :可以額外的設定 MTU 的數值喔! 範例一:顯示出目前的路由資料 [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
範例二:增加路由,主要是本機直接可溝通的網域 [root@linux ~]# ip route add 192.168.5.0/24 dev eth0 # 針對本機直接溝通的網域設定好路由,不需要透過外部的路由器 [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 # 仔細看喔,因為我有 192.168.5.0/24 的路由存在 (我的網卡直接聯繫), # 所以才可以將 192.168.10.0/24 的路由丟給 192.168.5.100 # 那部主機來幫忙傳遞喔!與之前提到的 route 指令是一樣的限制! 範例四:增加預設路由 [root@linux ~]# ip route add default via 192.168.1.2 dev eth0 # 那個 192.168.1.2 就是我的預設路由器 (gateway) 的意思啊! ^_^ # 真的記得,只要一個預設路由就 OK ! 範例五:刪除路由 [root@linux ~]# ip route del 192.168.10.0/24 [root@linux ~]# ip route del 192.168.5.0/24
事實上,這個 ip 的指令實在是太博大精深了!剛接觸 Linux 網路的朋友,可能會看到有點暈~ 不要緊啦!您先會使用 ifconfig, ifup , ifdown 與 route 即可, 等以後有經驗了之後,再繼續回來玩 ip 這個好玩的指令吧! ^_^ 有興趣的話,也可以自行參考 ethtool 這個指令喔! (man ethtool)。
As a matter of fact, this ip command is far too sophisticated. A friend who has just touched Linux's network may be a little dizzy. It doesn't matter. You can use ifconfig, ifup, ifdown and root, and then come back to play with this fun command.
proto:此路由的路由協定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判斷自動設定。
Proto: The route by which it is routed is agreed, mainly by redact, kenel, boot, state, ra, etc., where kennel refers to an automatic setting by direct core judgement.
scope:路由的範圍,主要是 link ,亦即是與本裝置有關的直接連線。
Scope: The range of the route, primarily Link, is a direct connection to this device.
iwlist, iwconfig
iwlist:利用無線網卡進行無線 AP 的偵測與取得相關的資料;
iwlist: Wireless AP detection and access to relevant data using wireless web cards;
iwconfig:設定無線網卡的相關參數。
iwconfig: Sets the parameters associated with the wireless network card.
dhclient
[root@linux ~]# dhclient eth0 |
網路偵錯與觀察指令:
ping
[root@linux ~]# ping [-bcstnM] IP 參數: -b :後面接的是 broadcast 的 IP,用在你『需要對整個網域的主機進行 ping 』時; -c :後面接的是執行 ping 的次數,例如 -c 5 ; -n :不進行 IP 與主機名稱的反查,直接使用 IP ; -s :發送出去的 ICMP 封包大小,預設為 56(bytes),再加 8 bytes 的 ICMP 表頭資料 -t :TTL 的數值,預設是 255,每經過一個節點就會少一; -M [do|dont] :主要在偵測網路的 MTU 數值大小,兩個常見的項目是: do :代表傳送一個 DF (Don‘t Fragment) 旗標,讓封包不能重新拆包與打包; dont:代表不要傳送 DF 旗標,表示封包可以在其他主機上拆包與打包 範例一:偵測一下 168.95.1.1 這部 DNS 主機是否存在? [root@linux ~]# ping -c 3 168.95.1.1 PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data. 64 bytes from 168.95.1.1: icmp_seq=0 ttl=243 time=9.16 ms 64 bytes from 168.95.1.1: icmp_seq=1 ttl=243 time=8.98 ms 64 bytes from 168.95.1.1: icmp_seq=2 ttl=243 time=8.80 ms --- 168.95.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 8.807/8.986/9.163/0.164 ms, pipe 2 |
64 bytes:表示這次傳送的 ICMP 封包大小為 64 bytes 這麼大,這是預設值, 在某些特殊場合中,例如要搜索整個網路內最大的 MTU 時,可以使用 -s 2000 之類的數值來取代;
64 bytes: The size of the ICMP package sent is 64 bytes, which is the default value, which can be replaced by -s 2000 values in some special settings, such as searching for the largest MTU in the network;
icmp_seq=0:ICMP 所偵測進行的次數,第一次編號為 0 ;
icmp_seq=0: number of times detected by ICMP, number 0 for the first time;
ttl=243:TTL 與 IP 封包內的 TTL 是相同的,每經過一個帶有 MAC 的節點 (node) 時,例如 router, bridge 時, TTL 就會減少一,預設的 TTL 為 255 , 你可以透過 -t 150 之類的方法來重新設定預設 TTL 數值;
tttl=243: TTL is the same as TTL in an IP package, and every time you pass a node (node) with a MAC, e.g. rooter, Bridge, TTL will be reduced by one, the default TTL is 255, and you can reset the default TTL value through -t 150 or so;
time=9.16 ms:回應時間,單位有 ms(0.001秒)及 us(0.000001秒), 一般來說,越小的回應時間,表示兩部主機之間的網路連線越良好!
time=9.16 ms: response time in ms (0.001 seconds) and us (0.00001 seconds), generally the smaller the response time, the better the network link between the two hosts!
範例二:針對整個網域進行 ping 的追查 [root@linux ~]# ping -c 3 -b 192.168.10.255 WARNING: pinging broadcast address <==會告知危險喔! PING 192.168.10.255 (192.168.10.255) 56(84) bytes of data. 64 bytes from 192.168.10.100: icmp_seq=1 ttl=64 time=0.177 ms 64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.179 ms (DUP!) 64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.302 ms (DUP!) 64 bytes from 192.168.10.40: icmp_seq=1 ttl=64 time=0.304 ms (DUP!) # 當要針對整部主機作 ping 的偵測時,可以利用 -b 這個參數。 # 請特別注意,當使用 ping -b 時,會對整個網域進行偵測喔!沒事別亂用。 # 例如上面的範例中,區網內的 192.168.10.20... 等主機會被偵測到。 |
用 ping 追蹤最大 MTU 數值
我們由前幾章的網路基礎裡面談到加大訊框 (frame) 時, 對於網路效能是有幫助的,因為封包打包的次數會減少,加上如果整個傳輸的媒體都能夠接受這個 frame 而不需要重新進行封包的拆解與重組的話,那麼效能當然會更好,那個修改 frame 大小的參數就是 MTU 啦!好了,現在我們知道網路卡的 MTU 可以透過 ifconfig 或者是 ip 等來達成, 那麼追蹤整個網路傳輸的最大 MTU 時,又該如何查詢?呵呵!最簡單的方法當然是透過 ping 傳送一個大封包, 並且不許中繼的路由器或 switch 將該封包重組,那就能夠處理啦!沒錯!可以這樣的:
範例三:找出最大的 MTU 數值 [root@linux ~]# ping -c 2 -s 1000 -M do 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 1000(1028) bytes of data. 1008 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.424 ms # 如果有回應,那就是可以接受這個封包,如果無回應,那就表示這個 MTU 太大了。 [root@linux ~]# ping -c 2 -s 8000 -M do 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 8000(8028) bytes of data. ping: local error: Message too long, mtu=1500 # 這個錯誤訊息是說,本地端的 MTU 才到 1500 而已,你要偵測 8000 的 MTU # 根本就是無法達成的!那要如何是好?用前一小節介紹的 ip link 來進行 MTU 設定吧! |
不過這個 MTU 不要隨便調整啊!除非真的有問題。通常調整 MTU 的時間是在這個時候:
因為全部的主機群都是在內部的區網,例如叢集架構 (cluster) 的環境下, 由於內部的網路節點都是我們可以控制的,因此可以透過修改 MTU 來增進網路效能;
Since all host communities are in the interior of the network, such as the jungle structure (cluster), we can control the network nodes, so we can improve the network by modifying the MTU.
因為作業系統預設的 MTU 與您的網域不符,導致某些網站可以順利連線,某些網站則無法連線。 以 Windows 作業系統作為連線分享的主機時,在 Client 端挺容易發生這個問題;
Since the MTU default in the operating system does not match your domain, some sites can be connected easily, and some sites cannot be connected. When Windows is used as the host for online sharing, the problem is easily encountered at the Clitend end;
另外,其實每種連線方式都有不同的 MTU 值,常見的各種介面的 MTU 值分別為︰
網路介面 | MTU |
Ethernet | 1500 |
PPPoE | 1492 |
Dial-up(Modem) | 576 |
網路上也有免費幫忙查詢 MTU 與傳輸相關資料的網站,例如底下這個網站:連接上這個網站之前,請先取消您瀏覽器上的代理伺服器 (Proxy) 的設定,才能顯示出正確的訊息。 如果在 Windows 的系統上面想要修改 MTU 值的話,那就得要修改 Windows 的登錄檔, 在 Windows 上面對於 MTU 的偵測與修改的詳細作法可以參考微軟的官方網站:
traceroute
[root@linux ~]# traceroute [-nwig] IP 參數: -n :可以不必進行主機的名稱解析,單純用 IP ,速度較快! -w :若對方主機在幾秒鐘內沒有回聲就宣告不治...預設是 5 秒 -i :用在比較複雜的環境,如果你的網路介面很多很複雜時,才會用到這個參數; 舉例來說,你有兩條 ADSL 可以連接到外部,那你的主機會有兩個 ppp, 你可以使用 -i 來選擇是 ppp0 還是 ppp1 啦! -g :與 -i 的參數相仿,只是 -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 |
另外,如果在預設的 5 秒鐘之內 traceroute 聽不到節點的回聲,那麼螢幕上就會跑出一個『 * 』的符號, 告知該節點無法有順利的回應。由於我們的 traceroute 用的是 ICMP 封包,有些防火牆或者主機可能會將 ICMP 可通過的權力拿掉,因此就會造成等不到回聲的狀態!另外,有些 gateway 本來就不支援 traceroute 的功能,因此也會產生那個『 * 』的狀況。所以分析時得要注意一下吶!
netstat
[root@linux ~]# netstat -[rn] <==與路由有關的參數 [root@linux ~]# netstat -[antulpc] <==與網路介面有關的參數 參數: 與路由 (route) 有關的參數說明: -r :列出路由表(route table),功能如同 route 這個指令; -n :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n 與網路介面有關的參數: -a :列出所有的連線狀態,包括 tcp/udp/unix socket 等; -t :僅列出 TCP 封包的連線; -u :僅列出 UDP 封包的連線; -l :僅列出有在 Listen (監聽) 的服務之網路狀態; -p :列出 PID 與 Program 的檔名; -c :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示; 範例一:列出目前的路由表狀態,且以 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 # 其實這個參數就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦! 範例二:列出目前的所有網路連線狀態,使用 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 ......(底下省略)...... |
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
Proto:該連線的封包協定,主要為 TCP/UDP 等封包;
: the package agreement for the connection, mainly a package such as TCP/UDP;
Recv-Q:非由使用者程式連接所複製而來的總 bytes 數;
: total bytes not copied by user program connection;
Send-Q:由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數, 意指主動連線 SYN 或其他標誌的封包所佔的 bytes 數;
Send-Q: total bytes from remote host but not ACK tags, meaning bytes belonging to the main connection SYN or other seal envelopes;
Local Address:本地端的位址,可以是 IP (-n 參數存在時), 也可以是完整的主機名稱。如上表我們看到的 IP 格式有兩種,一種是 IPv4 的標準, 亦即是四組十進位的數字後面加上冒號『:』後,接著 port number 。一種是 IPv6 , 前面的 IP 加上很多冒號『:』的格式。我們可以由這個顯示的資料看出這個服務是開放在哪一個介面, 例如上表當中, port 22 是開放在 0.0.0.0 ,亦即是所有介面都可以連到 port 22 , 至於 port 53 則僅開放在本機的 127.0.0.1 這個介面而已,所以是不對外部介面開放的意思。
LocalAddress: The address at the local level can be IP (-n parameter exists) or a full hostname. As we see in the above table, there are two types of IP formats, one of which is the IPv4 standard, that is, the number after the four sets of deciles, that is to say, the number after which the port number follows. > > > > > > > > > > > > >. An IPv6, the IP in front with many colons < > > >. From this data we can see where the service is being placed, e.g. in the above table, that the port 22 is 0.0.0. > > >, which means that all the interfaces can be connected to the port 22, and then to the port 53, which is only 127.0.0.1 >.
Foreign Address:遠端的主機 IP 與 port number
: remote host IP and port number
stat:狀態列,主要的狀態含有:
: status bar with main status containing:
ESTABLISED:已建立連線的狀態;
: state of connection established;
SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
SYN_SENT: A connection package for the launch of the main link (SYN logo);
SYN_RECV:接收到一個要求連線的主動連線封包;
SYN_RECV: Received a main connection package requesting a connection;
FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
FIN_WAIT1: The slot service (socket) has been disabled and the connection is being disconnected;
FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
FIN_WAIT2: The connection is disabled but awaiting confirmation of the host's message;
TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
TIME_WAIT: The connection has been suspended but socket is still waiting to end online;
LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
LISTEN span>: A listening port usually used in service!
範例三:秀出目前已經啟動的網路服務 [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 # 上面最重要的其實是那個 -l 的參數,因為可以僅列出有在 Listen 的 port |
範例四:觀察本機上頭所有的網路連線狀態 [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 |
至於傳統的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機上運作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機上運作而已嗎?那何必啟動網路的 port 呢?當然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網路伺服器,由於很多動作都是在本機上頭來完成的, 所以以會佔用很多的 Unix socket 喔!
例題一:請說明服務名稱與 port number 的對應在 Linux 當中,是用那個檔案來設定對應的? 答:
|
host
[root@linux ~]# host [-a] hostname [server] 參數: -a :列出該主機詳細的各項主機名稱設定資料 [server] :可以使用非為 /etc/resolv.conf 的 DNS 主機來查詢。 範例一:列出 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 |
nslookup
[root@linux ~]# nslookup [-query=[type]] [hostname|IP] 參數: -query=type:查詢的類型,除了傳統的 IP 與主機名稱對應外,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 的主機名稱 [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. |
遠端連線指令:
telnet
[root@linux ~]# telnet [host|IP] [port] 範例一:連結到成大夢之大地這個 BBS 站 [root@linux ~]# telnet bbs.dorm. bbs.ccns. ⊙ 夢之大地 逼逼ㄟ四 ⊙ 140.116.250.3 [DreamBBS Ver.040223] 歡迎光臨【 夢之大地 逼逼ㄟ四 】。系統負載:0.16 0.16 0.16 [負載正常] ╭─┼────┼─╮ ╭╮ ┌┤夢之大地├─────────┐ ╭──┬──┬──╮╭───┴┴──┬╮ │ │ ╰──┴──┴──╯ │ │ 夢之大地由 │ ╭────────╮ ╭─╯ │ 【電腦網路愛好社?CCNS】 │ ╭───┬───╮ ╭──╯ │ 維護管理 │ │ │ ╭─╯ │ │ ╰───┴───╯ ╰┴───────╯ └─────────┤By BenHe├┘ ┌┤本站站長群├────────┐ ╭ ╭ ╭ ╮ │站長: billcho │ ╭───┼────╮╭─┼─╭┼──┼╮ │系統: cat │ │ │ │ ││ │站務: muwell ianwolf │ ╭╯╮ │ │ ││ │ renn999 GG │ ╭╯ ╰╮ │ │ │╯ │ │ ╭╯ ╰╮ │╭ │ └───────────────┘ ╰╯ ╰─╯╰─┴╯ ╰───╯ 參觀用帳號:guest,申請新帳號:new。目前線上人數 [2183/5000] 人。 請輸入代號: |
除了連結到伺服器以及連結到 BBS 站之外, telnet 還可以用來連結到某個 port (服務) 上頭吶! 舉例來說,我們可以用 telnet 連接到 port 110 ,看看這個 port 是否有正確的啟動呢?
範例二:偵測本機端的 110 這個 port 是否正確啟動? [root@linux ~]# telnet localhost 110 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused # 如果出現這樣的訊息,代表這個 port 沒有啟動或者是這個連線有問題, # 因為您看到那個 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. |
ftp
[root@linux ~]# ftp [-p] [host|IP] [port] 參數: -p :啟動被動式模式 (passive, PASV); 範例一:連線到義守大學去看看 [root@linux ~]# ftp ftp.isu.edu.tw Connected to ftp.isu.edu.tw (140.127.177.17). 220-歡迎光臨義守大學檔案伺服器 220- 220-本站提供以下軟體可供下載: 220-******************************************************************************* 220-/pub/BeOS/ BeOS 作業系統 220-/pub/Linux/ Linux 作業系統 ....(其他省略).... 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 當中 ftp> dir <==顯示遠端主機的目錄內容 ftp> get file <==下載 file 這個檔案 ftp> mget file <==下載 file 這個目錄或檔案 ftp> put file <==上傳 file 這個檔案到伺服器上 ftp> delete file <==刪除主機上的 file 這個檔案 ftp> mkdir dir <==建立 dir 這個目錄 ftp> lcd /home <==切換『本地端主機』的工作目錄 ftp> passive <==啟動或關閉 passive 模式 ftp> binary <==資料傳輸模式設定為 binary 格式 |
登入 FTP 主機後,就能夠使用 ftp 軟體的功能進行上傳與下載的動作, 幾個常用的 ftp 內指令如上表,不過,鳥哥建議您可以連到大學的 FTP 網站後, 使用 help (或問號 ?) 來參考可用的指令,然後嘗試下載以測試使用一下這個指令吧! 這樣以後沒有瀏覽器的時候,你也可以到 ftp 下載了呢!不錯吧! ^_^
另外,如果由於某些理由,讓你的 FTP 主機的 port 開在非正規的埠口時, 那你就可以利用底下的方式來連接到該部主機喔!
[root@linux ~]# ftp hostname 318 # 假設對方主機的 ftp 服務開啟在 318 這個 port 啊! |
lftp
[root@linux ~]# lftp [-p port] [-u user[,pass]] [host|IP] 參數: -p :後面可以直接接上遠端 FTP 主機提供的 port -u :後面則是接上 帳號與密碼 ,就能夠連接上遠端主機了 如果沒有加帳號密碼, lftp 預設會使用 anonymous 嘗試匿名登入 範例一:利用 lftp 登入義守大學 [root@linux ~]# lftp ftp.isu.edu.tw lftp ftp.isu.edu.tw:~> # 瞧!一下子就登入了!很快樂吧! ^_^ |
gaim
圖一、gaim 使用範例圖
在輸入你的帳號與密碼,並選擇相對應的即時通訊伺服器 (如 MSN 或 Yahoo 即時通) ,就可以進入到如下畫面:
圖二、gaim 使用範例圖
若一切都沒有問題後,按下『登入』嘿嘿~您就可以在 Linux 上頭使用即時通訊軟體啦!方便的很哩! ^_^
文字介面網頁瀏覽
lynx
[root@linux ~]# lynx [options] [website] 參數: options 指的是一些慣用的參數,可以使用 man lynx 查閱,常見的有: -anonymous :預設使用匿名登入; -assume_charset=big5 :設定預設的語系資料為 big5 ,用在中文網頁很方便 範例一:瀏覽 Linux kernel 網站 [root@linux ~]# LANG=zh_TW.big5 [root@linux ~]# lynx http://www. |
圖三、lynx 使用範例圖
在特殊字體的部分是我們可以使用 <tab> 按鍵來進行『超連結』的按鈕啦~而上圖最底下一行則顯示出一些熱鍵, 你可以按上述的熱鍵來參考一些常見的指令功能。不過有些地方您還是得要知道才行:
進入畫面之後,由於是文字型態,所以編排可能會有點位移!不過不打緊!不會影響我們看咚咚!
When you get into the screen, because of the type of text, the layout may be a little bit different. But it doesn't matter. It won't affect our view of the bang!
這個時候可以使用『上下鍵』來讓游標在上面的選項當中(如信箱、書籤等等的),按下 Enter 就進入該頁面
At this point, you can use the Top and Bottom button to get the cursor in the selection above (e.g. mailboxes, bookmarks, etc.), press Enter to enter the page.
可以使用『左右鍵』來移動『上一頁或下一頁』
You can use the right and left buttons to move the upper page or the next one.
可以藉由修改 /etc/lynx.cfg 來設定顯示的字元編碼 (台灣地區可以選擇 Big5 編碼)
The character encoding shown can be set by modifying /etc/lynx.cfg (Taiwan region selects Big5 encoding)
其他的設定可以使用上面的範例當中,最底下那一行的說明喔!
Other settings can be used in the example above, in the bottom line.
一些常見功能:
Some common features:
上 :移動游標至本頁中 "上一個可連結點" .
Top: Move cursor to &quat; previous link &quat;.
下 :移動游標至本頁中 "下一個可連結點" .
Down: Move cursor to &quat on this page; next connecting point &quat;.
左 :back. 跳回上一頁.
Left:back. Jump back to the previous page.
右 :進入反白游標所連結之網頁.
Right: Enter the web link of the inverted cursor.
ENTER 同 "右" 鍵.
ENTER with &quat; Right &quat; Key.
h:Help, 求助功能. 線上說明書.
h: Help, help function. Online help.
g:Goto URL, 按 g 後輸入網頁位址(URL) 如:http://wwwhttp://www.360doc.com/content/07/0413/17/等
g: Goto URL, press g to enter web address (URL) at http://www.360doc.com/content/07/0413/17/ et al.
d:download, 下載檔案.
d:download, download file.
q:Quit, 跳離 lynx !
q: Quit, jump away from lynx!
Ctrl+C :強迫切斷 lynx 的執行.
Ctrl+C: Strength and urgency of lynx execution.
方向鍵:
Direction keys:
[root@linux ~]# cd /usr/share/doc/samba-3.0.10/htmldocs [root@linux htmldocs]# lynx index.html |
圖四、lynx 使用範例圖
當然啦!因為您的環境可能是在 Linux 本機的 tty1~tty6 ,所以無法顯示出中文, 這個時候你就得要設定為:『LANG=en_US』之類的語系設定才行喔! 而如果你常常需要瀏覽中文語系的網頁,那就可以直接修改設定檔,例如 /etc/lynx.cfg 這個檔案內:
[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://somehttp://www.360doc.com/content/07/0413/17/web.php?name=user&password=pw > testfile |
wget
[root@linux ~]# wget [option] [網址] 參數: 若想要連線的網站有提供帳號與密碼的保護時,可以利用這兩個參數來輸入喔! --http-user=usrname --http-password=password --quiet :不要顯示 wget 在抓取資料時候的顯示訊息 更多的參數請自行參考 man wget 吧! ^_^ 範例一:請下載 2.6.17 版的核心 [root@linux ~]# wget > http://wwwhttp://www.360doc.com/content/07/0413/17/pub/linux/kernel/v2.6/linux-2.6.17.tar.gz --16:06:10-- http://wwwhttp://www.360doc.com/content/07/0413/17/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 |
[root@linux ~]# vi /etc/wgetrc #http_proxy = http://proxy.:18023/ <==找到底下這幾行,大約在 78 行後; #ftp_proxy = http://proxy.:18023/ #use_proxy = on # 將他改成類似底下的模樣,記得,你必須要有可接受的 proxy 主機才行! http_proxy = http://proxy.:3128/ use_proxy = no |
封包擷取功能
tcpdump
[root@linux ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數] [-Ae] [-qX] [-r 檔案] [所欲擷取的資料內容] 參數: -nn:直接以 IP 及 port number 顯示,而非主機名與服務名稱 -i :後面接要『監聽』的網路介面,例如 eth0, lo, ppp0 等等的介面; -w :如果你要將監聽所得的封包資料儲存下來,用這個參數就對了!後面接檔名 -c :監聽的封包數,如果沒有這個參數, tcpdump 會持續不斷的監聽, 直到使用者輸入 [ctrl]-c 為止。 -A :封包的內容以 ASCII 顯示,通常用來捉取 WWW 的網頁封包資料。 -e :使用資料連接層 (OSI 第二層) 的 MAC 封包資料來顯示; -q :僅列出較為簡短的封包資訊,每一行的內容比較精簡 -X :可以列出十六進位 (hex) 以及 ASCII 的封包內容,對於監聽封包內容很有用 -r :從後面接的檔案將封包資料讀出來。那個『檔案』是已經存在的檔案, 並且這個『檔案』是由 -w 所製作出來的。 所欲擷取的資料內容:我們可以專門針對某些通訊協定或者是 IP 來源進行封包擷取, 那就可以簡化輸出的結果,並取得最有用的資訊。常見的表示方法有: ‘host foo‘, ‘host 127.0.0.1‘ :針對單部主機來進行封包擷取 ‘net 192.168‘ :針對某個網域來進行封包的擷取; ‘src host 127.0.0.1‘ ‘dst net 192.168‘:同時加上來源(src)或目標(dst)限制 ‘tcp port 21‘:還可以針對通訊協定偵測,如 tcp, udp, arp, ether 等 還可以利用 and 與 or 來進行封包資料的整合顯示呢! 範例一:以 IP 與 port number 捉下 eth0 這個網路卡上的封包,持續 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 之後結束 6680 packets captured <==捉下來的封包數量 14250 packets received by filter <==由過濾所得的總封包數量 7512 packets dropped by kernel <==被核心所丟棄的封包 |
01:33:40.41:這個是此封包被擷取的時間,『時:分:秒』的單位;
01:33:40.41 : This is the time when the package was taken, 'Clock: minutes: seconds' unit;
IP:透過的通訊協定是 IP ;
: The communication protocol is defined as IP;
192.168.1.100.22 > :傳送端是 192.168.1.100 這個 IP,而傳送的 port number 為 22,您必須要瞭解的是,那個大於 (>) 的符號指的是封包的傳輸方向喔!
192.168.1.100.22 & gt; : The sender is 192.168.1.1.100 of this IP and the sender port number is 22. You must understand that the symbol larger than (>) refers to the transfer direction of the package!
192.168.1.11.1190:接收端的 IP 是 192.168.1.11, 且該主機開啟 port 1190 來接收;
192.168.1.1190: the recipient's IP is 192.1681.1.11 and the host opens port 1190 to receive;
P 116:232(116):這個封包帶有 PUSH 的資料傳輸標誌, 且傳輸的資料為整體資料的 116~232 byte,所以這個封包帶有 116 bytes 的資料量;
P 116:232(116): This package contains PUSH data transfer signs and the transferred data is 116~232 byte of whole data, so the package contains 116 bytes data volume;
ack 1 win 9648:ACK與 Window size 的相關資料。
ack 1 win 9648: ACK and Windows size.
再來,一個網路狀態很忙的主機上面,你想要取得某部主機對你連線的封包資料而已時, 使用 tcpdump 配合管線命令與正規表示法也可以,不過,畢竟不好捉取! 我們可以透過 tcpdump 的表示法功能,就能夠輕易的將所需要的資料獨立的取出來。 在上面的範例一當中,我們僅針對 eth0 做監聽,所以整個 eth0 介面上面的資料都會被顯示到螢幕上, 不好分析啊!那麼我們可以簡化嗎?例如只取出 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 |
我們先在一個終端機視窗輸入『 tcpdump -i lo -nn 』 的監聽,
We first enter the "tcpdump-i lo-nn" bug in a terminal window.
再另開一個終端機視窗來對本機 (127.0.0.1) 登入『ssh localhost』
Open another terminal window to access (127.0.1) to "sh 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 行顯示的是『來自 client 端,帶有 SYN 主動連線的封包』,
Line 3 shows "a package with SYN main connection from the client end",
第 4 行顯示的是『來自 server 端,除了回應 client 端之外(ACK),還帶有 SYN 主動連線的標誌;
Line 4 shows 'from the server'end with a sign with the SYN main connection, in addition to responding to the clitend (ACK);
第 5 行則顯示 client 端回應 server 確定連線建立 (ACK)
Line 5 shows clit response server confirmed connection creation (ACK)
第 6 行以後則開始進入資料傳輸的步驟。
After line 6, the process of data transfer begins.
更神奇的使用要來啦!如果我們使用 tcpdump 在 router 上面監聽『明碼』的傳輸資料時, 例如 FTP 傳輸協定,你覺得會發生什麼問題呢? 我們先在主機端下達『 tcpdump -i lo port 21 -nn -X 』然後再以 ftp 登入本機,並輸入帳號與密碼, 結果你就可以發現如下的狀況:
[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 監聽,所以執行 tcpdump 時網路介面會啟動在 『錯亂模式 (promiscuous)』,所以你會在 /var/log/messages 裡面看到很多的警告訊息, 通知你說你的網路卡被設定成為錯亂模式!別擔心,那是正常的。 至於更多的應用,請參考 man tcpdump 囉!
例題:如何使用 tcpdump 監聽 (1)來自 eth0 介面卡且 (2)通訊協定為 port 22 ,(3)目標來源為 192.168.1.100 的封包資料? 答:
|
ethereal
啟動的方法很簡單,你必須要在 X Window 底下,先開啟一個終端機,然後直接輸入 ethereal 後, 就會出現如下的畫面了:
圖五、ethereal 使用範例圖
簡單的作法,你可以點選如上圖顯示的那個按鈕,會出現挑選監聽的介面視窗,如下所示:
圖六、ethereal 使用範例圖
你應該選擇要監聽的介面,在這裡因為是測試用的,所以鳥哥使用的是 lo 這個內部介面, 你當然應該要選擇你自己的網路介面才是。然後按下 start 後,就會出現開始偵測的畫面了:
圖七、ethereal 使用範例圖
在這個畫面當中你可以看到很多類型的封包協定,在等你處理完畢後,就可以按下『stop』結束監聽, 而開始進入如下的封包分析畫面。
圖八、ethereal 使用範例圖
封包分析畫面共分為三大區塊,如上圖所示,第一區塊主要顯示的是封包的標頭資料, 內容就有點類似 tcpdump 的顯示結果,第二區塊則是詳細的表頭資料, 包括訊框的內容、通訊協定的內容以及 socket pair 等等資訊。 第三區塊則是 16 進位與 ASCII 碼的顯示結果。透過這個 ethereal 您就可以一口氣得到所需要的所有封包內容啦! 而且還是圖形介面的,很方便吧!透過在第一區塊選擇不同的封包,就能夠查閱每個封包的資料內容囉!
nc, netcat
[root@linux ~]# nc [IP|host] [port] [root@linux ~]# nc -l -p [port] 參數: -l :作為監聽之用,亦即開啟一個 port 來監聽用戶的連線; -p :開啟的這個 port number 範例一:連接本地端的 port 25 查閱相關訊息 [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 |
範例二:啟動一個 port 來監聽使用者的連線要求 [root@linux ~]# nc -l -p 20000 # 啟動一個 port 20000 在主機上,如果此時使用 netstat -tlnp # 就可以看到系統上多出來一個 port 20000 在傾聽使用者的連線喔! |
[root@linux ~]# nc localhost 20000 <==這裡可以開始輸入字串了! |
重點回顧
修改網路介面的硬體相關參數,可以使用 ifconfig 這個指令,包括 MTU 等等;
Modify the hardware parameters of the network interface to use ifconfig, including MTU etc.;
ifup 與 ifdown 其實只是 script ,在使用時,會主動去 /etc/sysconfig/network-scripts 下找到相對應的裝置設定檔,才能夠正確的啟動與關閉;
Ifup and ifdown are actually only script, when used, the matching device configuration files will be found under /etc/sysconfig/work-scripts to be properly activated and disabled;
路由的修改與查閱可以使用 route 來查詢,此外, route 亦可進行新增、刪除路由的工作;
Routine modification and access can be searched using roote, in addition to adding and deleting routeways;
ip 指令可以用來作為整個網路環境的設定,利用 ip link 可以修改『網路裝置的硬體相關功能』, 包括 MTU 與 MAC 等等,可以使用 ip address 修改 TCP/IP 方面的參數,包括 IP 以及網域參數等等, ip route 則可以修改路由!
ip command can be used as a setup for the entire network environment, using ip Link to modify "hardware-related functions of network devices", including MTU and MAC, etc., to modify TCP/IP parameters, including IP and domain parameters, using ip route!
ping 主要是透過 ICMP 封包來進行網路環境的檢測工作,並且可以使用 ping 來查詢整體網域可接受最大的 MTU 值;
Ping is primarily a network environment check through an ICMP envelope and can use ping to query the maximum acceptable MTU value for the entire domain;
偵察每個節點的連線狀況,可以使用 traceroute 這個指令來追蹤!
Check every node's connection, and you can track this command with Traceroute!
netstat 除了可以觀察本機的啟動介面外,還可以觀察 Unix socket 的傳統插槽介面資料;
Netstat, in addition to viewing the start-up interface, also has access to the traditional Unix slot interface;
host 與 nslookup 預設都是透過 /etc/resolv.conf 內設定的 DNS 主機來進行主機名稱與 IP 的查詢;
Host and nsookup defaults to query the hostname and IP via the DNS host set in /etc/resolv.conf;
lftp 可以用來匿名登入遠端的 FTP 主機;
lftp can be used to log in anonymously to a remote FTP host;
telnet 不只用來進行 BBS 的登入,也可以用來作為某些埠口的連線測試;
Telnet is used not only to log in to BBS, but also as a link test for certain ports;
lynx 主要的功能是『瀏覽』,包括本機上 HTML 語法的檔案, wget 則主要在用來下載 WWW 的資料;
The main function of lynx is "browsing", including HTML files on this server, while wget is mainly used to download WWW data;
擷取封包以分析封包的流向,可使用 tcpdump ,至於圖形介面的 ethereal 則可以進行更為詳細的解析。
The tcpdump can be used to extract the package to analyse its flow, while the etheal of the graphical interface can be interpreted in more detail.
透過 tcpdump 分析三向交握,以及分析明碼傳輸的資料,可發現網路加密的重要性。
The importance of network encryption can be found through tcpdump analysis of triangulation, as well as analysis of data transferred by code.
nc 可用來取代 telnet 進行某些服務埠口的檢測工作,同時若自行編譯 nc 時,可額外的執行 -e 參數。
nc This can be used to replace Telnet for testing certain service ports and to perform additional -e parameters when composes nc itself.
課後練習
暫時將你的 eth0 這張網路卡的 IP 設定為 192.168.1.100 ,如何進行?
Set the IP for your eth0 network card to 192.1681.100 for the time being. How do you proceed?
ifconfig eth0 192.168.1.100我要增加一個路由規則,以 eth0 連接 192.168.100.100/24 這個網域,應該如何下達指令?
I'm going to add a route code to eth0 to 192,168,10.100/24. How do you get instructions from this domain?
route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0我的網路停頓的很厲害,尤其是連接到 tw.yahoo.com 的時候,那麼我應該如何檢查那個環節出了問題?
My network's down, especially when I get tw.yahoo.com, so how am I supposed to check that loop?
traceroute tw.yahoo.com我發現我的 Linux 主機上面有個連線很怪異,想要將他斷線,應該如何進行?
I found a weird connection on my Linux mainframe, trying to cut him off. What should we do?
以 root 的身份進行『netstat -anp |more』查出該連線的 PID,然後以『 kill -9 PID 』踢掉該連線。您如何知道 green.ev. 這部主機的 IP ?
How do you know about this host's IP?
方法很多,可以利用 host green.ev. 或 dig green.ev. 或 nslookup green.ev. 等方法找出請找出您的機器上面最適當的 MTU 應該是多少?
What should be the most suitable MTU on your machine?
請利用『ping -c 3 -M do -s MTU yourIP 』找出您的 IP 的 MTU 數值。 事實上,你還可以先以 ip 設定網路卡較大的 MTU 後,在進行上述的動作,才能夠找出網域內適合的 MTU。如何在終端機介面上面進行 WWW 瀏覽?又該如何下載 WWW 上面提供的檔案?
How do you view the WWW on the terminal interface? And how do you download the files provided on the WWW?
要瀏覽可以使用 lynx ,至於要下載則使用 wget 這個軟體。在終端機介面中,如何連接 bbs.sayya.org 這個 BBS ?
How do you connect to this BBS in the terminal interface bbs.sayya.org?
利用 telnet bbs.sayya.org 即可連接上請自行以 tcpdump 觀察本機端的 ssh 連線時,三向交握的內容
Please view the contents of the ssh on this server on your own tcpdump
請自行回答:為何使用明碼傳輸的網路連線資料較為危險?並自行以軟體將封包取出,並與同學討論封包的資訊
Please answer on your own: Why is it more dangerous to use a network connection using a code transfer?
請自行至 Internet 下載 nc(netcat) 的原始碼,並且編譯成為具有 GAPING_SECURITY_HOLE 的參數, 然後建立一條連線使用 -e /bin/bash 嘗試將本地端的 bash 丟給目的端執行 (特殊功能,可讓 client 取得來自主機的 bash)。
Please download the nc(netcat) code on your own to the Internet and compile it as a GAPING_SECURITY_HOLE parameter, and then create a connection to use -e/bin/bash to try to throw the local bash to the destination (special feature that allows the clit to get an autobash).
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论