小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

第五章 配置TCP/IP網(wǎng)絡(luò) proc文件系統(tǒng) 設(shè)置主機(jī)...

 todaytomo 2007-01-11
第五章 配置TCP/IP網(wǎng)絡(luò)


在本章中,我們將討論在機(jī)器上設(shè)置TCP/IP網(wǎng)絡(luò)所要經(jīng)歷的所有步驟。我們將從IP地址的分配開始,逐步描述TCP/IP網(wǎng)絡(luò)接口的配置過(guò)程,并且介紹幾個(gè)在解決網(wǎng)絡(luò)安裝問(wèn)題時(shí)非常有用的工具。
本章所述的大多數(shù)工作通常你只需要做一次。而后,僅當(dāng)你要向網(wǎng)絡(luò)中增加新系統(tǒng)時(shí),或者當(dāng)你完全重新配置你的系統(tǒng)時(shí),你才會(huì)接觸許多配置文件。然而,有些用于配置TCP/IP的命令必須在系統(tǒng)每次引導(dǎo)時(shí)都要執(zhí)行之。這通常是通過(guò)在系統(tǒng)的/etc/rc腳本中調(diào)用它們來(lái)做的。
一般地,這個(gè)過(guò)程的網(wǎng)絡(luò)專有部分包括在稱為rc.net或rc.inet的腳本中。有時(shí),你也會(huì)看到名為rc.inet1和rc.inet2的兩個(gè)腳本文件,前一個(gè)用于初始化網(wǎng)絡(luò)的核心部分,而后者啟動(dòng)基本的網(wǎng)絡(luò)服務(wù)和應(yīng)用程序。在本章下面,我將注重討論后者的概念。
下面,我將討論執(zhí)行rc.inet1的作用結(jié)果,而應(yīng)用程序?qū)⒃诤竺嬲鹿?jié)中討論。在讀完本章以后,你將建立起在計(jì)算機(jī)上正確配置TCP/IP的一個(gè)命令順序。然后,你應(yīng)該替換計(jì)算機(jī)上rc.inet1里的任何例子命令、確信rc.inet1在系統(tǒng)引導(dǎo)時(shí)被執(zhí)行,并重新引導(dǎo)你的機(jī)器。隨著你中意的Linux版本而來(lái)的網(wǎng)絡(luò)rc腳本會(huì)給你一個(gè)很好的例子。

5.1 安裝proc文件系統(tǒng)
有些Net-2版本的配置工具要依賴proc文件系統(tǒng)來(lái)與內(nèi)核進(jìn)行通信。這是一個(gè)使用像文件系統(tǒng)似的機(jī)制以允許對(duì)內(nèi)核運(yùn)行時(shí)信息進(jìn)行訪問(wèn)的接口。當(dāng)加載時(shí),你可以象使用任何其它文件系統(tǒng)一樣地列出文件、或顯示它們的內(nèi)容。典型的項(xiàng)包括含有系統(tǒng)平均負(fù)載的loadavg文件、或顯示當(dāng)前核心內(nèi)存以及交換使用情況的meminfo。
對(duì)于此,網(wǎng)絡(luò)代碼添加了net目錄。它含有許多文件,這些文件顯示象內(nèi)核ARP表格、TCP連接狀態(tài),以及路由[選擇]表。許多網(wǎng)絡(luò)管理工具從這些文件中取得它們的信息。
Proc文件系統(tǒng)(或者也以procfs而著稱)通常在系統(tǒng)引導(dǎo)時(shí)被加載到/proc目錄上。最好的辦法是將下面幾行增加到/etc/fstab之中:

# procfs mont point:
none /proc proc defaults

并且從你的/etc/rc腳本中執(zhí)行“mount /proc” 。
缺省地,現(xiàn)在procfs被配置進(jìn)大多數(shù)的內(nèi)核中。如果procfs不在你的內(nèi)核中,你會(huì)得到象這樣的消息:“mount: fs type procfs not supported by kernel”(“加載:內(nèi)核不支持文件系統(tǒng)類型procfs”)。你就必須重新編譯內(nèi)核并且在問(wèn)及procfs支持時(shí)回答“yes”。

5.2 安裝執(zhí)行文件
如果你正在使用一個(gè)打包之前的(未打包的)Linux發(fā)布版本,它將很可能包括主要的網(wǎng)絡(luò)應(yīng)用程序以及實(shí)用工具和附帶的一組例子文件。你可能必須得到和安裝新工具的唯一情況是當(dāng)你安裝了一個(gè)新的內(nèi)核版本。由于它們有時(shí)在內(nèi)核的網(wǎng)絡(luò)層中含有更改的情況,你將需要更新基本配置工具。這起碼包括重新編譯,但有時(shí)也可能需要獲得最新的執(zhí)行文件組。這些通常和內(nèi)核一起發(fā)行,以文檔的形式打包并切稱為net-XXX.tar.gz,這里XXX是版本號(hào)。與Linux 1.0相匹配的是0 .32b,在本書寫作時(shí)的最新內(nèi)核(1.1.12及以后)需要0.32d。
如果你想自己編譯并且安裝標(biāo)準(zhǔn)TCP/IP網(wǎng)絡(luò)應(yīng)用程序的話,你可以從許多Linux FTP服務(wù)器上獲得原程序。這些是或多或少?gòu)腘et-BSD或其它原程序經(jīng)過(guò)大量修正的程序版本。其它的應(yīng)用程序,比如Xmosaic、xarchie、或Gopher以及IRC客戶程序必須分別地獲得。其中大多數(shù)程序如果按照說(shuō)明編譯,則與盒裝版本的一樣。
官方的Net-3的FTP站點(diǎn)是sunacm.swan.ac.uk,鏡象站點(diǎn)在sunsite.unc.edu下的system/Network/sunacm。最新的Net-2e補(bǔ)丁程序以及執(zhí)行程序在ftp.aris.com。Matthias Urlichs的起源于BSD網(wǎng)絡(luò)代碼的程序在ftp.ira.uka.de.in /pub/system/linux/上有。

