經過這麼長的路程﹐我們到這裡才真正說要為 Linux 設定點實質上有用的東西。當然這一切都要從 Linux 的網路功能開始﹐離開了網路﹐Linux 只能是匹養在馬房裡面的良驅﹐實在提供不了任它奔馳的場所﹐英雄無用武之地﹗
設定網路卡
在前面介紹 Module 的時候﹐已經有一個網卡的設定例子了。如果您使用的是最普通的網路卡﹐如 Realtek 或 Winbond 或 NE2000 兼容卡等﹐好可能您在安裝 Linux 的時候就已經設定好了。不過﹐有時候或許您要換卡或新增網卡﹐還是要自己動手的。
下面的例子是教您如果使用 module 的形式安裝兩片 NE2000 兼容網路卡在同一機器上﹕
- 第一步要做的﹐找到兩塊卡各自的irq和io﹐確定它們沒有和其他設備衝突。如果沒有 jumper 設定的話﹐通常廠家都會提供一片軟碟供您設定資源數值的。(這裡假設第一張網卡的irq=3﹐io=300﹔第二張則irq=5﹐io=320)
- 確定 kernel 已經正確的編譯好﹐以及開機的時候成功地執行。
- 然後在/etc/lilo.conf裡面加入﹕
append="ether=3,0x300,eth0 ether=5,0x320,eth1"
|
(注意逗號之間沒有空白﹐io 的格式是0xNNN)
然後重跑 lilo。
(注﹕上面這個方式是當您把網卡驅動程式編在核心才生效)
- 如果您用模組的方式驅動網路卡﹐則要修改/etc/conf.modules﹐增加這幾行﹕
alias eth0 ne
options ne io=0x300 irq=3
alias eth1 ne1
options ne1 io=0x320 irq=5
|
然後:
cp /lib/modules/`uname -r`/net/ne.o /lib/modules/`uname -r`/net/ne1.o
|
(注意﹕這樣做是給您一個例子而已﹐目的是讓不同的 alias 對應不同的 module。如果兩張網卡都一樣的話﹐前面這個步驟可以省略﹐
只需在 /etc/conf.modules 裡面寫成如下就可以了。)﹕
alias eth0 ne
alias eth1 ne
options ne io=0x300,0x320 irq=3,5
|
- 執行 ﹕
留意錯誤信息﹐如果沒有關于以上module的錯誤﹐繼續﹐否則修改。
- 執行﹕
modprobe /lib/modules/`uname -r`/net/ne.o
modprobe /lib/modules/`uname -r`/net/ne1.o
|
(注意﹕第二行要視乎第 4 步的需要而執行)
- 如果測試成功﹐第5步和第6步可以寫到/etc/rc.d/rc.local或其他啟動檔裡面。
設定PCMCIA網卡
如果您使用的是筆記本電腦﹐要安裝 PCMCIA 網路卡恐怕不那麼容易。下面的例子這教您如何同時安裝兩張 PCMCIA 網路卡在同一台筆記本電腦上。這裡的兩張網卡型號分別是﹕Kingmax 的 PCMCIA 10MB Ethernet Card﹐另一張是 Xircom 的33.6 FAX/Modem + Ethernet Combo Card。
- 如果您的核心是按前面的例子設定的話﹐應該可以了。您只需留意的是在‘Network device support’下面選擇了 NE2000 support 就可以了﹐(或也許可以將 Pocket and protable adaptors 加進來)。
- 輸入﹕
cd /usr/src/linux/pcmcia-cs-3.1.8
|
- 執行﹕
看到‘Linux source directory [/usr/src/bs/BUILD/linux]:’的時候輸入﹕
看到‘Alternate target install directory [/var/tmp/kernel-2.2.5-15-root]:’的時候輸入﹕
看到‘System V init script layout (y/n) [n]:’的時候輸入﹕
看到‘Top-level directory for RC scripts []:’的時候輸入﹕
其它接受預設就可以了﹐除非您知道如何設定。
- 然後執行﹕
- 接下來看看在 / 下面是否有有一個目錄叫 ‘ y ’。如果有﹐那麼執行下面命令﹕
cp -rfp /y/* /lib/modules/`uname -r`/
|
- 然後請輸入 ﹕
選擇‘System services’﹐確定“[*] pcmcia”被選擇了。
- 接著執行﹕
/etc/rc.d/init.d/pcmcia start
|
如果聽到聲音(BitBit..)但沒找到io或irq﹐又或者系統回應您“PCIC not defined in rc.pcmcia!”可以一試﹕
看上去有點像這樣﹕
PCMCIA=yes
PCIC=i82365
PCIC_OPTS=poll_interval=100
CORE_OPTS=
|
- 最後執行﹕
/etc/rc.d/init.d/network start
|
(如果網路已經啟動﹐則將‘start’改成‘restart’。)
- 如果重新開機後找到io和irq﹐但沒有找到網路卡﹐可以一試﹕
mv /etc/rc.d/rc3.d/S45pcmcia /etc/rc.d/rc3.d/S09pcmcia
|
(注意﹕將S??pcmcia放在S??network之前就是了﹐但rc?.d(如 rc3.d 或 rc5.d )要選擇好﹐而且這裡先假設您的網路設定(下面就講到了)沒有錯誤。)
設定主機名稱
通常玩 Linux 都會連上網路去﹐而網路上這麼多機器﹐要區別它們﹐當然最好給每台機器一個名字啦。取名沒什麼特別規則﹐總之容易記得和不能重複就是了。
我們在“網路基礎中”討論DNS的時候知道﹐每一個連上internet的網路﹐都有著各自的domain名字。即使您沒有正式向 InteNIC 註冊﹐也應該為自己的 domain 起一個名字(除非您已現有 domain 了)。如果沒特別理由﹐儘量使用一個最不會在internet出現的domain名字﹐這樣就最大程度避免了domain 名字衝突了。在這個例子中﹐我用自己的名字拼音來做domain﹕siyongc.domain。請儘量避免用什麼xxxx.xxxx.com 等名字﹐因為那樣可能會和真正註冊了的 domain 衝突。
相信internet上面應該不至于用我的名字做domain吧﹖所以﹐我稱呼我的機器為﹕
redhat52.siyongc.domain
如果您在安裝的時候﹐有選擇網路功能﹐應該那時候已經設定好了。只要您輸入﹕
就可以看到機器名稱了。以前這個名字設定檔為﹕/etc/HOSTNAME
不過﹐在RedHat 6.0 下面﹐您還要留意這個檔案﹕/etc/sysconfig/network
在這個檔案下面﹐有一行“HOSTNAME=”的﹐就是用來指定主機名稱的了﹐如果您要變更您的主機名稱﹐可以用文書編輯器直接修改這些檔案。
然而﹐上面修改的只是一部分﹐您還得修改另外一個檔案﹕
在這個檔案裡面﹐您要確定兩個機器名稱必須指定正確﹐一個就是剛才您修改的﹐要和您分配給這台機器的IP對應著﹐另外一個名稱是﹕localhost ﹐它對應的IP一定是127.0.0.1。這是一個“本機環迴地址(loop back address)”﹐就算您的機器不安裝網路卡﹐這個名字是一定要有的。在我的機器上﹐/etc/hosts看上去是這樣的﹕
255.255.255.255 all-ones all-ones
127.0.0.1 localhost localhost.siyongc.domain
203.30.35.134 test.test.domain test
203.30.35.137 redhat52.siyongc.domain redhat52
192.168.0.4 rhroute.siyongc.domain rhroute
192.168.0.12 nt4ser2.siyongc.domain nt4ser2
192.168.0.15 pii266.siyongc.domain pii266
192.168.0.16 w2000ad.siyongc.domain w2000ad
192.168.0.17 redhat52.siyongc.domain redhat52
192.168.0.18 redhat62.siyongc.domain redhat62
192.168.0.20 dellnt266.siyongc.domain dellnt266
192.168.1.17 virtual.test virtual
|
其排列分別是﹕IP地址、主機名稱、主機別名。第一行是給DHCP 服務用的﹐您的機器如果沒有多張網路卡﹐也沒執行DHCP伺服器服務﹐不要加進這行。這裡除了‘localhost’和‘redhat52’是本機設定﹐必須要指定的﹐其他都是在網路上的別的機器和一些虛擬主機對應。如果你沒忘記在“網路基礎”中關於DNS的討論﹐應該知道這個 hosts 檔是用來對應IP地址和主機名稱的。
然後重新開機您就可以使用新的名稱了﹐但別忘了修改在別的機器上面的 hosts 檔哦。
如果您知道網路上的 DNS 伺服器 IP﹐也請修改 /etc/resolv.conf 這個檔案﹐將 DNS 主機 IP 加進去﹐如﹕
nameserver 192.168.0.17
nameserver 139.175.10.20
search siyongc.domain test.domain
|
使用netconf
其實﹐除了手工的設定檔案外﹐我們還有更好的方法來設定機器名稱﹐而且還可以指定許多網路設定呢﹕
-
您可以在文字模式下(不是在 X Window 裡面)輸入﹕netconf
- 然後選擇﹕Basic host information
- 按 Enter 之後﹐在Host name 那裡輸入您的機器名稱﹐如﹕redhat52.siyongc.domain
- 然後按向下的方向鍵(不要用 Tab 鍵)﹐跳到Config mode那裡﹐選擇 Enable 和 Manual。至於 Dhcp 和 Bootp﹐除非您確定網路上面有提供這個兩種服務﹐否則不要選擇。這裡的 Menual 是使用靜態 IP 的意思。
- 然後是Primary name + domain﹐其格式是﹕“機器名稱.網域名稱”﹐如﹕redhat52.siyongc.domain
- 在Aliases (opt) 裡面輸入機器的別名﹐我這裡使用﹕redhat52。這樣﹐如果您嫌機器名稱太長大話﹐就可以使用別名來代替機器全稱了。例如執行 ping redhat52.siyongc.domain 和 ping redhat52 是一樣的。
- 再來是IP address和Netmask﹐如﹕192.168.0.17/255.255.255.0﹐這對寶貝通常都要同時指定。如果您不清楚怎麼設定 IP 和 Mask﹐請到“網路基礎”中的“IP基礎”看看。
- 再下來是Net device﹐我們先從第一張網路卡開始﹕eth0。‘eth’就是Ethernet 的意思﹐這是我們最常見的網路類型了。而通常電腦設備都是從 0 開始排列的﹐所以 eth0 就是裝在本機的第一張 ethernet 網路卡。
- 如果您使用的網路卡是 NE2000 兼容 PCI 網路卡﹐在 Kernel module 那裡輸入 ne2k-pci 。假如您是按上面的例子裝的NE2000 兼容卡﹐則改為 ne 。無論如何﹐您必須知道您的網路卡使用什麼 module。您可以在 /lib/modules/`uname -r`/ 下面的 net 和 pcmcia 這兩個目錄中找到各種網路卡的 module。
- 如果您使用 PCI 或 pcmcia 網路卡﹐您應該不用理會I/O port (opt) 和 Irq (opt) 這個兩項。不過﹐如果您確切知道設備使用的資源是什麼﹐倒也可以指定的﹐尤其在多網路卡的情況下。
- 如果您繼續按向下的方向鍵﹐則可以設定其他的網路卡了﹐其設定項目都是一樣的。
- 當所有設備設定好之後﹐您可以按 ‘Tab’鍵跳到“Accept”鍵﹐然後按 Enter 回到上一級畫面。
- 然後按方向鍵選擇“Name serve specification (DNS)”﹐再按 Enter 。
- 首先在DNS usage那裡確定 DNS is required for normal operation 被選擇了。
- 然後輸入default domain﹐我這裡是 siyongc.domain。
- 然後是nameserver 1﹐因為我打算用本機架設 DNS 伺服器的﹐所以輸入本機 IP 地址﹕192.168.0.17 。
- 接著是nameserver 2 (opt)﹐您可以考慮將上游網路的 DNS 伺服器放這了﹐如您的 ISP 提供的 DNS。
- 如果您知道您可能還需要其他的 DNS 伺服器﹐可以將之放在nameserver 3 (opt) 那裡。
- 再來是指定 search domain 1 (opt)﹐這裡可以考慮您的上游 domain 名稱。
- 如果您的網路還連接到其他的網路去掉話﹐可以分別將之放進search domain 2 3 4.... (opt)中去。
- 如果都設定好了﹐請按Accept 鍵回到上一級畫面。
- 進入Routing and gateways﹐如果您的機器通過 router 連接上游網路的話﹐可以將預設網關寫進Default gateway裡面。假如您的機器本身用來做 router 的話﹐則指向自己的 IP 地址﹐同時將 Enable routing 選擇。不過﹐如果您只是使用接撥連線到 ISP 的話﹐則不指定任何 Default gateway。
- 完成之後按Accept。
- 如果您的網路還連接到其他網路的話﹐請一一在orther routes to networks 及其他項目指定好。如果您對 routing 設定(這非常重要)不是很清楚﹐請參考“網路基礎”。
- 至於其他項目﹐暫時不用設定。等以後講到該題目了再回來設定。
- 然後選擇Quit 。
- 如果您要設定馬上生效﹐選擇Active the changes然後 Enter。否則跳到 Quit 。
如果您上面的設定和您當初設計沒有出入﹐那麼您可以測試您的網路了﹕輸入 ifconfig 、route、和 netstat (-t -i -r) 等﹐您就可以看到設定是否生效了﹐當然﹐使用 ping 也是一個好方法啦。如果您不知道怎樣去測試網路﹐請看看“網路基礎”的ICMP協定部份。
使用Control Panel 和其他
在上節中﹐我們學會了在文字模式下面使用 netconf 來設定網路。如果您將您的 X Windows 弄好之後﹐這裡﹐我們還可以使用其他更方便的工具來設定我們的網路。使用 Redhat 的 Control Panel 是個不錯的主意﹕
- 在 X Window 中開啟一個 shell 視窗﹐然後輸入﹕
- 您會看到一個新的長條形視窗彈出來﹐裡面會有好幾個圖標可供選擇﹐有空您可以一一看看它們是做什麼用的﹐不過﹐我們這裡只選擇‘network’圖標﹕
- 然後﹐您會看到下面的畫面被打開了(您也可以直接在 X window 輸入 netcfg & 呼叫出這個視窗啦~~~)﹕
您會發現您在文字模式下面設定的東西都在這裡了﹐當然﹐您也可以在這裡修改這些設定啦。
- 然後﹐您可以點選‘Hosts’﹐您會發現在 /etc/hosts 檔案設定的機器都出現在這個視窗裡面了﹕
如果您要修改設定﹐點選該主機後﹐按下面的‘Edit’就可以了﹔如果要刪除則按‘Remove’﹔如果要新增則按‘Add’﹕
輸入好 IP、主機全稱和別名後按‘Done’就完成新增了。用慣了 Windows 的朋友一定覺得很方便啦~~~
- 然後點選‘Interfaces’﹕
這裡﹐lo 是一個 loopback 界面﹐無論您的機器是否裝有網路卡﹐都會出現的﹔eth0 和 eth1 則是安裝在機器上面的兩張 ethernet 網路卡﹔ppp0 是用來接撥 ISP 的撥接連線﹔最後那個 eth1:0 是一個 IP Alias ﹐也就是所謂的“虛擬主機”﹐目前它是建立在第二張 ethernet 卡上面的第一個 IP Alias (其中的“﹕”是其識別標記)。要產生 IP Alias 的話﹐您只需點選好“實體界面”然後按‘Alias’就可以進行設定了﹕
如果您要該設備在開機的時候被啟動﹐則選擇“Active interface at boot time”。完成之後按‘Done’。然而﹐根據我在某些版本的測試中﹐用 Control-panel 做的 ip alias 在執行 network reload 時並不完全正確。這樣﹐當重新開機後﹐alias 的 IP 會變成 broadcast address。要修改這個問題﹐您可以用 ifup 來啟動 alias ﹐比如﹕在 /etc/rc.d/rc.local 中加上這樣的句子﹕
# Bring up IP alias on eth0:
/etc/sysconfig/network-scripts/ifup eth0:0
|
讓我們回到 “ Interfaces”畫面。如果您要增加一個實體界面﹐直接按下面的‘Add’﹐然後選擇好“界面類型”﹐如﹕‘Ethernet’﹐接下來的設定和增加 IP Alias 的一樣。如果您增加的界面和已經出現的界面相類似的話﹐可以使用‘Clone’。如果您要修改一個界面﹐可以按‘Edit’﹔移除則按‘Remove’。如果您要啟動一個界面﹐可以按‘Active’﹔關閉則按‘Deactive’。
- 最後是‘Routing’。您可以在這裡‘增加’、‘修改’、‘移除’路由設定。如果您的機器本身是但當路由角色的話﹐請選擇‘Network Packet Forwarding (IPV4)’﹔如果您使用 PPP 撥接ISP的話﹐請不要指定‘Default Gateway’。
- 如果一切都設定妥當了﹐可以按下面的‘Save’然後按‘Quit’離開。
除了在文字模式下面可以使用 netconf﹐在 X Windows 裡面也可以哦﹐不過您你看到的是圖形界面罷了。另外﹐如果您想做更進一步的設定﹐還可以使用 linuxconf ﹐這裡也就不一一介紹了。
設定檔
雖然您可以使用前面介紹的工具來設定您的網路﹐但歸根結底﹐這些設定都是以檔案形式儲存在檔案系統上面。如果您懂得如何修改那些設定檔的話﹐可以直接對檔案進行修改。有時候這還是必須的﹐因為設定工具不一定能夠做到您所設計的﹐而且﹐個別情形之下﹐設定工具也太自做主張﹐將一些不必要的設定加進檔案裡。
不同的 distrubition 下面的設定檔都不盡相同﹐而且﹐就算是同一個 distrubition ﹐不同的版本也有差異。請留意的是﹐這裡介紹的設定檔是在 Redhat 6.0 + CLE0.8 下面的﹐如果您發現和您的系統不同﹐請作適當修改。
這裡我們基本上看﹕
/etc/hosts
/etc/HOSTNAME
/etc/host.conf
/etc/resolv.conf
/etc/sysconfig/network
/etc/sysconfig/static-routes
和網卡設定相關的有﹕
/etc/sysconfig/pcmcia
/etc/conf.modules
/etc/sysconfig/network-scripts/*
和系統服務相關的有﹕
/etc/services
/etc/protocols
/etc/inetd.conf
用來在開機時做指定的檔案還有﹕
/etc/lilo.conf
/etc/rc.d/rc.local
/rec/rc.d/init.d/network
等等 ......
這裡也不一一說明怎麼對這些檔案進行修改﹐您可以參照使用工具的設定內容和檔案內容進行對比﹐進行一些修改﹐然後觀察檔案中改變的部份。多練習數遍就知道怎麼修改了。
例如﹐您要更改 IP﹐或是增加一個 IP alias﹐最簡單就是改 /etc/sysconfig/netowrk-scripts 下面的 ifcfg-* 檔。比方說﹐我要為 eth1 建立第 1 個 alias ﹐那我要修改的檔案就是 ifcfg-eth1:0﹐其內容類似這樣﹕
DEVICE=eth1:0
BOOTPROTO="none"
IPADDR=192.168.1.17
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
|
手工設定
當您退出 netconf 的時候﹐可以選擇 ‘Active the changes’ ﹔又或者在 Control Penal 裡面直接按‘Active’﹐來讓設定生效。如果您在測試中發現設定並非所預期的﹐您也可以手工的進行啟動。
您沒忘記的話﹐前面我們已經知道可以用 /etc/rc.d/init.d 下面的 script 讓設定生效。如﹕我們可以輸入 /etc/rc.d/init.d/network restart 來將讓網路功能重新啟動 (而不是像 MS Windows 那樣重新開機﹗)﹔我們也可以用 /etc/rc.d/init.d/network stop 來暫時停止網路功能。當然了﹐這些 script 是 RedHat 幫您設計好的﹐如果您知道如何修改這些 script ﹐您可以讓其更加順從您的意思。
使用 script 雖然方便﹐但如果發現設定不工作﹐要 debug 起來也不是那麼容易﹐那麼我們還必須懂得一些基本的操作命令才行﹕
- ifconfig
- 如果我們只輸入這個命令﹐後面不帶任何參數的話﹐系統會將目前的網路設定狀況顯示出來﹕
eth0 Link encap:Ethernet HWaddr 00:A0:0C:11:EA:11
inet addr:203.30.35.134 Bcast:203.30.35.159 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:3 Base address:0x300
eth1 Link encap:Ethernet HWaddr 00:80:C7:47:8C:9A
inet addr:192.168.0.17 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12303 errors:0 dropped:0 overruns:0 frame:0
TX packets:12694 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x2e0
eth1:0 Link encap:Ethernet HWaddr 00:80:C7:47:8C:9A
inet addr:192.168.1.17 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:10 Base address:0x2e0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:106 errors:0 dropped:0 overruns:0 frame:0
TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
|
您可以看到界面的名稱( eth0 等)、界面類型( Ethernet 等)、界面硬體位址、IP地址、廣播位址、Net Mask、界面目前狀態、MTU(Maximum Transmission Unit)大小、路由 Metric 數目、接收(RX)封包狀態、發送(TX)封包狀態、網路碰撞、發送隊列、IRQ、IO地址、等等信息 (如果你不知道它們是什麼﹐請參考“網路基礎”和“電腦基礎”)
ipconfig 除了可以讓您觀測界面情況之外﹐也可以用來設定界面。例如﹕當您想讓增加一個 IP Alias (或用 modules 形式將一片網路卡啟動之後)﹐您可以用 ifconfig 設定並啟動其 IP網路功能﹕
/sbin/ifconfig eth0:0 192.168.0.25 netmask 255.255.255.0 broadcast 192.168.0.255
|
(以上為一整行)
如果您再輸入 ifconfig eth0:0﹐就可以看到﹕
eth0:0 Link encap:Ethernet HWaddr 00:A0:0C:11:EA:11
inet addr:192.168.0.25 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:3 Base address:0x300
|
如果我們要將這個界面關閉﹐只需輸入﹕ ifconfig eth0:0 down 則可。
- ifup / ifdown
- 在 /etc/sysconfig/network-script/ 目錄下面﹐您會發現您所有的界面設定都在‘ifcfg-*’這些設定檔裡面。您可以直接修改這些檔案來改變界面設定﹐也可以建立這些檔案來增加界面。如果您要開啟或關閉這些界面﹐使用 ifup (如﹕ifup eth0:0) 和 ifdown (如﹕ifdown eth0:0) 就可以做到。有興趣的話﹐您可以看看 ‘ifup’和‘ifdown’這兩個 script 實際上為您做了些什麼。
- route
- 如果我們只輸入這個命令而不帶任何參數﹐我們可以看到系統目前使用的路由表格設定﹕
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 * 255.255.255.255 UH 0 0 0 eth1
255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.17 * 255.255.255.255 UH 0 0 0 eth1
203.30.35.134 * 255.255.255.255 UH 0 0 0 eth0
203.30.35.128 * 255.255.255.224 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
203.168.168.0 rhroute 255.255.255.0 UG 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
|
(假如您輸入命令後要等很久﹐那就是名稱解析上有問題﹐請確定 /etc/hosts 的完整與正確﹐或是 DNS 運作良好。不過﹐您也可以用 route -n (加上 -n 參數)只顯示 IP ﹐就不會有延遲現像了。)
第一列是目的“目的地位址”﹐可以是一個網路﹐也可以是一台主機﹔然後“網關位址”(‘*’表示無需使用網關﹐例如廣播地址和本機地址)﹔接下來是目的地使用的 NetMask﹔然後是“旗標”﹐這裡的 U 是“Up”的意思﹐也就是目前已啟用、H 表示目的為一個“Host”、 G 表示使用“Gateway”的意思﹔接下來的 Metric 和 Ref 是供路由系統參考的﹔最後是使用的網路界面。
使用這個命令﹐我們還可以修改、增加、和刪除系統的路由表格設定﹐它可以用來告訴機器通往某一個網路或主機使用哪一個網關、matrix、以及使用哪一個界面等等。下面我將會示範一下如何使用這個命令。
在我的例子中﹐首先要先將原已出現在路由表格的設定移除掉(否則我待會就會加進重複設定了)﹕
/sbin/route del -net 203.168.168.0 netmask 255.255.255.0 dev eth1
|
這時再輸入一次 /sbin/route 就可以確定有關 203.168.168.0 這網路的路由設定已經給移除掉了。
好了﹐我現在可以用 route 將剛才移除的路由設定加進系統的路由表格去﹕
/sbin/route add -net 203.168.168.0 gw 192.168.0.4 netmask
255.255.255.0 dev eth1
|
(以上為一整行)
相信您現在不難看出﹕增加和移除路由設定﹐分別是使用‘add’和‘del’來做命令選項。
這時候再用 /sbin/route 就可以看到路由設定有回到路由表格中去了。當然﹐如果要兩個網路能夠成功的達成路由﹐對方網路也必須有相應的路由設定指向本地網路才行。
剛才我們用 route 這個命令來設定某些網路 (net ID) ﹐但有時候如果我們使用 ifconfig 手工的增加了一個界面﹐嚴格來說﹐我們還應該為界面增加一個‘H’記錄的﹕
/sbin/route add -host 192.168.0.25 dev eth0:0
|
不過﹐這也不是一定的﹐如果您發現有問題再增加就是了。但是﹐這些手工設定﹐在重新開機之後就會消失﹐您可以在 /etc/rc.d/rc.local 這個檔案將命令逐行寫上﹐或是寫進設定檔中﹐例如﹐ifconfig 的設定可以寫進前面解釋的 ifcfg-* 檔﹐而 route 的設定呢﹐則是寫在 /etc/sysconfig/static-routes 檔﹐格式參考如下﹕
eth1 net 192.168.17.0 netmask 255.255.255.0 gw 192.168.0.254
eth1 net 10.0.1.0 netmask 255.0.0.0 gw 192.168.1.253
|
(注意﹕如果您的界面是一個 IP Alias 的話﹐要吧能把“:”以及後面的數字寫刪除掉。別忘了哦﹗)
等您會得如何使用命令手工的設定您的網路之後﹐那麼在其他的 distrubition 下面也難不到您的﹐關鍵是找到設定檔案和 scripts 放在哪裡罷了。例如﹐有些套件﹐會將所有的網路設定寫進 /etc/rc.d/rc.inet1 和 /etc/rc.d/rc.inet2 這兩個檔案裡面。
設定網路﹐除了您要知道修改那些檔案﹐和如何下命令外﹐更重要的是﹐您必須非常了解 IP 的路由關係﹐假如您對子網路和 routing 的概念還不很牢固﹐或許﹐可以參考“技巧心得”裡面的兩篇文章﹕“談談 Subneet”和“談談 IP Routing”。 如果您能夠全部都理解的話﹐那您可以放心設定網路了﹐任何一個 IP 網路都一樣﹗
一旦 ifconfig 和 route 設定好了﹐然後就是您大顯身手的時候。下面﹐我們將一起為 Linux 設定一些常用的網路伺服器(server)功能。

© 2000
Netman 網中人
Last Updated: March 06, 2001
|