網路伺服器應用 Linux Server Andres, Wen-Yuan Liao Department of Computer Science and Engineering De Lin Institute of Technology andres@dlit.edu.tw http://www.cse.dlit.edu.tw/~andres
Chapter 5 Linux 常用網路指令介紹 5.1 參數設定指令 5.2 網路偵錯指令 5.3 網路觀察與查詢 5.4 遠端連線使用指令 5.5 文字界面網頁瀏覽 5.6 終端機的中文顯示
5.1 參數設定指令 ifconfig ifup ifdown route interface configure 設定網路參數 interface up ifdown interface down 啟動與關閉某個網路介面卡 route 顯示/修改route table
ifconfig interface ifconfig interface [options] 參數 說明: interface :網路介面卡代號,例如 eth0, eth1... options :主要有以下幾個參數 network :網段 broadcast :廣播網段 netmask :子網路遮罩 up|down :啟動|關閉網路介面
Example [root @test /root]# ifconfig <==沒有加上網路卡時,會將所有的網路介面內容顯示出來 [root @test /root]# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 [root @test /root]# ifconfig eth0 [root @test /root]# ifconfig eth0 down <==關閉 eth0 網路卡 [root @test /root]# ifconfig eth0 up <==啟動 eth0 網路卡
eth0 :網路卡的代號 lo :內部迴圈 IP HWaddr :是網路卡的硬體位址MAC inet addr :網路卡的 IP Bcast :廣播( broadcast ) 的位址 Mask :子網路遮罩啦 MTU :Maximum Trasmission Unit 最大傳輸單元(位元組),即此介面一次所能傳輸的最大封包 RX :網路由啟動到目前為止的接收情形 TX :網路由啟動到目前為止的傳送情形 collisions :網路訊號碰撞的情況說明
route [-nee] route add [-net|-host] 目標主機或網域 [netmask] [gw|dev] route del [-net|-host] 目標主機或網域 [netmask] [gw|dev] -n :列出的資訊以 IP 來顯示 -ee :列出較長列的資訊 add :增加路由資訊 del :刪除一個路由資訊 -net :增加一個『網域』的路由 -host :增加到某個 IP 主機的路由 netmask : gw :路由的通訊閘, 以 IP 來建置 dev :路由的通訊閘, 以 介面代號來建置
Example [root @test /root]# route <==看路由的資訊! Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.141.253 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0
Example [root @test /root]# route -n <==以 IP 的方式來顯示路由! Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.141.253 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0
Destination:目標,可以是 IP 也可以是網域, 沒有規定到的,則是以 default 來表示 Gateway :該目標要經由哪一個網關傳送 Genmask :就是該 Destination 的 netmask Flages :旗標: U (route is up):該路由已經啟動 H (target is a host):目標是一個主機( IP ) G (use gateway):用來作為 gateway 的設定 Iface :該設定使用的 interface 為何?
Example route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0 route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 140.116.141.253 * 255.255.255.255 UH 0 0 0 ppp0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 <== 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 140.116.141.253 0.0.0.0 UG 0 0 0 ppp0
Example [root @test /root]# route del -net 192.168.0.0 netmask 255.255.255.0 dev eth0 <==刪除一個路由 [root @test /root]# route add default gw 192.168.1.2 <==增加一個 default gateway
5.2 網路偵錯指令 ping 送一個 ICMP 的封包給某部主機 traceroute 查詢連接到某部主機時,每個節點的連線速度
5.3 網路觀察與查詢 netstat host 顯示主機名稱( domain name ) nslookup 查詢主機名稱對應的 IP
netstat [-r] [-i interface] netstat [-antulp] -r :顯示出 route -i :顯示出 interface 的內容,跟 ifconfig 類似 -a :顯示出目前所有的網路連線狀態 -n :預設情況中,顯示出的 host 會以 host name 來顯現,若為 n 則可以使 port 與 host 都以數字顯示 -t :僅顯示 tcp 封包的連線行為 -u :僅顯示 udp 的封包連線狀態 -l :僅顯示 LISTEN 的內容 -p :同時顯示此一連線的 PID (注意:只有 root 才能行使此功能!)
Example [root @test /root]# netstat -r [root @test /root]# netstat -i eth0 [root @test /root]# netstat -an <==顯示所有的連線狀態,並且以數字型態顯示 [root @test /root]# netstat -anp | more [root @test /root]# netstat -a | more [root @test /root]# netstat -an | more
Example netstat -tul <==顯示 LISTEN 的及 tcp 與 udp 的連線狀態 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:pop3 *:* LISTEN tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:smtp *:* LISTEN udp 0 0 *:netbios-ns *:*
Proto: Local Address Foreign Address state: 通訊協定: tcp , udp 本地端的 IP 與 Port 號 如果 /etc/services 存在對應服務名稱,就以服務名稱顯示 Foreign Address 監聽哪一個地區與 port state: LISTEN :亦即監聽狀態中的 port ESTABLISHED:已建立連線的連線情況 TIME_WAIT:該連線在目前已經是等待的狀態
host [-a] domain_name 參數說明: -a :顯示出所有的資訊 範例: [root @test /root]# host tw.yahoo.com <==僅顯示出主機的 IP tw.yahoo.com. has address 202.1.237.21
Example [root @test /root]# host -a tw.yahoo.com <==所有的主機資訊顯示 yahoo.com. 213 IN NS NS1.yahoo.com. yahoo.com. 213 IN NS NS2.yahoo.com. yahoo.com. 213 IN NS NS3.yahoo.com. yahoo.com. 213 IN NS NS4.yahoo.com. yahoo.com. 213 IN NS NS5.yahoo.com. NS1.yahoo.com. 88153 IN A 66.218.71.63 NS2.yahoo.com. 42259 IN A 209.132.1.28 ……
nslookup [domain_name|IP nslookup tw.yahoo.com <==由 domain name 查詢 IP …… Server: 163.28.112.1 Address: 163.28.112.1#53 Non-authoritative answer: Name: tw.yahoo.com Address: 202.1.237.21
Example nslookup 202.1.237.21 <==由 IP 查詢 domain name …… Server: 163.28.112.1 Address: 163.28.112.1#53
5.4 遠端連線使用指令 telnet ftp ncftp Remote login File Transfer Protocol
telnet [-8] [host|IP] [port] 參數說明: -8 :可以減少亂碼的情況 port:服務的埠口, 例如 POP3 的 110 ,SMTP 的 25 port 等等
Example telnet localhost 110 <==偵測本機端的 110 這個 port 是否有啟動 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused [root @test /root]# telnet localhost 110 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. +OK POP3 pc510 v2000.70rh server ready quit <==輸入離開的指令為 quit +OK Sayonara <==哈哈!還告訴你日本話『紗呦那哪』 Connection closed by foreign host.
ftp [-p] host [port] 參數說明: -p :啟動 PASSIVE 模式 範例: [root @test /root]# ftp localhost <==預設是以 port 21 來進行連線 [root @test /root]# ftp localhost 1354 <==ftp 的 port 非正規的 21
Example [root @test /root]# ftp localhost <==連接到遠端主機 …… ftp> dir <==顯示遠方主機的內容 ftp> cd <==變換遠端主機的目錄 ftp> close or bye or exit <==離開遠端主機 ftp> get file <==取得遠端主機的檔案 ftp> mget file <==取得所有的檔案
Example ftp> put file <==將本地端檔案 file 丟到遠端主機上 ftp> mput file <==與 mget 差不多意思 ftp> delete file <==殺掉遠端主機的 file 檔案 ftp> help <==顯示求救指令 ftp> mkdir dir <==在遠端主機上面建立目錄 ftp> lcd <==變換本地端路徑 ftp> ascii or binary <==以 ASCII 模式或 binary 模式
ncftp [host] ncftp [ftp://domain.name/path] [root @test /root]# ncftp ftp.nsysu.edu.tw [root @test /root]# ncftp ftp://ftp.nsysu.edu.tw/Linux …… Anonymous access granted, restrictions apply. Logged in to ftp.nsysu.edu.tw. Current remote directory is /pub/Linux. ncftp /pub/Linux > <==直接進入畫面囉不需要輸入帳號與密碼 ncftp /pub/Linux > cd Redhat <==變換目錄 ncftp /pub/Linux > dir <==顯示目前目錄下的檔案與目錄資訊 ncftp /pub/Linux > get file1 <==將 file1 的資料存到本地端
遠端主機的一些服務指令 ncftp /pub/Linux > get -z file1 file2 <==將 file1 存到本地端時改檔名為 file2 ncftp /pub/Linux > get -A file1 file2 <==將 file1 以累積的方式(append)增加到 file2 這個檔案 ncftp /pub/Linux > pub file <==將檔案由本地端上傳至遠端 ncftp /pub/Linux > rename file1 file2 <==將遠端的主機之 file1 更名為 file2 ncftp /pub/Linux > rm file <==刪除檔案 ncftp /pub/Linux > rmdir directory <==刪除目錄 ncftp /pub/Linux > mget directory <==可以下載整個目錄的資料
本地端主機的一些服務指令 ncftp /pub/Linux > lcd <==變更本地端目前所在的目錄 ncftp /pub/Linux > lls <==顯示目前本地端所在目錄的檔案與目錄資訊 ncftp /pub/Linux > lmkdir <==在本地端建立目錄 ncftp /pub/Linux > lpwd <==顯示目前本地端主機的所在目錄 ncftp /pub/Linux > lrm <==刪除本地端的檔案 ncftp /pub/Linux > lrmdir <==刪除本地端的『目錄』