5.3 另一個(gè)例子

在本書的余下部分,讓我介紹一個(gè)新的例子,這個(gè)例子要比Groucho Marx大學(xué)的例子簡(jiǎn)單,并且可能更加接近你實(shí)際要遇到的問(wèn)題。考慮虛擬釀酒廠(Virtual Brewery),一個(gè)小型的釀造—正如名稱指出的那樣--虛擬啤酒的公司。為了更有效地管理好他們的生意,虛擬釀酒人想要將他們的計(jì)算機(jī)連網(wǎng),這些正好都是運(yùn)行bright and shiny 1.0(明亮與閃耀1.0)的PC機(jī)。
在同一樓層上恰好穿過(guò)大廳的地方,有一家工作與之相近的葡萄釀酒廠。他們有一個(gè)自己的以太網(wǎng)。很自然地,一旦他們的網(wǎng)絡(luò)開始正常運(yùn)作時(shí),這兩家公司就想將他們的網(wǎng)絡(luò)連接起來(lái)。作為第一步,他們想要設(shè)置一臺(tái)用于在這兩個(gè)子網(wǎng)之間轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的網(wǎng)關(guān)主機(jī)。接下來(lái),他們也想有一個(gè)與外界世界聯(lián)系的UUCP鏈接,通過(guò)這個(gè)連接,他們就能交換郵件和news了。最后,他們也希望安裝一個(gè)SLIP連接以便有時(shí)能連接到Internet上。

5.4 設(shè)置主機(jī)名(hostname)
絕大多數(shù)情況下—如果不是全部的話,網(wǎng)絡(luò)應(yīng)用程序要依賴于合理地設(shè)置本地主機(jī)名。這通常是在引導(dǎo)過(guò)程通過(guò)執(zhí)行hostname命令來(lái)完成的。如要將主機(jī)名設(shè)置成name的話,它的調(diào)用如

# hostname name

使用一個(gè)與任何域名都無(wú)關(guān)的任意的主機(jī)名也是常有的事。例如,虛擬釀酒廠的主機(jī)可能叫做vale.vbrew.com、vlager.vbrew.com等等。這些是它們正式的、全資域名。它們的本地主機(jī)名將是這個(gè)名字的第一部分,如vale。然而,由于本地主機(jī)名常常用來(lái)查找主機(jī)的IP地址,你就必須確信解析庫(kù)能夠查找到該主機(jī)的IP地址。這通常意味著你必須將這個(gè)名字寫入/etc/hosts中(見下面)。
有些人建議使用domainname命令來(lái)設(shè)置內(nèi)核意義上的域名為FQDN的余下部分。這樣的話,你可以組合hostname和domainname的輸出來(lái)再次得到FQDN。然而,這最多對(duì)了一半。Domainname一般用來(lái)設(shè)置主機(jī)的NIS域,這可能與你的主機(jī)所屬的DNS域完全不同。NIS將在第十章中討論。

