伺服器架設篇 - RedHat 9

第五章、Linux 常用網路指令介紹

目前我們用在網路方面的指令有哪些呢?如何遠端連線控管主機呢?如何以文字界面來瀏覽呢?

最近更新時間: 2003/09/19

本文資料主要針對 RedHat 9 的系統進行說明,要注意的是,RedHat 9 與 Red Hat Enterprise Linux (RHEL) 是完全不同的東西!RedHat 9 在 2003 年推出,在 2004 年就不再維護了!這部份網站更新到 2005 年,也沒有再維護過! 因此,建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 RedHat 9 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!
Linux 的網路功能相當的強悍,一時之間我們也無法完全的介紹所有的網路指令,這個章節主要的目的在介紹一些常見的網路指令而已。至於每個指令的詳細用途將在後續伺服器架設時,依照指令的相關性來進行說明。當然,在這個章節的主要目的是在於將所有的指令彙整在一起,比較容易瞭解啦!

網路參數設定指令

    要連上 Internet ,那麼 Linux 就得要好好的仔細的設定囉!我們這裡就先介紹幾個重要的網路參數設定指令:
     
      ifconfig   :設定網路參數使用的指令
      ifup,ifdown:啟動與關閉某個網路介面卡
      route      :顯示/修改路由表( route table )
     

    ifconfig
    設定網路參數使用的指令
    語法
    [root@test test]# ifconfig interface
    [root@test test]# ifconfig interface [options]
    參數說明:
    interface :網路介面卡代號,例如 eth0, eth1...
    options   :主要有以下幾個參數
       network   :網段
       broadcast :廣播網段
       netmask   :子網路遮罩
       up|down   :啟動|關閉網路介面
    範例:
    [root@test root]# ifconfig
    # 這個指令在沒有加上網路卡時,會將所有的網路介面內容顯示出來
    eth0      Link encap:Ethernet  HWaddr 00:50:FC:22:9C:57
              inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:5793395 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6032143 errors:0 dropped:0 overruns:0 carrier:0
              collisions:983 txqueuelen:100
              RX bytes:534796148 (510.0 Mb)  TX bytes:2607882970 (2487.0 Mb)
              Interrupt:10 Base address:0x6100
     
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:3258 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3258 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:170063 (166.0 Kb)  TX bytes:170063 (166.0 Kb)
     
    [root@test root]# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 \
    > broadcast 192.168.0.255
    上面再將 eth0 這個網路介面的 IP 屬性修改為 192.168.0.2 這個 IP ,廣播位址也跟著改變了!
    [root@test root]# ifconfig eth0
    # 將修改完的咚咚顯示出來一下!
    eth0      Link encap:Ethernet  HWaddr 00:50:FC:22:9C:57
              inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:5793395 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6032143 errors:0 dropped:0 overruns:0 carrier:0
              collisions:983 txqueuelen:100
              RX bytes:534796148 (510.0 Mb)  TX bytes:2607882970 (2487.0 Mb)
              Interrupt:10 Base address:0x6100
     
    [root@test root]# ifconfig eth0 down <==關閉 eth0 網路卡
    [root@test root]# ifconfig eth0 up <==啟動 eth0 網路卡!
    說明:
    ifconfig 這個東西也很好玩!尤其是您在您的網路卡尚未設定完成的時候,而且確定網路卡已經成功的驅動了之後,可以使用這個指令來驅動您的網路卡呦!另外,他的最大用處其實是來自於可以查看您的網路介面卡的參數啦!所以最常使用的就是直接輸入『 ifconfig 』或者是『 ifconfig eth0 』或者是『 ifconfig ppp0 』等等的用法!倒是不建議直接用來修改您的網路卡啦!不過,如果確定要使用 ifconfig 來修改您的網路介面卡,那麼可以參考上面的例子來修改呦!同時, ifconfig 也是用來做成『多 IP 』的主要指令呢!好了,我們來談一談上面幾個簡單的項目內容吧!
     
    • eth0 :表示為網路卡的代號;
    • lo :表示為『內部迴圈 IP 』的網路卡代號,請注意,這個內部的 interface 一定要存在!千萬不要關掉他!
    • HWaddr :是網路卡的硬體位址,就是我們在網路基礎提到的 MAC 啦!
    • inet addr :就是網路卡的 IP;
    • Bcast :是廣播( broadcast ) 的位址;
    • Mask :就是子網路遮罩啦;
    • MTU :是 Maximum Trasmission Unit 最大傳輸單元(位元組), 即此介面一次所能傳輸的最大封包,這個數值並非越大越好,也非越小越好,不過,設定錯誤時,可能會讓您的網路無法連接上某些網站呢!請參考本章後續的 MTU 說明
    • RX :網路由啟動到目前為止的接收情形;
    • TX :網路由啟動到目前為止的傳送情形;
    • collisions :網路訊號碰撞的情況說明;
    • txqueuelen :是傳輸緩衝區長度大小意思;
    • Interrupt :是 IRQ 中斷位址;
    • Base address :是 I/O 位址。這個 IRQ 與 I/O 在網路卡上面是可以設定的!設定的地方可以在 /etc/lilo.conf 裡頭來設定呢!如果您的主機上面有多張網路卡的時候,就用的著他了!可以避開問題呦!
     
    總而言之, ifconfig 也是一個很好用的指令啦!但是有一點必須要清楚的,那就是 ifconfig eth0 up 或者是 ifconfig eth0 down 可以使用 ifup eth0 或 ifdown eth0 來替代!不過有一點必須要先說明的,那就是 ifup 與 ifdown 是以 /etc/sysconfig/network-scripts/ifcfg-ethn 的檔案來進行啟動的!所以 ifcfg-eth0 必須存在才能使用 ifup !OK!底下馬上來說說 ifup, ifdown。
     

    ifup, ifdown
    啟動與關閉某個網路介面卡
    語法
    [root@test root]# ifup   [interface]
    [root@test root]# ifdown [interface]
    參數說明:
    範例:
    [root@test root]# ifup eth0   <==啟動 eth0 這塊網路卡!
    [root@test root]# ifdown eth0<==關閉 eth0 這塊網路卡
    說明:
    手動修改網路參數使用 ifconfig ,但是檔案設定的啟動與關閉就得使用 ifup 與 ifdown 囉。這兩個指令要比 ifconfig 簡單的多!不過他卻必須要有相關的檔案存在才能啟動呦!舉個例子來說,上面我們要啟動 eth0 這塊網路卡的時候,那麼您的 Linux 系統當中就必須要存在 /etc/sysconfig/network-scripts/ifcfg-eth0 這個網路介面卡的設定檔案才行!同理可證!如果要啟動 eth1 ,除了存在 eth1 這個實體網路卡之外,還要存在 ifcfg-eth1 才行!請確實瞭解呦!因為後面關於 Linux Router 的章節當中,我們提到的一張網卡多 IP 就是用這個觀念來達成的!
     

    route
    顯示/修改路由表( route table )
    語法
    [root@test root]# route [-nee]
    [root@test root]# route add [-net|-host] 目標主機或網域 [netmask] [gw|dev]
    [root@test root]# route del [-net|-host] 目標主機或網域 [netmask] [gw|dev]
    參數說明:
    -n   :列出的資訊以 IP 來顯示
    -ee   :列出較長列的資訊
    add   :增加路由資訊
    del   :刪除一個路由資訊
    -net  :增加一個『網域』的路由,例如 C Class 的網域!
    -host  :增加到某個 IP 主機的路由!
    netmask :就是 netmask 呀!
    gw    :這個是路由的通訊閘! gw  是以 IP 來建置的
    dev   :這個是路由的通訊閘! dev 是以 介面 ( internet ) 代號來建置的!
    範例:
    [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
     
    [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
    注意到 route, route -n 這兩個範例喔!使用 -n 與否會使 domain 是否進行查詢,
    一般來說,我都喜歡加上 -n 的,因為不必去查詢正反解,顯示速度較快,
    此外, default gateway 就是 0.0.0.0 喔!
     
    [root@test root]# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0 
    # 新增一個路由規則!
     
    [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 呢!
    注意一下, gw 後面接的是 IP ,而 dev 後面接的則是裝置代號喔!
    說明:
    這個指令相當的有用!尤其是新手們最容易犯錯的 gateway 設定錯誤的問題,都可以藉由這一個指令來檢查呢!這個指令有兩個主要的用途:
     
    • 顯示目前主機上面的路由資訊;
    • 修改( 增加或刪除 )主機上面的路由表!『可以建置 router 呦!』
     
    我們來談一談使用 route 時,顯示的內容意義:
     
    • Destination:目標,可以是 IP 也可以是網域!至於沒有規定到的,則是以 default 來表示!以上面為例,當我的機器要去 192.168.1.0 的時候,則以上表的 192.168.1.0 那一行的設定為主,但如果我要去 tw.yahoo.com 的時候,由於沒有規定到!所以就要以 default 的資訊為主要的路由!因此,我就會經由 140.116.141.253 這個 gateway 來傳送出去我的封包囉!
    • Gateway :該目標要經由哪一個網關傳送?就是這一個設定值啦!
    • Genmask :就是該 Destination 的 netmask 囉!例如 140.116.141.253 為 255.255.255.255 ,因為他是一個 host 而不是一個 network 呀!至於 192.168.1.0 就是 255.255.255.0 這個 C Class 囉!那如果是 default 的話,就顯示 0.0.0.0 ,也就是不論是哪裡,都出自這一個 gateway 就是了!
    • Flages :旗標,有底下幾種 Flage 呢:
      • U (route is up):該路由已經啟動了;
      • H (target is a host):目標是一個主機( IP ),例如上面範例中的 140.116.141.253 那一個;
      • G (use gateway):用來作為 gateway 的設定;
      • R (reinstate route for dynamic routing):使用動態路由時,恢復路由資訊的旗標;
      • D (dynamically installed by daemon or redirect):已經由服務或轉 port 功能設定為 動態路由;
      • M (modified from routing daemon or redirect):路由已經被修改了;
      • !  (reject route):這個路由將不會被接受(用來抵擋不安全的網域!)
    • Iface :該設定使用的網路介面為何?
     
    好了,那麼如何增加或刪除路由呢!就由上面的例子就可以知道啦!很簡單的啦!不過需要注意的是,單純有路由功能還不夠!因為還需要有 router 的功能才行!我們將在 router 那個章節再來持續談一談這個問題囉!『註:當您發現下達 route 的時候,顯示的速度很慢時,通常是您的路由資訊有一定的問題存在!果真如此的話,請務必仔細的檢查一下設定,否則對於您的網路速度會有遲滯現象呦!

一些網路偵錯指令:

    在網路的世界中,最常聽到的一句話就是:『高手求救!我的 Linux 不能上網路!』我的天吶!不能上網路的原因多的很!而要完全搞懂也不是一件簡單的事情呢!而很多的網路偵測指令其實在 Linux 裡頭已經都預設存在了,只要您好好的學一學基本的偵測指令,那麼一些朋友在告訴您如何偵錯的時候,您應該就立刻可以知道如何來搞定他囉!好了,底下我們就簡單的來談一談幾個很基本的網路常用的偵錯指令啦!要好好學習呦!
     
      ping       :送一個 ICMP 的封包給某部主機
      traceroute :調查連接到某部主機時,每個節點的連線速度
     
    底下分別來談一談先!
     

    ping
    傳送一個 ICMP 封包給某部主機
    語法
    [test@test test]# ping [-b broadcast]
    [test@test test]# ping [-c number] host
    參數說明:
    -b broadcast :當要 ping 一個網段時,可以使用這個方式來『廣播』!
    -c number    :後面加上 number (數字)可以限制 ping 幾次!
    範例:
    [test@test test]# ping -c 5 tw.yahoo.com  <==除了IP也可以 ping domain name
    PING tw.yahoo.com (202.1.237.21) from 61.28.113.1 : 56(84) bytes of data.
    64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=0 ttl=245 time=7.133 msec
    64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=1 ttl=245 time=7.497 msec
    64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=2 ttl=245 time=6.625 msec
    64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=3 ttl=245 time=6.457 msec
    64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=4 ttl=245 time=6.434 msec
     
    --- tw.yahoo.com ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max/mdev = 6.434/6.829/7.497/0.421 ms
     
    [test@test test]# ping -b 192.168.1.255 -c 2 <==這裡必須是廣播位址
    WARNING: pinging broadcast address
    PING 192.168.1.255 (192.168.1.255) from 192.168.1.254 : 56(84) bytes of data.
    64 bytes from 192.168.1.36: icmp_seq=0 ttl=255 time=191 usec
    64 bytes from 192.168.1.45: icmp_seq=0 ttl=255 time=492 usec (DUP!)
    64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=531 usec (DUP!)
     
    --- 140.116.44.255 ping statistics ---
    2 packets transmitted, 2 packets received, +6 duplicates, 0% packet loss
    round-trip min/avg/max/mdev = 0.134/0.811/2.094/0.647 ms
    說明:
    這個東西好用的很!不論在哪一個作業系統當中,他都是相當有用的網路偵錯指令!例如您要偵測一下您的網路卡是否正確的備執行了,可以使用『ping your.NIC.IP.address 』來查閱!當然囉!加上次數更好:『ping -c 5 your.NIC.IP.address 』!無論如何,這個指令一定要記得的啦!
     
    • icmp:指的是 ICMP 這個協定囉!
    • ttl:指的是 time to live 啦!當經過一個節點, ttl 就會減少一!而預設有 255 個!以上面為例,我的 Linux 主機連接到 tw.yahoo.com 共經過 10 個 gateway ,所以 ttl 剩下 245 !
     

    traceroute
    調查連接到某部主機時,每個節點的連線速度
    語法
    [root@test root]# traceroute [-i interface] [-g gateway] [host|IP]
    參數說明:
    -i :使用這個 interface 來連出去!例如 eth0, ppp0 等!
    -g :使用這個 gateway 來連出去!例如 192.168.1.2, 140.116.141.29 等!
    範例:
    [root@test root]# traceroute tw.yahoo.com
    traceroute to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets
     1  140.116.141.253 (140.116.141.253)  123.958 ms  96.357 ms  97.810 ms
     2  140.116.140.253 (140.116.140.253)  103.548 ms  87.607 ms  78.227 ms
     3  163.28.112.253 (163.28.112.253)  99.522 ms  84.379 ms  79.858 ms
     4  210.242.251.246 (210.242.251.246)  104.429 ms  86.622 ms  79.857 ms
     5  211.22.226.50 (211.22.226.50)  97.897 ms  86.031 ms  87.177 ms
     6  TaiPei-TANET-P1.BR.HiNet.NET (168.95.207.242)  101.981 ms  58.149 ms  60.231 ms
     7  168.95.17.162 (168.95.17.162)  69.198 ms  63.294 ms  58.594 ms
     8  210.65.200.10 (210.65.200.10)  65.950 ms  67.336 ms  63.503 ms
     9  211.22.35.169 (211.22.35.169)  67.572 ms  92.535 ms  83.105 ms
    10  211.22.41.89 (211.22.41.89)  106.855 ms  92.540 ms  87.201 ms
    11  alteon6.tpe.yahoo.com (202.1.237.253)  122.347 ms  92.235 ms  91.266 ms
    說明:
    這個指令相當的有用途,他可以用來判斷當一部遠端主機無法連線時候,到底封包是停頓在哪一個節點上!因為很多時候,您常常會發現『咦!網路速度怎麼變慢了?』然後自己的主機似乎沒有問題呀!這個時候就可以使用這個指令查檢查一下,是否在連線的過程當中,有些節點被擋下來了呢?!很好用的啦!不過,萬一如果出現了 *** 在 traceroute 的輸出結果中,那就表示該 router 應該有點問題吶!得趕緊向上頭報告去維修喔!

網路觀察與查詢

    在我們主機上面,您可曉得目前有多少連線被建立了?而您的主機名稱是否能夠在 Internet 上面被查詢到呢?這些都需要動用到某些網路觀察的指令。我們底下就談一談幾個簡單的觀察指令:
     
      netstat    :查閱網路資訊的指令
      host       :顯示主機名稱( domain name )
      nslookup   :調查主機名稱對應的 IP !
     

    netstat
    查閱網路資訊的指令
    語法
    [root@test root]# netstat [-r] [-i interface]
    [root@test root]# netstat [-antulp]
    參數說明:
    -r  :顯示出 route 的意思;
    -i  :顯示出 interface 的內容,跟 ifconfig 類似啦!
    -a  :顯示出目前所有的網路連線狀態!
    -n  :預設情況中,顯示出的 host 會以 host name 來顯現,若為 n 則可以使 port 與 host 都以數字顯示
    -t  :僅顯示 tcp 封包的連線行為
    -u  :僅顯示 udp 的封包連線狀態
    -l  :僅顯示 LISTEN 的內容
    -p  :同時顯示此一連線的 PID 喔!(注意:只有 root 才能行使此功能!)
    範例:
    [root@test root]# netstat -r 
    # 嘿嘿!顯示出目前的路由表!與 route 指令的功能相同。
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags MSS Window irtt Iface
    140.116.141.253 *               255.255.255.255 UH     40 0         0 ppp0
    192.168.1.0     *               255.255.255.0   U      40 0         0 eth0
    192.168.0.0     *               255.255.255.0   U      40 0         0 eth0
    127.0.0.0       *               255.0.0.0       U      40 0         0 lo
    default         140.116.141.253 0.0.0.0         UG     40 0         0 ppp0
     
    [root@test root]# netstat -i eth0 
    # 看看底下顯示出的內容,是否跟 ifconfig eth0 類似呀!?
    Kernel Interface table
    Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0   1500   077199373      0      0      169616342      0      0      0 BMRU
    lo    16436   0 1130485      0      0      0 1130485      0      0      0 LRU
     
    [root@test root]# netstat -an<==顯示所有的連線狀態,並且以數字型態顯示
    [root@test root]# 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            *:*
    注意:上面的 LISTEN 表示該 port 是已經在 監聽 網路服務啦!而左邊的 tcp 指的是 tcp 封包!
     
    [root@test root]# netstat -anp | more <==這個指令很常下達!請記得呦!
    說明:
    netstat 可是很了不起的指令,一定要學會的!尤其他可以讓我們瞭解目前的您的主機的連線狀態!與開啟的 port 有哪些!所以一定得學會才行呀!如果您分別下達:
     
    • netstat -a  | more
    • netstat -an | more
     
    一定會發現有點奇怪?怎麼有的 port 會以服務名稱(例如上面例子裡的 pop3 ...)有的會以 port 號碼來顯示呢!?嘿嘿!那就是 /etc/services 以及 -n 這個參數的用途啦!您可以發現的是,如果 netstat -a 時,顯示出來的 port 號碼在 /etc/services 存在對應的服務名稱的時候,那麼預設他就會顯示出該服務名稱啦!但是若在 /etc/services 找不到檔案的話,那麼自然就還是以 port 號碼來顯示的!那麼加上了 -n 參數後,不論如何,他都會以 port 及 IP 來顯示啦!
     
    另外,那個 -p 也很有用呦!尤其是在一些莫名其妙的連線出現時,可以用 -p 這個參數查到 PID ,然後再以利用 kill 來殺掉他呦!
     
    • Proto:指的是封包或者是通訊協定啦! tcp , udp 是常見的呦!
    • Local Address:本地端的 IP 與 Port 號,如果 /etc/services 存在對應服務名稱,就以服務名稱顯示;
    • Foreign Address :監聽哪一個地區與 port ;
    • state:狀態列就很多啦!基本的有:
      • LISTEN :亦即監聽狀態中的 port !
      • ESTABLISHED:已建立連線的連線情況
      • TIME_WAIT:該連線在目前已經是等待的狀態了!隨時有可能會斷線呦!
     
    善用 netstat 可以查得相當多的網路資訊!尤其在關閉本機的 port 時!
     

    host
    顯示主機名稱( domain name )
    語法
    [root@test root]# host [-a] domain_name
    參數說明:
    -a :顯示出所有的資訊
    範例:
    [root@test root]# host tw.yahoo.com  <==僅顯示出主機的 IP
    tw.yahoo.com. has address 202.1.237.21
     
    [root@test root]# host -a tw.yahoo.com <==所有的主機資訊顯示!
    Trying "tw.yahoo.com."
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59138
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5

    ;; QUESTION SECTION:
    ;tw.yahoo.com.                  IN      ANY

    ;; ANSWER SECTION:
    tw.yahoo.com.           370     IN      A       202.1.237.21

    ;; AUTHORITY SECTION:
    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.

    ;; ADDITIONAL SECTION:
    NS1.yahoo.com.          88153   IN      A       66.218.71.63
    NS2.yahoo.com.          42259   IN      A       209.132.1.28
    NS3.yahoo.com.          51730   IN      A       217.12.4.104
    NS4.yahoo.com.          38291   IN      A       63.250.206.138
    NS5.yahoo.com.          67985   IN      A       64.58.77.85

    Received 216 bytes from 163.28.112.1#53 in 10 ms

    說明:
    這個功能跟 nslookup 幾乎是相同的!但是 nslookup 多了較多的功能就是了!我們使用這個指令時,系統會自動去找 /etc/resolv.conf 底下設定的 DNS 的 IP,然後根據該 IP 來偵測我們所想要知道的主機對應的 IP 咯!那麼多了 -a 之後顯示出來的訊息是什麼?嘿嘿!別擔心,在我們後續的 DNS 架設當中就會提到啦!有點耐心的往下看呦!
     

    nslookup
    查詢主機名稱與 IP 的對應
    語法
    [root@test root]# nslookup [domain_name|IP]
    參數說明:
    範例:
    [root@test root]# nslookup tw.yahoo.com <==由  domain name 查詢 IP!
    Note:  nslookup is deprecated and may be removed from future releases.
    Consider using the `dig' or `host' programs instead.  Run nslookup with
    the `-sil[ent]' option to prevent this message from appearing.
    Server:         163.28.112.1
    Address:        163.28.112.1#53

    Non-authoritative answer:
    Name:   tw.yahoo.com
    Address: 202.1.237.21

    [root@test root]# nslookup 202.1.237.21 <==由 IP 查詢 domain name 
    Note:  nslookup is deprecated and may be removed from future releases.
    Consider using the `dig' or `host' programs instead.  Run nslookup with
    the `-sil[ent]' option to prevent this message from appearing.
    Server:         163.28.112.1
    Address:        163.28.112.1#53

    Non-authoritative answer:
    21.237.1.202.in-addr.arpa       name = tw.yahoo.com.

    Authoritative answers can be found from:
    237.1.202.in-addr.arpa  nameserver = ns1.yahoo.com.
    237.1.202.in-addr.arpa  nameserver = ns2.yahoo.com.
    237.1.202.in-addr.arpa  nameserver = ns3.yahoo.com.
    237.1.202.in-addr.arpa  nameserver = ns4.yahoo.com.
    237.1.202.in-addr.arpa  nameserver = ns5.yahoo.com.
    ns1.yahoo.com   internet address = 66.218.71.63
    ns2.yahoo.com   internet address = 209.132.1.28
    ns3.yahoo.com   internet address = 217.12.4.104
    ns4.yahoo.com   internet address = 63.250.206.138
    ns5.yahoo.com   internet address = 64.58.77.85

    說明:
    這個指令就如同前面的 host 提到的,就是正查反查的的指令啦!也是利用 /etc/resolv.conf 的內容來查詢的!詳細的說明請參考 DNS 伺服器設定一節喔!

遠端連線使用指令: telnet, ftp, ncftp,

    用來作為遠端連線操控自己主機的方法是什麼呢?呵呵!簡單,就是利用 telnet 囉!當然啦!這並不是很安全的方式,我們未來在後頭提到 ssh 伺服器的時候,會再跟大家報告 ssh 及 sftp 的用法囉!另外, telnet 用來連上 BBS 也是挺好用的哩!呵呵!那麼遠端傳送 DATA 自然就是使用 ftp 囉!而由於目前很多的匿名網站耶,每次都要輸入 anonymous 真的很煩!那麼就使用 ncftp 吧!很簡單使用呦!
     
    • telnet :用來連線遠端主機,當然, BBS 主機也可以連線
    • ftp    :遠端傳送資料當中,速度最快的協定之一
    • ncftp  :登入匿名主機最好用的文字介面 FTP 軟體!
     
    底下我們就談一談怎麼樣來用這些指令吧!
     

    telnet
    用來連線遠端主機,當然, BBS 主機也可以連線
    語法
    [root@test root]# telnet [-8] [host|IP] [port]
    參數說明:
    -8  :可以減少亂碼的情況
    port:服務的埠口!例如 POP3 的 110 ,SMTP 的 25 port 等等!telnet 可以用來偵測!
    範例:
    [root@test root]# telnet -8 bbs.sayya.org
    bbs.sayya.org ? SayYA Linux 資訊站 ? 140.113.22.98
    歡迎光臨【 SayYA 資訊站 】目前線上人數 [41] 人

                        【  SayYa Linux's BBS 站台  】

              一個以 Linux 消息、知識、互動服務之專業 BBS 站
     

    參觀用帳號:guest,申請新帳號:new

    請輸入代號:guest 
    # 這個是台灣最有名氣的專業 Linux BBS 站,有空多來瞧一瞧!
     
    [root@test root]# telnet localhost 110
    # 偵測本機端的 110 這個 port 是否有啟動
    Trying 127.0.0.1...
    telnet: connect to address 127.0.0.1: Connection refused
    上面是沒有開啟 port 110 的情況!所以顯示連線不成功! refused

    [root@test root]# telnet localhost 110
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    +OK POP3 test v2000.70rh server ready
    quit<==這裡輸入離開的指令為 quit 呦!
    +OK Sayonara <==哈哈!還告訴您日本話『紗呦那哪』
    Connection closed by foreign host.

    說明:
    除了連線到主機以進行遠端操控之外, telnet 最好用的地方就是在於:
     
    • 幫助您連接上去 BBS 查詢資料;
    • 幫助您測試主機端某個 埠口 的連線情況!
     
    以上面的例子來說,我們使用 telnet 就可以立刻連上 SayYa 這個專門探討 Linux 的 BBS 站台的歡迎畫面!嘿嘿!很棒吧!另外,如果您要確認本機端的 110 這個埠口是否正常時,也可以使用『 telnet + IP + port 』來偵測看看呦!很好用的工具吧! ^_^!不過,不幸的是,如果您在 Linux 終端機介面下,應該是看不到中文的啦!怎麼辦?!沒關係,我們可以加上安裝 JMCCE 這個中文套件來顯示喔!這個在本章節後面繼續說明咯。
     

    ftp
    遠端傳送資料當中,速度最快的協定之一
    語法
    [root@test root]# ftp [-p] host [port]
    參數說明:
    -p :啟動 PASSIVE 模式!
    範例:
    [root@test root]# ftp localhost     <==預設是以 port 21 來進行連線
    [root@test root]# ftp localhost 1354   
    # 如果您設定的 ftp 的 port 非正規的 21 ,則可以這樣!
     
    [root@test root]# ftp localhost  <==連接到遠端主機
    Connected to localhost (127.0.0.1).
    220 localhost FTP server (Version wu-2.6.1-20) ready.
    Name (127.0.0.1:test): test  <==輸入帳號
    331 Password required for test.
    Password: <==輸入密碼
    230 User test logged in.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> dir          <==顯示遠方主機的內容
    ftp> cd           <==變換遠端主機的目錄
    ftp> close or bye or exit <==離開遠端主機
    ftp> get file       <==取得遠端主機的檔案
    ftp> mget file       <==取得所有的檔案,較 get 好用!例如 mget .bash*
    ftp> put file       <==將本地端檔案 file 丟到遠端主機上
    ftp> mputfile       <==將一些檔案上傳咯
    ftp> delete file      <==殺掉遠端主機的 file 檔案
    ftp> help         <==顯示求救指令!
    ftp> mkdir dir       <==在遠端主機上面建立目錄
    ftp> lcd          <==變換本地端路徑!
    ftp> ascii or binary    <==以 ASCII 模式或 BINARY 模式捉取資料!?
    說明:
    這個指令是用在傳輸檔案上面相當好用的功能之一!尤其是在可匿名登入的 FTP 網站!例如中山大學的網站!用法就如同上面顯示的一般!包括各種捉取檔案的方式都寫在上頭了,可得好好的參考參考!不過,由於這個資料在傳送的時候是以明碼的方式來傳送的,所以較不安全啦!建議多以 sftp 來使用之!另外,他最大的好處是可以指定 port !當您有建立非 21 port 的時候,就可以使用這個指令加上 port 號來連線啦!
     

    ncftp
    登入匿名主機最好用的文字介面 FTP 軟體!
    語法
    [root@test root]# ncftp [host]
    [root@test root]# ncftp [ftp://domain.name/path]
    參數說明:
    可以直接連接到 host 主機,也可以直接連接到主機的某個路徑之下,相當的方便
    範例:
    [root@test root]# ncftp ftp.nsysu.edu.tw  <==連接到中山大學 FTP 站
    [root@test root]# ncftp ftp://ftp.nsysu.edu.tw/Linux
    # 直接連接到該 FTP 主機裡面的 Linux 目錄下!
    # 不過底下的畫面因為經過轉存,所以產生了亂碼~在 Putty 底下是正常的!
    NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).

    Copyright (c) 1992-2001 by Mike Gleason.
    All rights reserved.

    Connecting to ftp.nsysu.edu.tw...

      ======================================================================
      ==            ***** ????¥?°?°?¥????s?j???q?????? *****              ==
      ==      ***********   -- ???R?§?q???×???A?? --   ***********        ==
      == ********************** FTP.NSYSU.EDU.TW ************************ ==
      ==  _/_/_/_/  _/_/_/  _/_/_/   _/     _/  _/_/_/   _/_/_/   _/_/_/  ==
      ==  _/       _/    _/ _/    _/ _/_/  __/ _/    _/ _/    _/ _/    _/ ==
      ==  _/       _/    _/ _/    _/ _/ _/_/_/ _/    _/ _/       _/    _/ ==
      ==  _/_/_/_/ _/    _/ _/_/_/   _/  _/ _/ _/    _/  _/_/_/  _/_/_/_/ ==
      ==  _/       _/    _/ _/  _/   _/     _/ _/    _/       _/ _/    _/ ==
      ==  _/       _/    _/ _/   _/  _/     _/ _/    _/ _/    _/ _/    _/ ==
      ==  _/        _/_/_/  _/   _/ _/     _/  _/_/_/   _/_/_/  _/    _/ ==
      == **************  National Sun Yat Sen University  *************** ==
      ==      ***************** Computer Center ******************        ==
      ==            ***********  -- FORMOSA --  ************              ==
      ==                 ******    Ftp Server   ******                    ==
      ======================================================================
      ???h§Q¥? <A HREF="http://ftp.nsysu.edu.tw">http://ftp.nsysu.edu.tw</A>
      ======================================================================
    FTP.NSYSU.edu.tw is ready now.
    Logging in...

      ========================================================================
      o Continously file transfer protocol supported now! (Download Resum)
        (¥????????U??????)
      ========================================================================
      ???h?h§Q¥? <A HREF="http://ftp.nsysu.edu.tw">http://ftp.nsysu.edu.tw</A>
      ¥i¥H??¥????K??·j?M??????!!!!!!!!!!!!!!!!!
      Please use the search engine on the URL http://ftp.nsysu.edu.tw
      ========================================================================
      ¥??e FTP ??¥÷?? 235 ?H¥??b?u?W?A¥??e??°????? 1600 ?H
      There are currently 235 users out of 1600 possible. (Class: default)
      ======================================================================
      ADM.Email: ftpadm@cc.nsysu.edu.tw
    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     <==刪除本地端的『目錄』

    說明:
    這個指令的功能就更強大了!尤其在於使用目前網路上面允許匿名登入的 FTP 網站!例如上面提到的中山大學的 FTP 網站!您可以馬上登入他,然後立刻連線看看,就知道如何使用他啦!很好用的啦!! ^_^


文字界面網頁瀏覽: lynx, wget,

    什麼?!文字界面竟然有瀏覽器!別逗了好不好?!呵呵!誰有那個時間在逗您呦!真的啦!有這個東西,是在文字界面下上網瀏覽的好工具!分別是 lynx 及 wget 這兩個寶貝蛋,但是,您必需要確定您已經安裝了這兩個套件才行:
     
    • lynx-2.8.5-11
    • wget-1.8.2-9
     
    這兩個套件的版本在 Red Hat 9 是 2.8.5-11 及 1.8.2-9 ,至於其他版本的 linux 則不見得是後面這個版本名稱,所以不同也沒有關係!只要將原版 CD 拿出來 mount 他之後,以 rpm 安裝吧!不要說您不會呦!打屁屁!好了,假設您已經安裝好了,那麼這兩個東西分別是什麼呢?先約略的介紹一下:
     
    • lynx :用來上網的文字界面的瀏覽器!他真的很不錯用,尤其是要讓 Linux 定期捉取某個網站的網頁資料,他可是相當好用的哩!同時,如果作了部分設定,就可以直接觀看中文囉!
    • wget :以 HTTP 或 FTP 協定作用,來進行網路檔案資料的捉取的功能!這個東西也相當的好用!可以在文字界面下直接捉取 HTTP 上面的分享的檔案呦!呵呵!棒!
     
    底下我們就分別來談一談這兩個可愛的小東西吧!!
     

    lynx
    文字介面下的 WWW 瀏覽器
    語法
    [root@test root]# lynx http://web.site
    參數說明:
    範例:
    [root@test root]# lynx http://tw.yahoo.com
    tw.yahoo.com cookie: B=b7hd3jkukeu1e&b=2  Allow? (Y/N/Always/neVer) A
    # 上面輸入 A 就可以接受 cookie 了!
                                                         Yahoo!奇摩 (p1 of 5)

                         [USEMAP:yk_masthead_142.gif]

       小中~蓎胣語 9成國小偷跑   法國熱浪 死亡人數直衝5千人   南洋-
       極蘤═k性精品

       如何沖印出好照片?
       ________________________ 搜 尋
       熱門關鍵字: 國民旅遊卡 - 電腦病毒 - 金庸 - 獵人
       珍藏自拍大公開!

       【拍賣】 [auc_ani.gif]
       千元有找,美髮DIY:假髮、染髮、燙髮、洗護、造型雕
       【資訊】 新聞 - 股市 - 理財 - 氣象 - 健康 -
       電子報 - 汽車 - 手機
       【社群】 聊天 - 家族 - 摩域 - 即時通訊 - 交友 - 造型精靈
       【商務】 旅遊 - 出國 - 購物 - 開店 - 網站登錄 - 拍賣
       【我的】 信箱 - 相簿 - 沖洗 - 通訊錄 - 行事曆 - 茪H網?- MY
       【娛樂】 影?- 電影 - 絳?- 卡通 - 笑壇 - 遊戲 - 星座 - 算命
       【服務】 簡訊 - 賀卡 - 字典 - ADSL - 求職   border=0 服務總覽
       【頻道】 3C情報 - 女性時尚 - 學^文 - 房屋情報 - 減肥
       [0422_01.gif]
       [2001.jpg]
       [2002.jpg]
       [2003.jpg]
       [2004.jpg]
       >> 更多陽光肌肉男
       【寬頻服務】月費99元起再送無線滑鼠,只剩最後兩週   [bul.gif]
       現在申請
       【撥接服務】免費好禮大放送 快用撥接上網   [bul.gif]
       下載免費撥接精靈
    (NORMAL LINK)   Use right-arrow or <return> to activate.
      Arrow keys: Up and Down to move.  Right to follow a link; Left to go bac
     H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history li
     
    說明:
    1. 進入畫面之後,由於是文字型態,所以編排可能會有點位移!不過不打緊!
      不會影響我們看咚咚!
    2. 這個時候可以使用『上下鍵』來讓游標在上面的選項當中( 如信箱、書籤
      等等的 ),按下 Enter 就進入該頁面
    3. 可以使用『左右鍵』來移動『上一頁或下一頁』。
    4. 可以藉由修改 /etc/lynx.cfg 來設定顯示的字元編碼( 台灣地區可以
      選擇 Big5 編碼 )。
    5. 其他的設定可以使用上面的範例當中,最底下那一行, 
      H)elp O)ptions P)rint G)o M)ain 及 Q)uit 等等!
    6. 功能說明:
       h    :Help, 求助功能. 線上說明書.
       g    :Goto URL, 按 g 後輸入網頁位址(URL) 如:http://www.abc.edu/等
       d    :download, 下載檔案.
       q    :Quit, 跳離 lynx !
       Ctrl+C  :強迫切斷 lynx 的執行.
       方向鍵:
         上  :移動游標至本頁中 "上一個可連結點" .
         下  :移動游標至本頁中 "下一個可連結點" .
         左  :back. 跳回上一頁.
         右  :進入反白游標所連結之網頁.
         ENTER 同 "右" 鍵.

    說明:
    這個指令的最大功用就是讓我們在文字介面下使用這個瀏覽器來上 WWW 網頁啦!真的相當的好用!您可以仔細的嘗試使用看看!速度上面應該是蠻快的呦!lynx 是文字模式下最普遍也最好用的網頁瀏覽器(browser),由於 lynx 只在畫面上秀出文字及其鏈結(link)的點,透過操作簡單的方向鍵及功能鍵,便能訊速的瀏覽網頁,亦可下載檔案。
     
    另外,在台灣地區由於我們需要使用到 Big5 的編碼表,所以需要修改一下 lynx 的設定檔,亦即是 /etc/lynx.cfg 這個檔案,將底下的內容修改一下:
     
    [root@test root]# vi /etc/lynx.cfg
    .... 略 ....找到底下的三行字串
    ##CHARACTER_SET:iso-8859-1    <==大約在 394 行處
    #ASSUME_CHARSET:iso-8859-1    <==大約在 409 行處
    #PREFERRED_LANGUAGE:en      <==大約在 537 行處
     
    將上面三行的 # 符號取消,並且改成底下這樣:
    CHARACTER_SET:big5        <==這就是 Big5 中文的編碼
    ASSUME_CHARSET:big5       <==跟上面的說明一樣!
    PREFERRED_LANGUAGE:zh_TW     <==這個就是語系的支援!
    語系的支援方面,您可以查看一下 /etc/sysconfig/i18n 這個檔案,
    zh_TW 指的就是台灣!做了上面設定之後,就可以看中文囉!
    呵呵!這樣一來就可以見識到文字介面瀏覽器的龐大功能囉!您還可以參考一下底下的網址:http://freebsd.sinica.edu.tw/zh-tut/web-browse.html#LYNX
     
    此外,我們也可以使用 lynx 來進行『下載圖示』的功能呦!例如我們要下載一個檔案,則可以使用:
    [root@test root]# lynx -dump http://the.site.doname.name/xxx.gif > file.gif
    呵呵呵!就樣就 OK 啦!
     

    wget
    使用 wget 利用 FTP 及 HTTP 的協定來捉取資料!
    語法
    [root@test root]# wget http://domain.name/file
    [root@test root]# wget http://ftp.nsysu.edu.tw/Unix/Web/counter/Count2.6/Count2.6/download/src/wwwcount2.6.tar.gz
    --14:54:45--  http://ftp.nsysu.edu.tw/Unix/Web/counter/Count2.6/Count2.6/download/src/wwwcount2.6.tar.gz
               => `wwwcount2.6.tar.gz'
    Connecting to ftp.nsysu.edu.tw:80... connected!
    HTTP request sent, awaiting response... 200 OK
    Length: 433,312 [application/x-gzip]

        0K .......... .......... .......... .......... .......... 11% @ 746.27 KB/s
      50K .......... .......... .......... .......... .......... 23% @ 581.40 KB/s
      100K .......... .......... .......... .......... .......... 35% @ 909.09 KB/s
      150K .......... .......... .......... .......... .......... 47% @   1.09 MB/s
      200K .......... .......... .......... .......... .......... 59% @ 746.27 KB/s
      250K .......... .......... .......... .......... .......... 70% @ 781.25 KB/s
      300K .......... .......... .......... .......... .......... 82% @ 757.58 KB/s
      350K .......... .......... .......... .......... .......... 94% @ 704.23 KB/s
      400K .......... .......... ...                             100% @   1.13 MB/s

    14:54:46 (780.73 KB/s) - `wwwcount2.6.tar.gz' saved [433312/433312]

    說明:
    這個指令則是可以在文字介面中下載 WWW 裡面的連結檔案資料!也是相當方便的指令呢!那麼如果要使用 proxy 來下載資料呢?嘿嘿!算您聰明!沒錯!使用 Proxy 有時候確實會讓我們的下載速度變快,這個時候就需要動用的設定檔啦!我們的設定檔案放置在 /etc/wgetrc ,您可以這樣修改一下,假設您要使用成大的 Proxy 主機:http://proxy.ncku.edu.tw 而他的連接 port 為 3128 ,所以就要這樣改變囉!
     
    [root@test root]# vi /etc/wgetrc
    .... 略 ....找到底下的兩行字串
    #http_proxy = http://proxy.yoyodyne.com:18023/ <==在 75 行處
    #use_proxy = on                <==在 78 行處
     
    將上面兩行的 # 符號取消,並且改成底下這樣:
    http_proxy = http://proxy.ncku.edu.tw:3128/
    use_proxy = no
    呵呵呵!這樣一來,就有 Proxy 來支援我們的 wget 下載軟體囉!很棒吧! ^_^

終端機的中文顯示:jmcce 計畫

    或許您會覺得文字介面底下的瀏覽器也好,其他相關的 WWW 工具也好,只要牽涉到中文 ( big5 ) 編碼的問題,就會是個『頭痛的問題』。因為終端機預設狀態就是無法以中文來瀏覽啊!真是討厭~好在有我們自由軟體的前輩們的努力,現在我們只要安裝 jmcce 這個套件後,就可以在文字介面瀏覽中文了!真是太高興了!既然如此,那就來給他試看看吧!
     
    JMCCE 的官方網站在:  
    此外,您在安裝 JMCCE 之前,必須要先安裝 svgalib 這個套件才行喔! svgalib 的官方網站在:  
    因為這次的測試當中,我選擇 Red Hat 9 來進行,所以 svgalib 也可以到這個網站來下載: 下載的檔案包括了:svgalib-1.4.1-12.i386.rpm 及 svgalib-devel-1.4.1-12.i386.rpm 兩個。
     
    還有一件很討厭的事情,那就是 jmcce 目前僅支援 autoconf 2.13 以及 automake 1.4 而已,較新的版本會有問題,偏偏我們的 Red Hat 9 就是較新的版本,所以您也必須要到中山大學的 ftp 站台下載較舊的版本才行!另外,也需要 libtool 這個套件呢!目前我就是以 autoconf 2.13 、 automake 1.4 以及 libtool-1.4.2 來編譯的說!
     
    當然啦,為了避免上面的 RPM 檔案僅能夠在 Red Hat 版本上面安裝,所以我也分別在兩個網站上下載了最新的 Tarball 套件,如下所示:
     
    [root@test root]# wget http://www.svgalib.org/svgalib-1.4.3.tar.gz
    [root@test root]# wget http://jmcce.slat.org/DOWNLOAD/jmcce-1.4RC2.tar.gz
     
    我這裡使用的所有檔案您也可以在鳥哥的私房菜裡面下載:http://linux.vbird.org/download/#jmcce。然後就來安裝吧!安裝的過程相當的繁複,很討厭的啦,您必須要一個套件一個套件的安裝,而且為了不要讓我們的系統出現問題,安裝完畢之後,還需要將舊的套件移除,將原本的套件安裝回來,天吶!好麻煩~跟著我一步一步的進行吧!
     
    1. 先安裝 svgalib 
    1.1 如果以 RPM 安裝的話(較不建議):
    [root@test root]# rpm -ivh svgalib-*.rpm
    這樣就 OK 了!
     
    1.2 如果以 Tarball 安裝的話(較建議的安裝模式):
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/svgalib-1.4.3.tar.gz
    [root@test src]# cd svgalib-1.4.3
    [root@test svgalib-1.4.3]# cd utils/
    [root@test utils]# ln -s ../src/vga.h vga.h
    [root@test utils]# vi Makefile
    # 找到底下這一行( 約在第 16 行 ):
    CFLAGS = $(WARN) $(OPTIMIZE) -I../include
    # 修改成:
    CFLAGS = $(WARN) $(OPTIMIZE) -I../include -L../sharedlib
    [root@test utils]# cd ..
    [root@test svgalib-1.4.3]# make install
    [root@test svgalib-1.4.3]# cd /usr/lib
    [root@test lib]# ln -s /usr/local/lib/libvga.so.1 .
    # 會有一些錯誤訊息,不過只與 man 有關,沒有關係!先略過去!
     
    2. 再安裝 jmcce 這個套件吧!
    [root@test root]# rpm -e  libtool autoconf automake
    # 先移除一些較新的套件咯!
     
    2.1 先裝 autoconf
    [root@test root]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/autoconf-2.13.tar.gz
    [root@test src]# cd autoconf-2.13
    [root@test autoconf-2.13]# ./configure --prefix=/usr/local
    [root@test autoconf-2.13]# make && make install
     
    2.2 安裝 automake
    [root@test autoconf-2.13]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/automake-1.4.tar.gz
    [root@test src]# cd automake-1.4
    [root@test automake-1.4]# ./configure --prefix=/usr/local
    [root@test automake-1.4]# make && make install
     
    2.3 安裝 libtool
    [root@test automake-1.4]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/libtool-1.4.2.tar.gz
    [root@test src]# cd libtool-1.4.2
    [root@test libtool-1.4.2]# ./configure --prefix=/usr/local
    [root@test libtool-1.4.2]# make && make install
     
    2.4 安裝 jmcce
    [root@test libtool-1.4.2]# cd /usr/local/src
    [root@test src]# tar -zxvf /root/jmcce-1.4RC2.tar.gz
    [root@test src]# cd jmcce-1.4RC2/
    [root@test jmcce-1.4RC2]# LANG=zh_TW.Big5
    [root@test jmcce-1.4RC2]# vi /etc/sysconfig/i18n
    # 可以將他改成中文顯示喔!底下的模樣修改
    LANG="zh_TW.Big5"
    [root@test jmcce-1.4RC2]# vi genconf.sh
    # 找到這一行:
    bin_PATH="/usr/bin"
    # 將他改成:
    bin_PATH="/usr/local/bin"
    [root@test jmcce-1.4RC2]# ./genconf.sh ; ./genconf.sh
    # 這個動作要多做幾次,不然老是有一些怪怪的錯誤訊息!
    # 最後還是會出現一個錯誤訊息,就是底下的樣子:
    configure.in: 13: required file `build/ltconfig' not found
    # 不過這個訊息不會影響最後的編譯結果,所以就不要管他了!
    [root@test jmcce-1.4RC2]# ./configure --prefix=/usr \
    > --sysconfdir=/etc/chinese/jmcce
    [root@test jmcce-1.4RC2]# make && make install
     
    3. 移除暫存中間檔案,將新版套件安裝回來!
    [root@test jmcce-1.4RC2]# cd /usr/local/src/autoconf-2.13/ && make uninstall
    [root@test autoconf-2.13]# cd /usr/local/src/automake-1.4/ && make uninstall
    [root@test automake-1.4]# cd /usr/local/src/libtool-1.4.2/ && make uninstall
    # 拿出原版光碟,安裝 autoconf, automake 與 libtool 吧!
     
    這樣就安裝妥當了 jmcce 了,真的很麻煩對吧! ^_^!我就覺得很麻煩,上面的測試還僅是針對 Red Hat 9 哩,如果您的系統是非 Red Hat 的,那麼請自行依照上面的步驟安裝,並且自行依據螢幕上面出現的訊息作一些修訂的工作吧!整體流程是不變的,只是可能會比較麻煩一點點就是了。好了,開始來使用 jmcce 吧,請注意, jmcce 目前在終端機僅支援 640x480 256 色,如果您的終端機解析度與這個咚咚不同,那麼就需要設定 grub 或者是 lilo 來設定好這樣的解析度了!只要在 grub 的 /boot/grub/menu.lst 或者是 lilo 的 /etc/lilo.conf 新增一行:『vga=769』,然後依據管理程式 ( 如果是 lilo 的話,就得執行一次 lilo 讓設定生效,如果是 grub 的話,就不需要咯 ) 動作生效後,就可以重新開機 ( reboot ) 來啟動啦!在啟動之後,您可以在終端機執行底下的指令來啟用喔! (註: jmcce 不可以在 putty 或者是其他的非標準環境中使用!切記切記!)
     
    jmcce        (程式依現行 locale 自動決定繁體模式)
    jmcce -b     (手動強迫以 BIG5碼繁體中文操作)
    jmcce -g     (手動強迫以 GB碼簡體中文操作)
    jmcce -d     (僅顯示中文而不載入任何中文輸入法,繁體模式自動)
     
    CTRL-SPACE    ===> 中英切換
    CTRL-ALT-0-9  ===> 輸入法選擇
    CTRL-ALT-1    ===> 倉頡輸入法
    CTRL-ALT-2    ===> 簡易輸入法
    CTRL-ALT-3    ===> 注音輸入法 (Linux/CXterm 傳統「零壹注音輸入法」)
    CTRL-ALT-4    ===> 慈安輸入法 (方快科技關慈安先生提供,含三十萬詞彙快速輸入)
    CTRL-ALT-5    ===> 行列輸入法
    CTRL-ALT-6    ===> 英快輸入法 (方快科技提供,大幅改良的英漢輸入法)
    CTRL-ALT-7    ===> 酷音輸入法 (智慧型注音輸入)
    CTRL-ALT-8    ===> 日文拼音輸入法 (輕鬆資訊提供,可用拼音輸入所有假名與三萬漢字詞彙)
    CTRL-ALT-9    ===> 無蝦米輸入法 (只要自備合法對照表即可加掛啟動)
    CTRL-ALT-0    ===> 內碼輸入法
     
    呼呼!恭喜恭喜!成功啦!^_^!那麼怎麼關掉 jmcce 呢?您可以使用 ps -aux 找到 jmcce 之後,使用 kill 將他關閉即可,或者直接輸入 exit 就可以了!

連不上一些網站的處理方法 MTU 修改

    在網路媒體的最大傳輸單位中 ( Maximum Transmission Unit, MTU;針對一個封包的體積而言 ),其實是有受限制的!如果我們設定了最大傳輸單位超過網路媒體所能負荷的,那麼除非您的作業系統本身就支援封包重新組合,否則可能會造成封包無法傳遞的問題。此外,因為如果封包的體積與最大傳輸單位無法配合,導致封包在傳送的時候一再地進行重組,將會導致網路傳輸效能的低落喔。所以囉,我們的網路卡的 MTU 設定最好能夠針對網路介面進行最佳化,這樣才能讓網路效能變的比較好。(註:也就是說,MTU 這個數值並不是越大越好,而是要針對您的網路介面來進行最佳化)
     
    另外,如果您曾經使用 Windows 2000 作為連線分享的主機時,可能會發現在 client 端發生『總是有些網站無法順利的連接上去!但是在主機端則沒有問題!』,或者是『用戶端無法瀏覽某些網站或是無法發送內含附件的電子郵件』,這真是傷腦筋呀!其實,發生這樣的問題通常就是與 MTU 的數值不正確有關的。如何解決呢?呵呵!需要藉由修改『每一個 Client 端電腦的 MTU 來修正』才行吶。一般而言,MTU 在網路卡 (EtherNet) 的預設值為 1500 單位!至於其他的介面如下:
     
    網路介面
    MTU
    EtherNet (一般的網路介面,這也是預設值) 1500
    PPPoE(ADSL用的) 1492
    Dial-up(modem)  576
     
    由上面的表格我們可以知道,預設的網路介面 MTU 是 1500 ,那 PPPOE 使用的是 1492,自然而然的 MTU 要求並不相同,所以啦!有一些網頁、郵件資料等等的咚咚就可能會因為這樣而無法進行正確的傳送吶。那該如何解決呢? 其實只要調整 Client 端網路卡的 MTU 值即可完全解決此一問題!而且藉由調整 MTU 值也可以增進網路效率呢。 那首要課題自然就是知道您的網路卡所可以負荷的 MTU 啦!因此我們第一步就是要找到適合的 MTU 。
     

    找出 MTU 值:
     
    由於 MTU 與 Router 具有較大的關係,因此,我們通常是在 Client 端的電腦上,對我們的 Router (就是 NAT 主機,這部主機可能是 Linux 也可能是 Windows 系統喔!) 進行 MTU 數值的偵測吶。底下我們分別針對 Windows 與 Linux 進行 MTU 數值的檢測喔。(註:假設您的 Router 的 IP 為 192.168.1.2 ):
     
    • Windows 系統上的檢測:

    •  
      1. 進入 MS DOS 命令提示字元當中;

      2.  
      3. 輸入『 ping -f -l <bytes> IP』如下所示:
      4. C:\WINDOWS> ping -f -l 1500 192.168.1.2

        Pinging 192.168.1.2 with 1500 bytes of data:

        Packet needs to be fragmented but DF set.
        Packet needs to be fragmented but DF set.
        Packet needs to be fragmented but DF set.
        Packet needs to be fragmented but DF set.

        Ping statistics for 192.168.1.2:
            Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
        Approximate round trip times in milli-seconds:
            Minimum = 0ms, Maximum =  0ms, Average =  0ms

        那個 -l 是 L 的小寫,至於 bytes 則是本機送出的封包體積, IP 則是 Gateway 的 IP 。在上面的測試當中,當封包大小設定為 1500 時,結果出現了 Packet needs to be fragmented but DF set. 這個東西,意思是說,這個封包的體積大過於 MTU 能夠接受的大小,但是由於我們下達了 -f 這個參數,所以封包沒有辦法重新組合,因此就發生了錯誤了!也就是說,如果要最佳化的話,那麼 MTU 數值的設定要更小才行!OK!那麼當我們使用 1464 來測試時:
        C:\WINDOWS> ping -f -l 1464 192.168.1.2

        Pinging 192.168.1.2 with 1464 bytes of data:

        Reply from 192.168.1.2: bytes=1464 time=10ms TTL=128
        Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
        Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128
        Reply from 192.168.1.2: bytes=1464 time<10ms TTL=128

        Ping statistics for 192.168.1.2:
            Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
        Approximate round trip times in milli-seconds:
            Minimum = 0ms, Maximum =  10ms, Average =  2ms

        結果出現了回應了!這表示這一個 MTU 值是可行的!不過,強烈建議找出可行的最大 MTU 值!這樣一來,在設定的時候,才可以達到最佳的網路速率
         
      5. MTU 數值的計算:

      6. 上面我們找到的數據其實是封包的體積大小,但是每個封包還都具有標頭,這個標頭的部分佔去了 28 bytes ,所以啦,最終的 MTU 數值其實是 1464+28=1492 才對喔!
         
    • Linux 系統的檢測:

    •  
      1. 在終端機輸入『 ping -c <number> -M do -s <bytes> IP』,其中 number 是次數、<bytes>則是封包的體積。結果如下所示:
      2. [root@test root]# ping -c 3 -M do -s 1472 192.168.1.2
        PING 192.168.1.2 (192.168.1.2) from 192.168.1.13 : 1472(1500) bytes of data.
        1480 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=2.408 msec
        1480 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=2.392 msec
        1480 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=2.440 msec
         
        --- 192.168.1.2 ping statistics ---
        3 packets transmitted, 3 packets received, 0% packet loss
        round-trip min/avg/max/mdev = 2.392/2.413/2.440/0.044 ms
         
        [root@test root]# ping -c 3 -M do -s 1473 192.168.1.2
        PING 192.168.1.2 (192.168.1.2) from 192.168.1.13 : 1473(1501) bytes of data.
        ping: sendto: Message too long
        ping: sendto: Message too long
        ping: sendto: Message too long

        --- 192.168.1.2 ping statistics ---
        3 packets transmitted, 0 packets received, 100% packet loss

        呵呵!結果就可以發現數值為 1472 囉!其他的就如同前面提到的,MTU = 1472 + 28 = 1500 啦!
         
    所以要找出 MTU 值真的是不難喔!
     

    修改 MTU 值:
     
    OK!我們已經找出 MTU 值啦,那下一步自然就是修改囉!要如何修改呢?其實也是很簡單,只要透過 Windows 本身預設的 registry 修改即可!至於 Linux 則以 ifconfig 來更改吧!
     

      Windows 98:
       
      1. 在 『開始』>『執行』中,鍵入<regedit>,會出現一個大框框;

      2.  
      3. 選擇:『HKEY_Local_Machine』>『System』>『CurrentControlSet』>『Services』>『Class』>『NetTrans』>『000n』上面最後一個數據是 000n,那個 n 指的是數字,以我為例,在 NetTrans 底下有兩個數字,分別為 0000 與 0002,若按下 0000 會顯示我的 Gate Way 以及我的網路卡的 IP 項目,至於 0002 則沒有我的網路卡的相關資訊,所以 0000 那這一個就是我的網路卡介面啦!請依您的情況選擇!

      4.  
      5. 選擇您的網路卡介面後 ( 以我為例,按一下 0000 那一個機碼 ) ,按下『編輯』>『新增』,然後選擇增加『DWORD』值;

        1.  
      6. 將新增的機碼取名為『MaxMTU』,並且在新增加的那個機碼上面按右鍵,選『修改』,會出現如下畫面,選擇『十進位』後,輸入剛剛我們找到的那一個 MTU 值:

        1.  
      7. 改完之後您應該會看到如下的畫面喔!那就是成功了!
       

      Windows 2000:
       
      1. 在 『開始』>『執行』中,鍵入<regedit>,會出現一個大框框 ( 注意,也有可能是 regedit32 這個執行檔,請依您的機器來作業 );

      2.  
      3. 選擇『HKEY_Local_Machine』>『SYSTEM』>『CurrentControlSet』>『Services』>『Tcpip』>『Parameters』>『interface』,有點像下面的圖示:

        1.  
      4. 在 interface 底下可能有很多的介面,您一個一個的去看,會有一個介面與您的網路卡的 IP 相同,那個就是您要挑選的介面啦!然後同樣的在該介面上選擇『編輯』>『新增』>『DWORD值』之後,建立一個名為『MTU』的機碼,然後選右鍵『修改』,選擇十進位,填入我們剛剛找出來的 MTU 值!大功告成!
       

      Linux:
       
      在 Linux 上面的更新要簡單的多了!使用 ifconfig 加上 mtu 這個參數即可!例如:
       
      [root@test root]# ifconfig eth0 mtu 1500
       
      這樣就成功的修訂了!簡單的很吧! ^_^
     
    基本上,這樣應該已經可以解決 MTU 無法搭配的問題了!相關的網頁您可以到底下兩個網頁去看看!
    http://www.microsoft.com/taiwan/msclub/member/TIPS/Spring_2001/tip1to3/tip1to3_2.htm
     
    另外,網友有建議另一個測試 MTU 的網頁,您也可以上去瞧一瞧,不過,要上這個網頁之前,『請先將您的 代理伺服器設定 取消』否則測到的會是您的 Proxy 而不是您的 IP 喔!
    http://forums.speedguide.net:8117/

課後練習:

  • 我要增加一個路由規則,以 eth0 連接 192.168.100.100/24 這個網域,應該如何下達指令?
  • 我的網路停頓的很厲害,尤其是連接到 tw.yahoo.com 的時候,那麼我應該如何檢查那個環節出了問題?
  • 我發現我的 Linux 主機上面有個連線很怪異,想要將他斷線,應該如何進行?
  • 您如何知道 green.ev.ncku.edu.tw 這部主機的 IP ?
  • 請找出您的機器上面最適當的 MTU 應該是多少?
  • 如何在終端機介面上面進行 WWW 瀏覽?又該如何下載 WWW 上面提供的檔案?
  • 在終端機介面中,如何連接 bbs.sayya.org 這個 BBS ?

  • 前往參考用解答

參考資料

修改歷史:
2002/07/31:第一次完成日期!
2003/08/19:重新編排版面,加入 jmcce 的安裝以及 MTU 的相關說明
2003/08/20:加入課後練習去
2003/09/19:加入參考用解答咯!
2005/03/24:route 的指令參數寫錯了!已經訂正!
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計