5.5 分配IP地址
如果在你的主機(jī)上為單機(jī)操作配置連網(wǎng)軟件(例如,為了能夠運(yùn)行INN網(wǎng)絡(luò)新聞軟件),你可以安全地跳過(guò)本節(jié),因?yàn)槟阒恍枰獮榛厮停╨oopback)接口分配一個(gè)接口,它總是127.0.0.1。
而對(duì)于象以太網(wǎng)那樣的真實(shí)網(wǎng)絡(luò)來(lái)說(shuō),事情就有一些復(fù)雜。如果你想將你的主機(jī)連接到一個(gè)現(xiàn)成的網(wǎng)絡(luò)上,你就必須要求該網(wǎng)的管理員給你一個(gè)這個(gè)網(wǎng)絡(luò)的IP地址。當(dāng)整個(gè)網(wǎng)絡(luò)都是由你自己來(lái)設(shè)定時(shí),你就必須按如下描述自己來(lái)分配IP地址。
在一個(gè)本地網(wǎng)絡(luò)內(nèi)的主機(jī)通常應(yīng)該有相同的邏輯IP網(wǎng)絡(luò)地址。因此,你必須分配一個(gè)IP網(wǎng)絡(luò)地址。如果你有幾個(gè)物理網(wǎng)絡(luò),你或者必須給它們分配不同的網(wǎng)絡(luò)號(hào)(網(wǎng)絡(luò)地址),或者使用子網(wǎng)技術(shù)將你的IP地址范圍分割成幾個(gè)子網(wǎng)。
如果你的網(wǎng)絡(luò)沒有連接到Internet上,你可以自由地選擇任何(合法的)網(wǎng)絡(luò)地址。你只須確信選擇了A類、B類或C類中的一種,否則的話事情可能會(huì)工作得不正常。然而,如果你打算近期連接Internet,你現(xiàn)在就得獲取一個(gè)正式的(官方的)IP地址。進(jìn)行的最佳方法是是請(qǐng)求你的網(wǎng)絡(luò)服務(wù)提供商幫助你。如果你想獲取一個(gè)網(wǎng)絡(luò)地址只是因?yàn)槿f(wàn)一某天你可能連上Internet,從hostmaster@internic.net要一張網(wǎng)絡(luò)地址申請(qǐng)表。
為了操作幾個(gè)以太網(wǎng)(或其它網(wǎng)絡(luò),一旦有了驅(qū)動(dòng)程序),你必須將你的網(wǎng)絡(luò)分隔成子網(wǎng)。注意,只有當(dāng)你有多個(gè)廣播網(wǎng)絡(luò)(broadcast network)時(shí),你才需要應(yīng)用子網(wǎng)技術(shù);點(diǎn)對(duì)點(diǎn)的連接不算在內(nèi)。例如,如果你有一個(gè)以太網(wǎng),并且有一個(gè)或多個(gè)SLIP鏈接到外部世界,你無(wú)需分割你的網(wǎng)絡(luò)。其理由將在第7章中給出。
作為一個(gè)例子,釀酒廠的網(wǎng)絡(luò)管理人員向NIC申請(qǐng)了一個(gè)B類網(wǎng)絡(luò)號(hào),得到191.72.0.0。為適應(yīng)兩個(gè)以太網(wǎng),她決定使用主機(jī)部分的8個(gè)比特作為額外的子網(wǎng)比特位。主機(jī)部分剩余的8個(gè)比特,允許每個(gè)子網(wǎng)有254臺(tái)主機(jī)。然后,她將子網(wǎng)號(hào)1給了釀酒廠、子網(wǎng)號(hào)2給了葡萄酒廠。這樣他們的網(wǎng)絡(luò)地址分別為191.72.1.0和191.72.2.0。子網(wǎng)掩碼是255.255.255.0。
在兩個(gè)網(wǎng)絡(luò)之間的網(wǎng)關(guān)vlager,在它們兩邊都分配給它主機(jī)號(hào)1,這分別給了它IP地址191.72.1.1和191.72.2.1。圖5.1 示出了這兩個(gè)子網(wǎng)和網(wǎng)關(guān)。
注意,在這個(gè)例子中,我使用了一個(gè)B類網(wǎng)絡(luò)來(lái)使得事情簡(jiǎn)單化;而一個(gè)C類網(wǎng)絡(luò)將更現(xiàn)實(shí)些。有了新的網(wǎng)絡(luò)代碼,子網(wǎng)的分割并不限于字節(jié)邊界,所以,即使是一個(gè)C類網(wǎng)絡(luò)也可以分割成幾個(gè)子網(wǎng)。例如,你可以使用2比特的主機(jī)部分作為網(wǎng)絡(luò)掩碼,就可得到四個(gè)可能的子網(wǎng),每個(gè)子網(wǎng)可以有64臺(tái)主機(jī)。[1]

5.6 編寫hosts和networks文件
在把你的網(wǎng)絡(luò)分成子網(wǎng)以后,你應(yīng)該使用/etc/hosts文件為某些簡(jiǎn)單的主機(jī)名解析作些準(zhǔn)備。如果你不打算使用DNS或NIS來(lái)作地址解析,你就必須將所有的主機(jī)名寫入hosts文件中。


圖5.1 虛擬釀酒廠和虛擬葡萄酒廠—兩個(gè)子網(wǎng)。

即使你在正常操作期間想運(yùn)行DNS或NIS,你仍然會(huì)將一些主機(jī)名寫入/etc/hosts文件中。一個(gè)原因是,即使沒有網(wǎng)絡(luò)接口正在運(yùn)行,你還是會(huì)想有一些名字解析功能,例如,在系統(tǒng)引導(dǎo)期間。這不但是為了方便,而且也允許你在rc.inet腳本中使用符號(hào)主機(jī)名。這樣,當(dāng)更改IP地址時(shí),你只需將更新過(guò)的hosts文件拷貝到所有機(jī)器上并且重新啟動(dòng)機(jī)器即可。而無(wú)需去分別編輯大量的rc文件。通常,你應(yīng)該將所有本地主機(jī)名和地址放入hosts,加入用到的任何網(wǎng)關(guān)和NIS服務(wù)器的名稱和地址。[2]
同樣,在最初的測(cè)試階段,你應(yīng)該確信你的解析器只使用到hosts文件中的信息。你的DNS或NIS軟件可能附帶有樣本文件,當(dāng)使用這些文件時(shí)就可能產(chǎn)生奇怪的結(jié)果。為了讓所有的應(yīng)用程序在查找一個(gè)主機(jī)的IP地址時(shí)只使用/etc/hosts文件,你必須編輯/etc/host.conf文件。用井字符注釋掉以關(guān)鍵字order開始的所有行,并插入一行

order hosts

解析器庫(kù)的配置將在第六章中詳細(xì)討論。
Hosts文件中每一行包含一項(xiàng),每項(xiàng)由一個(gè)IP地址、一個(gè)主機(jī)名、和任選的該主機(jī)的一個(gè)別名列表組成。各個(gè)域用空格或制表符分開,并且地址域必須從第一列開始。任何以井字符開始的行都看作是注釋行,被忽略掉。
主機(jī)名可以是全資的、或者是與本地域相關(guān)的。對(duì)與vale來(lái)說(shuō),你通??梢酝鵫osts文件中輸入全資名vale.vbrew.com,以及vale名本身,這樣該主機(jī)就有正式名和短小的本地名兩個(gè)名字了。
這是虛擬釀酒廠的hosts文件樣式的一個(gè)例子。其中包括了兩個(gè)特別的名字,vlager-if1和vlager-if2,它給出了vlager所用的兩個(gè)接口的地址。


#
# Hosts file for Virtual Brewery/Virtual Winery
#
# IP local fully qualified domain name
#
127.0.0.1 localhost
#
191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.1.2 vstout vstout.vbrew.com
191.72.1.3 vale vale.vbrew.com
#
191.72.2.1 vlager-if2
191.72.2.2 vbeaujolais vbeaujolais.vbrew.com
191.72.2.3 vbardolino vbardolino.vbrew.com
191.72.2.4 vchianti vchianti.vbrew.com

正如對(duì)待主機(jī)的IP地址一樣,有時(shí)對(duì)于網(wǎng)絡(luò)號(hào)你也可能想使用一個(gè)符號(hào)名稱。因此,hosts文件有一個(gè)相伴的稱為/etc/networks的文件,用于映射網(wǎng)絡(luò)名到網(wǎng)絡(luò)號(hào)以及反之。在虛擬釀酒廠,我們可以安裝一個(gè)象下面的networks文件:[3]

# /etc/networks for the Virtual Brewery
brew-net 191.72.1.0
wine-net 191.72.2.0

5.7 IP的接口配置
在如前章里解釋那樣設(shè)置好你的硬件以后,你必須讓內(nèi)核的網(wǎng)絡(luò)軟件知道這些設(shè)備。有幾個(gè)命令是用于配置網(wǎng)絡(luò)接口和初始化路由選擇表的。這些任務(wù)通常是在系統(tǒng)每次啟動(dòng)引導(dǎo)時(shí)由rc.inet1腳本來(lái)做的。做這些任務(wù)的基本工具稱為ifconfig(這里“if”表示接口的意思interface),和route。
Ifconfig用于使得一個(gè)接口能夠被內(nèi)核的網(wǎng)絡(luò)層訪問(wèn)。這包括IP地址的分配和其它參數(shù)的指派、激活接口—也以“起用”(“taking up”)而知名。這里激活表示內(nèi)核將通過(guò)接口發(fā)送和接收IP數(shù)據(jù)報(bào)。調(diào)用它的最簡(jiǎn)單的辦法是

ifconfig interface ip-address

它分配IP地址ip-address給接口interface并激活它。所有其它的參數(shù)都設(shè)置成缺省值。例如,缺省的子網(wǎng)掩碼是從IP地址的網(wǎng)絡(luò)類型中獲得的,如255.255.0.0是B類地址的掩碼。Ifconfig將在本章末給予詳細(xì)的討論。
Route允許你對(duì)內(nèi)核的路由表進(jìn)行增加或刪除路由的操作。它可以象這樣調(diào)用

route [add|del] target

這里add和dell是決定增加還是刪除到目的(target)網(wǎng)絡(luò)或主機(jī)的路由。

5.7.1 回送(loopback)接口
最早被激活的接口是回送接口(loopback interface):

# ifconfig lo 127.0.0.1

有時(shí),你也會(huì)看到使用偽主機(jī)名localhost替代IP地址的用法。Ifconfig將在hosts文件中查找這個(gè)名字,在hosts文件中應(yīng)該有一項(xiàng)申明localhost是127.0.0.1的主機(jī)名:

# Sample /etc/hosts entry for localhost
localhost 127.0.0.1

要查看一個(gè)接口的配置,你要用接口名作為參數(shù)調(diào)用ifconfig:

$ ifconfig lo
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast [NONE SET] Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0

如你所見,lookback接口被賦予255.0.0.0掩碼,這是因?yàn)?27.0.0.1是一個(gè)A類地址。該地址沒有一個(gè)廣播地址集,但這在loopback中并沒有什么用。然而,如果你在主機(jī)上運(yùn)行了rwhod后臺(tái)服務(wù)程序的話,你就必須設(shè)置loopback設(shè)備的廣播地址,以便rwho能夠正確地運(yùn)行。如何設(shè)置廣播地址會(huì)在下面的“關(guān)于ifconfig”一節(jié)中描述。
現(xiàn)在,你幾乎可以啟動(dòng)運(yùn)行你的米你-“網(wǎng)絡(luò)”了。最后所缺的是路由選擇表里的一項(xiàng),該項(xiàng)將告訴IP,它可以使用這個(gè)接口作為到達(dá)目的127.0.0.1的路由。這是通過(guò)鍵入下面的命令來(lái)完成的

# route add 127.0.0.1

再次,你可以使用localhost來(lái)代替這個(gè)IP地址。
接下來(lái),你要檢查是否每樣事情正常工作著,例如通過(guò)使用ping來(lái)檢查。ping是聲納設(shè)備的網(wǎng)絡(luò)等價(jià)物[4] 用于驗(yàn)證一個(gè)給定的地址是否真正能達(dá)到,并且測(cè)量發(fā)送一個(gè)數(shù)據(jù)報(bào)到給定地址然后返回到主機(jī)的延遲時(shí)間。所需的時(shí)間常稱為來(lái)回程時(shí)間。

# ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp seq=0 ttl=32 time=1 ms
64 bytes from 127.0.0.1: icmp seq=1 ttl=32 time=0 ms
64 bytes from 127.0.0.1: icmp seq=2 ttl=32 time=0 ms
^C
--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0/0/1 ms

當(dāng)如上調(diào)用ping時(shí),它將繼續(xù)不停地發(fā)送信息包,除非被用戶中斷掉。上面的^C標(biāo)記出我們按Ctrl-C的地方。
上面這個(gè)例子顯示出127.0.0.1的信息包正確地發(fā)送了出去并且一個(gè)應(yīng)答幾乎是瞬時(shí)就返回到ping的。這表示你已經(jīng)成功地設(shè)置好第一個(gè)網(wǎng)絡(luò)接口。
如果你從ping得到的輸出信息與不象上面所示的,你就碰到問(wèn)題了。查看出錯(cuò)信息看看是否它指出了某些文件沒有正確地被安裝。查看你所使用的ifconfig和route執(zhí)行文件是否與你運(yùn)行的內(nèi)核版本兼容,并且,最重要的是檢查所編譯的內(nèi)核是網(wǎng)絡(luò)使能的(激活的)(你可以從是否存在/proc/net目錄看出)。如果你得到出錯(cuò)信息說(shuō)“網(wǎng)絡(luò)不可達(dá),”那么你很可能用錯(cuò)了route命令。請(qǐng)確信你使用了與給ifconfig相同的地址。
上面所描述的步驟對(duì)于在單機(jī)上使用網(wǎng)絡(luò)應(yīng)用程序來(lái)說(shuō)已足夠了。在將上面的幾行添加到rc.inet1并確信這兩個(gè)rc.inet腳本都已在/etc/rc中執(zhí)行以后,你可以重新引導(dǎo)你的機(jī)器并且試驗(yàn)各種應(yīng)用程序。例如,“telnet localhost”將會(huì)建立一個(gè)到你主機(jī)的telnet連接,給你一個(gè)登錄提示畫面。
然而,loopback接口是有用的,不僅是在網(wǎng)絡(luò)書本中作為一個(gè)例子,或作為開發(fā)期間的一個(gè)測(cè)試臺(tái),而且實(shí)際上在正常操作時(shí)也被用于某些應(yīng)用程序。[5] 因此,不管你的機(jī)器是否連接到一個(gè)網(wǎng)絡(luò)上,你總是必須要配置它的。

5.7.2 以太網(wǎng)接口
配置一個(gè)以太網(wǎng)接口與配置loopback接口非常相象。它只是在你使用子網(wǎng)技術(shù)時(shí)需要稍多的參數(shù)。
在虛擬釀酒廠,我們已經(jīng)將IP網(wǎng)絡(luò)分割成了C類子網(wǎng),這個(gè)IP網(wǎng)絡(luò)原是一個(gè)B類網(wǎng)絡(luò)。為了使得接口能夠識(shí)別這個(gè)變化,ifconfig的參數(shù)應(yīng)該看上去象這樣:

# ifconfig eth0 vstout netmask 255.255.255.0

它將vstout(191.72.1.2)IP地址分配給了eth0接口。如果我們已經(jīng)省略了網(wǎng)絡(luò)掩碼,那么ifconfig將推論出該IP地址類的掩碼來(lái),它將會(huì)已有255.255.0.0這樣的網(wǎng)絡(luò)掩碼。現(xiàn)在,一個(gè)快速查看顯示出:

# ifconfig eth0
eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0

你可以看出,ifconfig自動(dòng)地將廣播地址(上面的Bcast域)設(shè)置成常用的值,即將主機(jī)的網(wǎng)絡(luò)號(hào)的主機(jī)部分的所有比特位置為1。同樣,消息傳輸單元(message transfer unit)(內(nèi)核為該接口生成的最大以太網(wǎng)幀的大小)已被設(shè)置成最大值1500字節(jié)。所有這些值都可以用特定的選項(xiàng)覆蓋掉,這將在下面討論之。
同loopback的情況非常相似,你現(xiàn)在必須安裝一個(gè)路由選擇項(xiàng),它會(huì)通知內(nèi)核有關(guān)通過(guò)eth0能夠到達(dá)的網(wǎng)絡(luò)。對(duì)于虛擬釀酒廠來(lái)說(shuō),你應(yīng)該按如下調(diào)用route

# route add –net 191.72.1.0

起先,這看上去有點(diǎn)象變魔術(shù),因?yàn)椴⒉磺宄oute是如何探測(cè)到要通過(guò)哪個(gè)接口進(jìn)行路由。然而,竅門是很簡(jiǎn)單的:內(nèi)核檢測(cè)已配置的所有接口并且將目的地址(此時(shí)為192.72.1.0)與接口地址的網(wǎng)絡(luò)部分相比較(也即將接口地址和網(wǎng)絡(luò)掩碼進(jìn)行逐位與)。只有eth0接口與之匹配。
現(xiàn)在,-net選項(xiàng)是干什么用的呢?使用這個(gè)選項(xiàng)是因?yàn)閞oute既可以處理路由到網(wǎng)絡(luò)也可以處理路由到單機(jī)的情況(正如上面你已看到有關(guān)localhost的情況)。當(dāng)給出的地址是用點(diǎn)分四組表示法表示時(shí),route通過(guò)查看主機(jī)部分比特位來(lái)試圖猜測(cè)它是個(gè)網(wǎng)絡(luò)號(hào)還是個(gè)主機(jī)地址。如果地址的主機(jī)部分是零的話,route假定它表示一個(gè)網(wǎng)絡(luò),否則的話route把它當(dāng)作一個(gè)主機(jī)地址。因此,route會(huì)認(rèn)為192.72.1.0是一個(gè)主機(jī)地址而不是一個(gè)網(wǎng)絡(luò)號(hào),因?yàn)樗⒉恢牢覀兪褂昧俗泳W(wǎng)技術(shù)。因此,我們必須給出-net標(biāo)志,明確地告之route它代表一個(gè)網(wǎng)絡(luò)。
當(dāng)然,上面的route命令鍵入時(shí)很冗長(zhǎng),并且很容易輸錯(cuò)。一個(gè)更簡(jiǎn)便的方法是使用我們已經(jīng)在/dev/networks中定義的網(wǎng)絡(luò)名字。這使得這個(gè)命令非常易讀;而且也可以將-net標(biāo)志省略掉了,因?yàn)閞oute現(xiàn)在知道191.72.1.0表示一個(gè)網(wǎng)絡(luò)。

# route add brew-net

現(xiàn)在既然我們已經(jīng)完成了基本的配置步驟,我們要確信該以太網(wǎng)接口確實(shí)能正常運(yùn)行。從你的以太網(wǎng)絡(luò)上任選一臺(tái)主機(jī),例如vlager,并鍵入

# ping vlager
PING vlager: 64 byte packets
64 bytes from 191.72.1.1: icmp seq=0. time=11. ms
64 bytes from 191.72.1.1: icmp seq=1. time=7. ms
64 bytes from 191.72.1.1: icmp seq=2. time=12. ms
64 bytes from 191.72.1.1: icmp seq=3. time=3. ms
^C

----vstout.vbrew.com PING Statistics----
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms) min/avg/max = 3/8/12

如果你看不到任何象這樣的輸出,那么,很明顯有地方出了問(wèn)題。如果你碰到不正常的包丟失速率,這意味著是個(gè)硬件問(wèn)題,如壞的或丟失了終端頭等等。如果你一點(diǎn)也沒收到任何信息包,你應(yīng)該用netstat來(lái)檢查接口配置。Ifconfig的信息包統(tǒng)計(jì)信息會(huì)告訴你接口是否發(fā)送了任何信息包。如果你也可以訪問(wèn)那臺(tái)遠(yuǎn)程的主機(jī),你也應(yīng)該過(guò)去檢查它的接口的統(tǒng)計(jì)信息。用這種方法,你就可以正確地確定這些信息包是在哪丟失的。另外,你應(yīng)該用route顯示選路(路由選擇)信息,來(lái)看看兩臺(tái)主機(jī)的路由項(xiàng)目是否正確。當(dāng)不使用任何參數(shù)調(diào)用route時(shí),會(huì)打印出整個(gè)內(nèi)核選路表(-n選項(xiàng)只是使得它用點(diǎn)分四組表示法打印出地址來(lái),而不是用主機(jī)名):

# route -n
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use
127.0.0.1 * 255.255.255.255 UH 1 0
191.72.1.0 * 255.255.255.0 U 1 0

  這些域的詳細(xì)含義將在下面的“使用netstat檢查”一節(jié)中給出。Flag列包含每個(gè)接口標(biāo)志的一個(gè)列表。U對(duì)于活動(dòng)的接口總是置位的,H是指目的地址表示一臺(tái)主機(jī)。如果H標(biāo)志是為一個(gè)作為網(wǎng)絡(luò)路由器的路由器置位的,那么你就必須為route命令指定-net選項(xiàng)。為了測(cè)試你加入的一個(gè)路由器是否被使用,檢查倒數(shù)第二列中的Use域在ping的對(duì)話期間會(huì)增加。

5.7.3 通過(guò)網(wǎng)關(guān)進(jìn)行路由
在前一節(jié)中,我只描述了在單個(gè)以太網(wǎng)上設(shè)置一臺(tái)主機(jī)的情況。然而經(jīng)常性地,一個(gè)人會(huì)遇到網(wǎng)絡(luò)通過(guò)網(wǎng)關(guān)連接到另一個(gè)網(wǎng)絡(luò)的情況。這些網(wǎng)關(guān)可能只是簡(jiǎn)單地連接兩個(gè)或多個(gè)以太網(wǎng)絡(luò),但也可能提供到外部世界的Internet連接。為了使用一個(gè)網(wǎng)關(guān)的服務(wù),你必須在網(wǎng)絡(luò)層提供額外的選路信息。
例如,虛擬釀酒廠和虛擬葡萄酒廠的以太網(wǎng)絡(luò)是通過(guò)這樣的一個(gè)網(wǎng)關(guān),也即主機(jī)vlager,連在一起的。假設(shè)vlager早已被配置好,我們只需在vstout的選路表中添加另一個(gè)項(xiàng),這個(gè)項(xiàng)告訴內(nèi)核,它可以通過(guò)vlager到達(dá)葡萄酒廠網(wǎng)絡(luò)上的所有主機(jī)。適當(dāng)?shù)膔oute“咒語(yǔ)”顯示如下;關(guān)鍵字gw告訴route下一個(gè)參數(shù)表示一個(gè)網(wǎng)關(guān)。

# route add wine-net gw vlager

當(dāng)然,你所希望對(duì)話的葡萄酒廠網(wǎng)絡(luò)上的任何主機(jī)必須有一個(gè)釀酒廠網(wǎng)絡(luò)的相應(yīng)選路項(xiàng),否則的話,你將只能將數(shù)據(jù)從vstout發(fā)送到vbardolino,但后者的任何響應(yīng)都將丟失(go into the great bit bucket)。
這個(gè)例子只描述了一個(gè)網(wǎng)關(guān),它在兩個(gè)隔離的以太網(wǎng)之間交換信息包?,F(xiàn)在假設(shè),vlager也有一個(gè)到Internet的連接(例如,通過(guò)一個(gè)另外的SLIP連接)。那么我們希望除了到達(dá)釀酒廠的數(shù)據(jù)報(bào),到達(dá)任何其他網(wǎng)絡(luò)的數(shù)據(jù)報(bào)都將交由vlager處理。這可以通過(guò)使vlager成為vstout缺省的路由器來(lái)做到。

# route add default gw vlager

網(wǎng)絡(luò)名default是0.0.0.0的縮寫,它表示缺省路由器。你無(wú)需把這個(gè)名字添加到/etc/networks中,因?yàn)樗鼉?nèi)建于route中。
當(dāng)你ping一臺(tái)隔著一個(gè)或幾個(gè)網(wǎng)關(guān)的主機(jī)時(shí)看到很高的包丟失率,這可能意味著網(wǎng)絡(luò)很擁擠。包丟失并不主要是技術(shù)上不足的原因,如由于轉(zhuǎn)發(fā)主機(jī)暫時(shí)的超負(fù)荷運(yùn)行,使得它們延遲甚至丟失了輸入的數(shù)據(jù)報(bào)。

5.7.4 配置網(wǎng)關(guān)
配置一臺(tái)機(jī)器使其在兩個(gè)以太網(wǎng)之間交換信息包是非常直接明了的。假設(shè)我們回到vlager上,它配備了兩塊以太網(wǎng)卡,每塊網(wǎng)卡連接一個(gè)網(wǎng)絡(luò)。全部你所要做的是分別配置這兩個(gè)接口,給它們各自的IP地址,并且就這些了!
將兩個(gè)接口的信息按如下方式添加到hosts文件中是非常有用的,我們也有唾手可得的名字:

191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.2.1 vlager-if2

設(shè)置這兩個(gè)接口的命令序列也就成為:

# ifconfig eth0 vlager-if1
# ifconfig eth1 vlager-if2
# route add brew-net
# route add wine-net

5.7.5 PLIP接口
當(dāng)使用PLIP鏈接來(lái)連接兩臺(tái)機(jī)器時(shí),事情就與使用以太網(wǎng)的稍微有些不同。前者是所謂的點(diǎn)對(duì)點(diǎn)的鏈接,因?yàn)橄鄬?duì)于通信網(wǎng)絡(luò)來(lái)說(shuō),它們只包括兩臺(tái)主機(jī)(“點(diǎn)”)。
作為一個(gè)例子,我們考慮虛擬釀酒廠的某個(gè)員工的膝上型電腦(筆記本電腦),它通過(guò)PLIP與vlager連接。筆記本電腦本身叫做vlite,并且只有一個(gè)并行端口。在引導(dǎo)期間,這個(gè)端口將被注冊(cè)為plip1。為了激活這個(gè)連接,你必須使用下列命令配置這個(gè)plip1接口:[6]

# ifconfig plip1 vlite pointopoint vlager
# route add default gw vlager

第一個(gè)命令配置這個(gè)接口,告訴內(nèi)核這是個(gè)點(diǎn)對(duì)點(diǎn)的鏈接,遠(yuǎn)端一邊的地址是vlager。第二個(gè)命令安裝缺省路由器,vlager用作網(wǎng)關(guān)。在vlager上,需用一個(gè)類似的ifconfig命令來(lái)激活連接(路由器啟用是不需的):

# ifconfig plip1 vlager pointopoint vlite
這里有趣的一點(diǎn)是vlager上的plip1接口不需要有一個(gè)獨(dú)立的IP地址,而同樣是地址192.72.1.1。[7]
現(xiàn)在,我們已經(jīng)配置好了從筆記本電腦到釀酒廠網(wǎng)絡(luò)的路由;還缺的是釀酒廠的任何主機(jī)到vlite的路由的方法。一個(gè)特別笨的方法是在指定vlager為網(wǎng)關(guān)的各個(gè)主機(jī)的選路表中增加一特別的到vlite的路由項(xiàng)。

# route add vlite gw vlager

在面對(duì)臨時(shí)路由的一個(gè)更好的選擇是使用動(dòng)態(tài)路由。這樣做的一個(gè)方法是使用gated,一個(gè)路由后臺(tái)服務(wù)程序,它需要你安裝在網(wǎng)絡(luò)上的每臺(tái)主機(jī)上來(lái)動(dòng)態(tài)地發(fā)布選路信息。然而,最簡(jiǎn)單的方法是使用代理(proxy)ARP(地址解析協(xié)議),使用代理ARP,vlager將通過(guò)發(fā)出自己的以太網(wǎng)地址來(lái)響應(yīng)任何對(duì)vlite的ARP請(qǐng)求。這個(gè)的作用是所有到vlite的信息包都送至vlager,然后vlager將信息包轉(zhuǎn)發(fā)到筆記本電腦。我們將在“檢查ARP表”一節(jié)中再討論代理ARP。
以后發(fā)行的Net-3將包含一個(gè)稱為plipconfig的工具,它允許你設(shè)置所使用的打印機(jī)端口的IRQ。今后,這將由更通用的ifconfig命令來(lái)代替。

5.7.6 SLIP和PPP接口
盡管SLIP和PPP鏈接只是簡(jiǎn)單的象PLIP一樣的點(diǎn)對(duì)點(diǎn)連接,但對(duì)它們有很多要討論的。通常,建立一個(gè)SLIP連接包括通過(guò)modem撥號(hào)到遠(yuǎn)程站點(diǎn),并設(shè)置串行線路成SLIP模式。PPP使用同樣的方式。設(shè)置SLIP或PPP所需的工具將在第七章和第八章中描述。

5.7.7 ?。―ummy)接口
啞接口實(shí)在是有一些特殊的,但卻是非常有用的。它的主要好處是,對(duì)于獨(dú)立的主機(jī)以及那些僅有的IP網(wǎng)絡(luò)連接是通過(guò)撥號(hào)連接才有的機(jī)器。實(shí)際上,后者在大多數(shù)時(shí)間也是一臺(tái)獨(dú)立的主機(jī)。
令獨(dú)立主機(jī)進(jìn)退維谷的是它們只有一個(gè)網(wǎng)絡(luò)設(shè)備是激活的,即回送(loopback)接口,該接口通常分配了地址127.0.0.1。然而在某些情況下,你需要將數(shù)據(jù)發(fā)送到“正式的”的本地主機(jī)IP地址上去。例如,考慮筆記本電腦vlite,假設(shè)此時(shí)它沒有連接任何的網(wǎng)絡(luò)。Vlite上的一個(gè)應(yīng)用程序現(xiàn)在可能需要發(fā)送一些數(shù)據(jù)到同一個(gè)主機(jī)的另一個(gè)應(yīng)用程序中。在/etc/hosts中查看vlite,找到它的IP地址是191.72.1.65,所以這個(gè)應(yīng)用程序試圖往這個(gè)地址發(fā)送數(shù)據(jù)。由于回送接口是該機(jī)器上目前唯一活動(dòng)的接口,所以內(nèi)核就根本不知道該地址實(shí)際上就是自己的!作為結(jié)果,內(nèi)核就會(huì)丟棄這個(gè)數(shù)據(jù)報(bào),并且給應(yīng)用程序返回一個(gè)出錯(cuò)信息。
這里就是啞設(shè)備需要起作用的地方。它通過(guò)簡(jiǎn)單地作為回送接口的一個(gè)密友來(lái)解決這個(gè)難題。對(duì)于vlite的情況,你只須簡(jiǎn)單地給它地址191.72.1.65并且加入一個(gè)指向它的主機(jī)路由。此時(shí),到191.72.1.65的每個(gè)數(shù)據(jù)報(bào)都將在本地投遞了。正確的調(diào)用是:

# ifconfig dummy vlite
# route add vlite

5.8 關(guān)于ifconfig
ifconfig還有比我們?cè)谏厦嫠懻摰母嗟膮?shù)。它通常的調(diào)用是:

ifconfig interface [[-net|-host] address [parameters]]

interface是接口名字,address是分配給該接口的IP地址。它可以是一個(gè)點(diǎn)分四組表示的IP地址;或者是一個(gè)ifconfig可以在/etc/hosts和/etc/networks中查到的名字。-net和-host選項(xiàng)分別迫使ifconfig將地址作為網(wǎng)絡(luò)號(hào)或主機(jī)地址來(lái)對(duì)待。
如果ifconfig只帶一個(gè)接口名來(lái)調(diào)用,它就顯示出該接口的配置。當(dāng)不待任何參數(shù)來(lái)調(diào)用,它就顯示你目前已設(shè)置的所有接口的配置;-a選項(xiàng)迫使ifconfig同時(shí)也顯示不活動(dòng)的接口。對(duì)以太網(wǎng)接口eth0的一個(gè)調(diào)用樣本可能看上去象這樣:

# ifconfig eth0
eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0

MTU和度量域顯示出該接口的當(dāng)前MTU和度量值。傳統(tǒng)上,度量值被用于某些操作系統(tǒng)計(jì)算路由的代價(jià)。Linux還沒有使用這個(gè)值,但為了兼容性而定義了它。
RX和TX行顯示出有多少個(gè)包已被無(wú)錯(cuò)地接收和發(fā)送了、發(fā)生了多少個(gè)錯(cuò)誤、有多少個(gè)包丟失了(通常是由于內(nèi)存不足)、有多少個(gè)包由于超限而丟失了。接收器超限發(fā)生通常是由于到來(lái)的包的速率快于內(nèi)核可以對(duì)最后一個(gè)中斷的響應(yīng)。Ifconfig所打印出的標(biāo)志值或多或少與它的命令行選項(xiàng)的名字相對(duì)應(yīng);它們將在下面給出解釋。
下面是ifconfig所能識(shí)別的參數(shù)的一個(gè)列表,相應(yīng)的標(biāo)志名在括號(hào)中給出。簡(jiǎn)單地打開一個(gè)特性的選項(xiàng)同樣也能在該選項(xiàng)的前面加上一短劃(-)再來(lái)關(guān)閉這個(gè)特性。

Up
這標(biāo)記一個(gè)接口為“up”,也即可以訪問(wèn)IP層。在命令行上給出地址時(shí),就隱含了該選項(xiàng)。它也可以用于重新使能被down選項(xiàng)臨時(shí)關(guān)閉的接口。(這個(gè)選項(xiàng)與標(biāo)志UP RUNNING相對(duì)應(yīng)。)
down
這標(biāo)記一個(gè)接口為“down”,也即不可以訪問(wèn)IP層。這有效地禁止了通過(guò)該接口的任何通信。注意,這并不刪除自動(dòng)使用該接口的所有選路項(xiàng)。如果你要永遠(yuǎn)地停掉該接口,你應(yīng)該刪除這些路由項(xiàng)并且提供可能的其它選路信息。
Netma

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多