Linux简明系统维护手册
Linux簡(jiǎn)明系統(tǒng)維護(hù)手冊(cè)
摘要
? ? 本文是長(zhǎng)期工作經(jīng)驗(yàn)的總結(jié),說(shuō)明了Linux下各種主要網(wǎng)絡(luò)應(yīng)用的配置實(shí)例,對(duì)接觸Linux時(shí)間不長(zhǎng)的同學(xué)們很有參考價(jià)值。注意:其中有些應(yīng)用還是很復(fù)雜的呀。文中VPN技術(shù)部分要感謝老井無(wú)私的提供支持,這是我們共同的完成的。(2002-11-01 16:50:49)
By atan
作者:阿譚
前言
有同事已經(jīng)通過(guò)艱苦的工作完成了長(zhǎng)達(dá)好幾百頁(yè)的關(guān)于Linux的文檔。事實(shí)上,在網(wǎng)上還有超過(guò)好幾萬(wàn)頁(yè)的各種關(guān)于Linux的技術(shù)精華,還不包括英文的。有數(shù)萬(wàn)程序員和網(wǎng)絡(luò)專家在為這個(gè)軟件努力工作。這就是自由的魅力。
我使用Linux有不少時(shí)間了,期間也經(jīng)歷過(guò)無(wú)數(shù)的挫折,同時(shí)也得到過(guò)很多高手的幫助。我一向喜歡言簡(jiǎn)意賅的文字。通過(guò)下面的簡(jiǎn)單句子和代碼,我希望能夠表達(dá)出我使用Linux的體會(huì)。也許本文的結(jié)構(gòu)比較凌亂,但我希望它的每一句話都是對(duì)你有用的。當(dāng)然,你要知道一些更詳細(xì)的東西,請(qǐng)參閱我同事寫的文檔。
當(dāng)然,能夠通過(guò)查閱這個(gè)文檔,使你的工作順利是我最大的心愿。
一、關(guān)于Linux的誤區(qū)
1、Linux干什么用?
首先,很少有人用Linux做桌面系統(tǒng),因?yàn)閃indows桌面系統(tǒng)已經(jīng)足夠好了。我們主要把Linux用作網(wǎng)絡(luò)服務(wù)器的操作系統(tǒng)。如果你和你的應(yīng)用符合下面的幾條,那么你合適使用Linux:
*不愿意花錢在操作系統(tǒng)和網(wǎng)絡(luò)應(yīng)用上。
*用D版系統(tǒng)受良心譴責(zé)或害怕承擔(dān)責(zé)任。
*想得到和花錢的系統(tǒng)差不多的性能。
*在用戶面前顯得水平較高。
*認(rèn)識(shí)幾個(gè)弄Linux的高手,或者知道在哪里能夠找到問(wèn)題答案。
2、每種Linux發(fā)行包差別很多嗎?
如果你在上世紀(jì)80年代末到95年之前這段時(shí)間大量使用PC機(jī)的話,那對(duì)于Linux你應(yīng)該很好理解:它就象一個(gè)有著32位搶先多任務(wù)核心的 DOS,其區(qū)別在于外表看起來(lái)像是一種UNIX。Linux是好多人用智慧堆砌起來(lái)的,初學(xué)者經(jīng)常問(wèn):“RedHat好還是Slackware好?”。這個(gè)人同時(shí)還面臨上百種選擇,這的確讓人頭痛。大部分Linux發(fā)行包實(shí)際上很簡(jiǎn)單,幾乎所有的發(fā)行包都有相同的內(nèi)核(也許是不同版本),外部命令和數(shù)據(jù)文件的差別也僅僅局限于在文件系統(tǒng)中的存放位置不同(這導(dǎo)致了某些兼容性問(wèn)題,因?yàn)樵谀承┑胤秸也坏教囟ǖ奈募?#xff09;。另外就是有些發(fā)行包為了顯示自己的卓而不群,在發(fā)行包中增加了一些自己的實(shí)用程序。實(shí)際上動(dòng)手修改內(nèi)核的廠商不算太多,因?yàn)檫@樣會(huì)內(nèi)核官方版本的不斷更新而手忙腳亂。當(dāng)然有一些嵌入式系統(tǒng)開(kāi)發(fā)商在Linux基礎(chǔ)上做了自己的系統(tǒng)另說(shuō)。
擁有眾多的發(fā)行包是Linux的一個(gè)很討厭的問(wèn)題,在這一點(diǎn)上,我更喜歡FreeBSD,因?yàn)樗挥幸粋€(gè)官方發(fā)行版本,也運(yùn)行得比較穩(wěn)定。可給 Linux做軟件的程序員太多了,Linux上面的資料也更多。記住:當(dāng)一個(gè)家伙跟你說(shuō)用哪個(gè)發(fā)行版本無(wú)所謂的時(shí)候,那他就是專家。
3、Linux業(yè)余愛(ài)好者的東西嗎?
這樣的宣傳給了很多人這樣的印象。其實(shí),Linux是一個(gè)嚴(yán)肅的操作系統(tǒng),擁有一切操作系統(tǒng)共有的特性。它可以用在很多嚴(yán)肅的場(chǎng)合。
4、Linux性能比Windows更好嗎?
這里的答案會(huì)讓你失望,據(jù)我以往的實(shí)際測(cè)試,2.2版本的Linux核心的性能比windows2000要低。值得欣慰的是2.4版本的核心性能有大幅度提高基本上接近了Windows2000。但Windows2000復(fù)雜的圖形界面占用了相當(dāng)?shù)南到y(tǒng)資源。
5、Linux比Windows更復(fù)雜更專業(yè)嗎?
從復(fù)雜度上說(shuō),Windows2000要比Linux復(fù)雜很多。在核心技術(shù)上,Windows也更先進(jìn)。
6、Linux更可靠嗎?
應(yīng)該從兩個(gè)角度評(píng)價(jià)系統(tǒng)的可靠性。(1)系統(tǒng)自身的可靠性,兩者象差不多。人們普遍認(rèn)為的Windwos不如Linux可靠的印象來(lái)源于 Windows眾多的良莠不齊的軟件。當(dāng)然,Linux比Windows結(jié)構(gòu)簡(jiǎn)單,在一定程度上也可以提高可靠性。(2)從安全性角度來(lái)說(shuō),Linux遠(yuǎn)遠(yuǎn)高于Windows系統(tǒng),道理很簡(jiǎn)單:樹(shù)大招風(fēng)嘛。另外,Linux的源代碼開(kāi)放機(jī)制使得漏洞發(fā)現(xiàn)和消滅得很快。而Windows相對(duì)就顯得比較官僚了。這里補(bǔ)充一點(diǎn),我用過(guò)的最可靠的系統(tǒng)是BSD類的OS,可靠性和安全性都可圈可點(diǎn)。
7、Linux真的不用花一分錢嗎?
大部分的發(fā)行包需要花少量的錢購(gòu)買。當(dāng)然你也可以從網(wǎng)絡(luò)上DOWN。其實(shí)這些發(fā)行包未必符合你的應(yīng)用,一般都需要經(jīng)過(guò)一些改動(dòng)和定制才能運(yùn)行好。當(dāng)然,花的錢跟Windows沒(méi)法比。
二、Linux安裝注意事項(xiàng)
現(xiàn)在的大部分發(fā)行包都很容易安裝,基本上都是圖形向?qū)降?#xff0c;每個(gè)發(fā)行包都不太相同,也無(wú)法一一描述,如果你連安裝都不明白,那就別用Linux了。這里僅僅說(shuō)明幾個(gè)注意的問(wèn)題。
1、如果要和Windows混裝,一定要先裝Windows,后裝Linux。
2、分區(qū)的時(shí)候,根據(jù)計(jì)劃安裝的軟件靈活決定分區(qū)。一般分區(qū)有:/,/root,/usr,/var和swap分區(qū),其中swap分區(qū)類型和其他不同需要專門選擇一下,它的空間一般是物理內(nèi)存的兩倍即可。/root分區(qū)是緊急情況root用的,有64兆就行了。
3、當(dāng)然,為了方便,你可以安裝發(fā)行包給你做好的軟件。但我安裝Linux的習(xí)慣做法是開(kāi)始就安裝一個(gè)最小系統(tǒng),然后安裝所有的編譯工具。安裝編譯工具的方法一般都通過(guò)你用的發(fā)行包的包管理工具實(shí)現(xiàn),這樣最方便。比如在TurboLinux中,運(yùn)行/usr/sbin/Turbopkg就可以了。在管理工具中選擇所有關(guān)于Developoment相關(guān)的選項(xiàng)或gcc相關(guān)選項(xiàng),一般就可以了。
4、lilo一定要裝。否則一旦出現(xiàn)分區(qū)問(wèn)題都不好辦。
5、如果和Windows混裝的時(shí)候,裝完了系統(tǒng)起不來(lái)了。可以用98啟動(dòng)盤啟動(dòng),然后用FDISK /MBR回復(fù)主引導(dǎo)分區(qū)來(lái)保住Windows分區(qū)。
在安裝了最小系統(tǒng)和全套的編譯器后,我們應(yīng)該得到一個(gè)比較干凈的系統(tǒng)。在這個(gè)系統(tǒng)上,可以下載和安裝各種應(yīng)用軟件了。
三、基本使用
1、文件系統(tǒng)
無(wú)論有多少個(gè)分區(qū),整個(gè)文件系統(tǒng)都是一棵完整的樹(shù)結(jié)構(gòu)。經(jīng)常用到的目錄有:
(1)/usr:存放各種應(yīng)用程序文件用。其中的/usr/local用來(lái)存放后安裝的軟件
(2)/var:用來(lái)存放所有的數(shù)據(jù)文件
(3)/proc:里面的文件用來(lái)表示系統(tǒng)內(nèi)核的各種配置和狀態(tài)。這一塊不是真正的文件系統(tǒng),而是內(nèi)存里面的各種數(shù)據(jù)。可以從這里得到一些常用的系統(tǒng)信息。比如CPU內(nèi)存什么的。
(4)/etc:這里是放置所有的系統(tǒng)配置文件。一般情況下,后安裝的軟件的配置文件不會(huì)放到這里。除非你是用RPM安裝的隨發(fā)行包配的軟件或者故意這樣做。我不喜歡把不同軟件的文件混在一起,因此通常讓不同的軟件的配置文件放在各自的目錄中。
2、常用的命令
這里我列出一些經(jīng)常用的命令,具體的用法可以參見(jiàn)相關(guān)手冊(cè)頁(yè)(希望你的英文不象我這么差)。
vi(一定要會(huì)用這個(gè)你非常討厭的東西,如果你屈服了,可以選擇另一個(gè)叫做pico的編輯器,它有點(diǎn)象DOS的edit)
head(用來(lái)看很長(zhǎng)的文件用)
tail(同上)
netstat(看網(wǎng)絡(luò)狀態(tài))
tar(解開(kāi).tar.gz的壓縮包)
ps(察看進(jìn)程)
kill(干掉進(jìn)程)
top(看系統(tǒng)狀況)
shutdown(關(guān)閉系統(tǒng))
cat(看文件內(nèi)容)
ping (看網(wǎng)絡(luò)連通狀況)
ftp(傳輸文件)
man(手冊(cè))
上面這些命令都是最最常用的,一定要把基本用法記牢。事實(shí)上,每人能記住全部命令或一個(gè)命令的全部參數(shù),記住幾個(gè)常用的就行了。其他的查書。
3、內(nèi)核升級(jí)
如果你不愿意冒險(xiǎn),可以跳過(guò)這個(gè)部分。不過(guò)根據(jù)我實(shí)際使用的經(jīng)驗(yàn),2.4.x版本的內(nèi)核性能比2.2.x的性能至少提高40%,還是很值得一試的。現(xiàn)在最新的發(fā)行包幾乎都帶有新的2.4內(nèi)核,但是版本號(hào)想對(duì)保守。這里,我的建議是在決定升級(jí)任何部分的時(shí)候,一定要首先看一下所謂的 “currect version release note”信息,里面告訴你本次版本升級(jí)都有些什么改動(dòng)。如果改動(dòng)的內(nèi)容不涉及你當(dāng)前的環(huán)境或需求,只是增加了一些邪門設(shè)備的驅(qū)動(dòng),你大可不必急著升級(jí)。補(bǔ)充一句話:Linux的內(nèi)核版本號(hào)的中間一位是奇數(shù)的是非穩(wěn)定版本,比如2.3,是偶數(shù)的才是穩(wěn)定版本。
升級(jí)內(nèi)核的步驟如下:
(1)首先在網(wǎng)上找到你打算升級(jí)的內(nèi)核文件,一般名字是:linux-2.x.xx.tar.gz,把這個(gè)文件復(fù)制到/usr/src。(不知道在哪里找?看看:http://www.kernel.org ,最好找到.tar.gz格式的,比如這里:http://www.kernel.org/pub/linux/kernel/v2.x/)。下面的升級(jí)舉例是從2.2.18升級(jí)到2.5.7(這是最新的內(nèi)核了,你使用其它的版本別忘了改變版本號(hào))
(2)解壓縮:tar zxvf linux-2.5.7.tar.gz后生成一個(gè)目錄:linux-2.5.7。
(3)進(jìn)入/usr/src,用ls –l 命令可以看到src里面有一個(gè)連接,類似于:linux -> linux-2.2.18/ (連接指向你當(dāng)前用的內(nèi)核版本)。首先刪除這個(gè)連接(rm linux),用ln -s linux-2.5.7 linux 命令重建連接。我想你一定不會(huì)連這里的版本號(hào)都照抄吧?
(4)進(jìn)入linux-2.5.7 目錄,如果不是第一次編譯這個(gè)內(nèi)核,最好用命令:make mrproper 刪掉上次編譯產(chǎn)生的.o文件等,當(dāng)然以前保存的配置也丟了。
(5)用命令:make menuconfig命令調(diào)整內(nèi)核配置以適應(yīng)你目前的環(huán)境,記住,不懂的配置不要亂動(dòng)。首要任務(wù)是調(diào)整各種硬件的環(huán)境,比如SCSI卡:SCSI support/SCSI low-level drivers,不知道現(xiàn)在的SCSI卡型號(hào)?在/proc/scsi中可以找到。還有網(wǎng)卡,在Network Device Support 里面。不知道現(xiàn)在的網(wǎng)卡型號(hào)?在這個(gè)文件里面寫著呢:/proc/net/PRO_LAN_Adapters/eth0.info或/proc/pci文件中也可以找到 。在menuconfig中用空格鍵改變選項(xiàng)狀態(tài),前面的<*>表示該功能編譯在內(nèi)核中,主要是運(yùn)行速度快。< >表示不需要該功能。表示把該功能編譯成模塊,通常為了減小尺寸,和更換方便而把某些驅(qū)動(dòng)編譯成模塊。
(6)下面的事情比較程序化,照著做:make dep (檢查文件的完整性,過(guò)程很復(fù)雜)
(7)make bzImage 注意大小寫(真正開(kāi)始編譯了耶!我覺(jué)著這個(gè)最過(guò)癮了,屏幕“嘩啦嘩啦”的,這時(shí)候你會(huì)感覺(jué)到,多少不知名的程序員在這個(gè)復(fù)雜的系統(tǒng)中貢獻(xiàn)了自己的一份力量)
(8)make modules (編譯那些被標(biāo)記為的功能模塊或驅(qū)動(dòng)程序)
(9)make modules_install(把編譯好的模塊復(fù)制到指定地點(diǎn),一般是:/lib/modules/ 。注意:不同版本號(hào)的模塊是完全分開(kāi)在不同目錄中的,因?yàn)閙odules跟內(nèi)核是緊密相關(guān)的,混用容易導(dǎo)致系統(tǒng)崩潰)
(10)cd /usr/src/linux-2.5.7/arch/i386/boot ,用命令:cp /usr/src/linux2.5.7/arch/i386/boot/bzImage /boot/vmlinuz-2.5.7 把文件bzImage文件改名成vmlinuz-2.5.7復(fù)制到/boot/
(11)cp /usr/src/linux-2.5.7/System.map /boot/System.map-2.5.7
(12)進(jìn)入/boot目錄,rm System.map
(13)在/boot目錄中運(yùn)行l(wèi)n System.map-2.5.7 System.map 10-13兩個(gè)步驟每次重新編譯都要做。
(14)我開(kāi)始提醒過(guò)的,但愿你安裝了lilo (否則你就高唱:“神啊,救救我吧!”),編輯文件:/etc/lilo.conf ,做下面的編輯:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux-2.5.7
image=/boot/vmlinuz
? ?? ???label=linux
? ?? ???initrd=/boot/initrd
? ?? ???read-only
? ?? ???root=/dev/sda5
image=/boot/vmlinuz-2.5.7
? ?? ???label=linux-2.5.7
? ?? ???initrd=/boot/initrd
? ?? ???read-only
? ?? ???root=/dev/sda5
黑體字部分是后加的和修改的。萬(wàn)一你沒(méi)有安裝lilo,你只能修改/boot下面的連接指向你新的System.map和vmlinuz , 而不用修改lilo了。這樣也能啟動(dòng),但是一旦出現(xiàn)問(wèn)題,你的機(jī)器就啟動(dòng)不了了。
(15)執(zhí)行命令:lilo (用來(lái)更新lilo數(shù)據(jù)),注意輸出的結(jié)果:帶星號(hào)的是缺省的。
(16)祈禱,然后reboot 系統(tǒng)重新啟動(dòng)后,用uname –a 可看到新的內(nèi)核起作用了。如果出現(xiàn)任何問(wèn)題不能引導(dǎo)了,你需要在lilo的引導(dǎo)界面選擇原來(lái)的內(nèi)核啟動(dòng),進(jìn)入系統(tǒng)后重新改變內(nèi)核參數(shù),調(diào)整硬件或其他配置。然后重復(fù)前面所有過(guò)程。
四、主要的軟件安裝
前面說(shuō)過(guò),我的習(xí)慣是,裝系統(tǒng)的時(shí)候就安裝一個(gè)內(nèi)核和編譯系統(tǒng),得到了一個(gè)干凈的系統(tǒng)后,再安裝其他的軟件就比較清晰。另一點(diǎn),除非搞不到源代碼版本,一般情況下我都會(huì)下載官方版本的源代碼文件,來(lái)重新編譯之。同樣的,選擇軟件版本要根據(jù)該軟件的Release Note來(lái)決定,并非越新越好。這就是為什么很多軟件都是幾個(gè)版本齊頭并進(jìn)的發(fā)展之原因。這些軟件不同版本之間的安裝方法會(huì)有少許不同,安裝前一定要仔細(xì)閱讀目錄中的README文件和INSTALL文件,否則這些少許不同會(huì)造成不少得麻煩。下面描述的安裝過(guò)程都核版本號(hào)緊密相關(guān)。另外,所有的軟件都把程序文件的包拷貝到/usr/local/src目錄中再解壓縮,這是習(xí)慣。因?yàn)樵贚inux中習(xí)慣于把后來(lái)的軟件裝在/usr/local中。
(1)安裝DNS服務(wù)器
1、從www.isc.org下載bind 域名服務(wù)器軟件。我們這里用的是bind8.3.0,bind8分支和bind9分支是并行發(fā)展的。根據(jù)自己的實(shí)際情況選擇合適的bind版本。
2、mkdir /usr/src/bind83
3、下載的文件叫bind-src.tar.gz,復(fù)制到/usr/local/src/bind83目錄下。
4、cd /usr/local/src/bind83
5、tar zxvf bind-src.tar.gz
6、cd src
7、make stdlinks
8、make clean
9、make depend
10、make all
11、make install
12、編輯配置文件:/etc/named.conf內(nèi)容如下,需要更改的部分用黑體標(biāo)出:
/*
* This is a worthless, nonrunnable example of a named.conf file that has
* every conceivable syntax element in use.??We use it to test the parser.
* It could also be used as a conceptual template for users of new features.
*/
/*
* C-style comments are OK
*/
// So are C++-style comments
# So are shell-style comments
// watch out for ";" -- it's important!
options {
? ?? ? directory "/var/named";? ?? ?? ?? ?? ???
// use current directory
? ?? ? named-xfer "/usr/libexec/named-xfer";? ?
// _PATH_XFER
? ?? ? dump-file "named_dump.db";? ?? ?? ?? ?
// _PATH_DUMPFILE
? ?? ?pid-file "/var/run/named.pid";? ?? ?? ?
??// _PATH_PIDFILE
? ?? ?statistics-file "named.stats";? ?? ?? ?
// _PATH_STATS
? ?? ?memstatistics-file "named.memstats";? ???
// _PATH_MEMSTATS
? ?? ?check-names master fail;
? ?? ?check-names slave warn;
? ?? ?check-names response ignore;
? ?? ?host-statistics no;
? ?? ?deallocate-on-exit no;? ?? ?? ?? ?? ?? ?
// Painstakingly deallocate all
// objects when exiting instead of
// letting the OS clean up for us.
// Useful a memory leak is suspected.
? ?? ?? ?? ?// Final statistics are written to the
? ?? ?? ?? ?// memstatistics-file.
? ?? ?datasize default;
? ?? ?stacksize default;
? ?? ?coresize default;
? ?? ?files unlimited;
? ?? ?recursion yes;
? ?? ?fetch-glue yes;
? ?? ?fake-iquery no;
? ?? ?notify yes;? ?
// send NOTIFY messages.??You can set
? ?? ?? ?// notify on a zone-by-zone
? ?? ?? ?// basis in the "zone" statement
? ?? ?? ?// see (below)
? ?? ?serial-queries 4;? ?? ?? ?? ?? ?
// number of parallel SOA queries
? ?? ?? ?// we can have outstanding for master
? ?? ?? ?// zone change testing purposes
? ?? ?auth-nxdomain yes;? ?? ?? ?? ?
? ?? ?? ?// always set AA on NXDOMAIN.
? ?? ?? ?// don't set this to 'no' unless
? ?? ?? ?// you know what you're doing -- older
? ?? ?? ?// servers won't like it.
? ?? ?multiple-cnames no;? ?? ?? ?? ?
? ???// if yes, then a name my have more
? ?? ???// than one CNAME RR.??This use
? ?? ???// is non-standard and is not
? ?? ???// recommended, but it is available
? ?? ???// because previous releases supported
? ?? ???// it and it was used by large sites
? ?? ???// for load balancing.
? ???allow-query { any; };
? ???allow-transfer { any; };
? ?? ?transfers-in 10;? ?? ?? ?? ?? ?
// DEFAULT_XFERS_RUNNING, cannot be
? ? // set > than MAX_XFERS_RUNNING (20)
? ?? ?transfers-per-ns 2;? ?? ?? ?? ?
? ?? ?? ?// DEFAULT_XFERS_PER_NS
? ?? ?transfers-out 0;? ?? ?? ?? ?? ?
? ?? ???// not implemented
? ?? ?max-transfer-time-in 120;? ???
? ?? ???// MAX_XFER_TIME; the default number
? ?? ???// of minutes an inbound zone transfer
? ?? ???// may run.??May be set on a per-zone
? ?? ???// basis.
? ???transfer-format one-answer;
? ???query-source address * port *;
/*
? ???* The "forward" option is only meaningful if you've defined
? ???* forwarders.??"first" gives the normal BIND
? ???* forwarding behavior, i.e. ask the forwarders first, and if that
? ???* doesn't work then do the full lookup.??You can also say
? ???* "forward only;" which is what used to be specified with
? ???* "slave" or "options forward-only".??"only" will never attempt
* a full lookup; only the forwarders will be used.
*/
? ? forward first;
? ? forwarders { };? ?? ?? ?? ?? ?
// default is no forwarders
? ?? ?topology { localhost; localnets; };? ???
// prefer local nameservers
? ?? ?listen-on port 53 { any; };? ???
// listen for queries on port 53 on
? ? // any interface on the system
? ? // (i.e. all interfaces).??The
? ? // "port 53" is optional; if you
? ? // don't specify a port, port 53
? ? // is assumed.
? ? /*
? ???* Interval Timers
? ???*/
? ? cleaning-interval 60;? ?? ?? ?
// clean the cache of expired RRs
? ? // every 'cleaning-interval' minutes
? ? interface-interval 60;? ?? ?? ?
// scan for new or deleted interfaces
? ? // every 'interface-interval' minutes
? ? statistics-interval 60;? ?? ?? ?
// log statistics every
? ? // 'statistics-interval' minutes
? ? maintain-ixfr-base no;? ?
// If yes, keep transaction log file for IXFR
? ? max-ixfr-log-size 20;? ?? ???
// Not implemented, maximum size the
? ? // IXFR transaction log file to grow
};
/*
* Control listeners, for "ndc".??Every nameserver needs at least one.
*/
controls {
? ?? ???inet * port 52 allow { any; };
? ?? ?? ?? ? // a bad idea
? ?? ???unix "/var/run/ndc" perm 0600 owner 0 group 0;
// the default
};
zone "rd.xxx.com" in {
? ?? ???type master;? ?? ?? ?? ?? ?? ???
// what used to be called "primary"
? ?? ???file "rd.xxx.com.db";
? ?? ???check-names fail;
? ?? ???allow-update { none; };
? ?? ???allow-transfer { any; };
? ?? ???allow-query { any; };
? ?? ???// notify yes;? ?? ?? ?? ?? ?? ?
// send NOTIFY messages for this
? ?? ?? ?? ?// zone???The global option is used
? ?? ?? ?? ?// if "notify" is not specified
? ?? ?? ?? ?// here.
? ?? ???also-notify { };? ?? ?? ?? ?? ?
// don't notify any nameservers other
? ?? ?? ?? ?// than those on the NS list for this
? ?? ?? ?? ?// zone
};
zone "223.99.211.in-addr.arpa" in {
? ?? ???type master;? ?? ?? ?
? ?? ?? ???// what used to be called "secondary"
? ?? ???file "21.9.22.db";
? ?? ???};
zone "0.0.127.in-addr.arpa" in {
? ?? ???type master;
? ?? ???file "127.0.0.db";
};
zone "." in {
? ?? ???type hint;? ?? ?? ?? ?? ?? ?? ?
// used to be specified w/ "cache"
? ?? ???file "named.root";
};
logging {
? ?? ???/*
? ?? ?? ?* All log output goes to one or more "channels"; you can make as
? ?? ?? ?* many of them as you want.
? ?? ?? ?*/
? ???channel syslog_errors {? ?? ?? ?
// this channel will send errors or
? ?? ???syslog user;? ?? ?? ?? ?
// or worse to syslog (user facility)
? ?? ???severity error;
? ???};
? ? category parser {
? ?? ? syslog_errors;
? ?? ?? ? // you can log to as many channels
? ?? ? default_syslog;? ???
??// as you want
? ? };
? ? category lame-servers { null; };? ?? ?
// don't log these at all
? ? channel moderate_debug {
? ?? ? severity debug 3;? ?? ?? ?? ???
// level 3 debugging to file
? ?? ? file "foo";? ?? ?? ?? ?? ?? ?? ?
// foo
? ?? ? print-time yes;? ?? ?? ?? ?? ???
// timestamp log entries
? ?? ? print-category yes;? ?? ?? ?? ?
// print category name
? ?? ? print-severity yes;? ?? ?? ?? ?
// print severity level
? ?? ?? ?/*
? ?? ?? ? * Note that debugging must have been turned on either
? ?? ?? ? * on the command line or with a signal to get debugging
? ?? ?? ? * output (non-debugging output will still be written to
? ?? ?? ? * this channel).
? ?? ?? ? */
? ?? ???};
? ? /*
? ???* If you don't want to see "zone XXXX loaded" messages but do
? ???* want to see any problems, you could do the following.
? ???*/
? ? channel no_info_messages {
? ?? ?? ?? ?syslog;
? ?? ?? ?? ?severity notice;
? ? };
? ? category load { no_info_messages; };
? ? /*
? ???* You can also define category "default"; it gets used when no
? ???* "category" statement has been given for a category.
? ???*/
? ? category default {
? ?? ?? ? default_syslog;
? ?? ?? ? moderate_debug;
? ? };
};
13、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:rd.xxx.com.db,內(nèi)容如下,需要修改和調(diào)整相應(yīng)部分:
;Authoriative data for rd.xxx.com
;
$TTL 3600
@??IN??SOA??compaq.rd.xxx.com. tandongyu.rd.xxx.com. (
20020101? ?? ???;Serial
3600? ?? ?? ?? ?;Refresh 1 hour
900? ?? ?? ?? ? ;Retry 15 mins
604800? ?? ?? ? ;Expire 7 days
86400)? ?? ?? ? ;Mini 24 hours
;Name server NS records
@??IN? ? NS? ?? ?compaq.rd.xxx.com.
;Mail Exchange (MX) records
rd.xxx.com.? ?IN??MX? ?? ?0? ?? ? compaq
;Address (A) records.
localhost? ?? ? IN? ?? ?A? ?? ? 127.0.0.1
compaq? ?? ?? ? IN? ?? ?A? ?? ? 21.9.22.9
tls65? ?? ?? ???IN? ?? ?A? ?? ? 21.9.22.8
fbsd? ?? ?? ?? ?IN? ?? ?A? ?? ? 21.9.22.7
14、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:21.9.22.db,內(nèi)容如下,你需要修改相應(yīng)部分:
;
;
$TTL 3600
@??IN SOA??compaq.rd.xxx.com.? ?? ?? ?tandongyu.rd.xxx.com. (
20020101? ?? ???;Serial
3600? ?? ?? ?? ?;Refresh
900? ?? ?? ?? ? ;Retry 15 mins
604800? ?? ?? ? ;Expire 7 days
86400)? ?? ?? ? ;Mini 24 hours
;NameServer (NS) records
@? ?? ? IN? ?? ?NS? ?? ?compaq.rd.xxx.com.
;Address Point to Name (PTR) records
9? ?? ? IN? ?? ?PTR? ???compaq.rd.xxx.com.
8? ?? ? IN? ?? ?PTR? ???tls65.rd.xxx.com.
7? ?? ? IN? ?? ?PTR? ???fbsd.rd.xxx.com.
15、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:127.0.0.db,內(nèi)容如下,你需要修改相應(yīng)部分:
; 0.0.127.in-addr.arpa
$TTL 3600
@? ? IN? ?SOA? ???compaq.rd.xxx.com. tandongyu.rd.xxx.com. (
20020101;serial
? ?? ?? ?3600? ? ;refresh
? ?? ?? ?1800? ? ;retry
? ?? ?? ?604800??;expiration
? ?? ?? ?3600 )??;minimum
? ? IN? ???NS? ?? ?compaq.rd.xxx.com.
1? ?? ???IN? ???PTR? ???localhost.
16、在/var/named/中生成/etc/named.conf中標(biāo)記的文件:named.root,內(nèi)容大致如下。該文件標(biāo)記了14個(gè)域名服務(wù)器。可以從ftp.rs.internic.net獲得該文件的最新樣本:named.hosts,然后改名成你需要的名字,比如: named.root
;? ?? ? This file holds the information on root name servers needed to
;? ?? ? initialize cache of Internet domain name servers
;? ?? ? (e.g. reference this file in the "cache??.??"
;? ?? ? configuration file of BIND domain name servers).
;
;? ? This file is made available by InterNIC registration services
;? ? under anonymous FTP as
;? ? file? ?? ?? ?? ?? ? /domain/named.root
;? ? on server? ?? ?? ???FTP.RS.INTERNIC.NET
;? ?? ? -OR- under Gopher at? ? RS.INTERNIC.NET
;? ?? ?? ???under menu? ?? ?? ? InterNIC Registration Services (NSI)
;? ?? ?? ?? ???submenu? ?? ?? ? InterNIC Registration Archives
;? ?? ?? ???file? ?? ?? ?? ?? ? named.root
;
;? ?? ? last update:? ? Aug 22, 1997
;? ?? ? related version of root zone:? ?1997082200
;
;
; formerly NS.INTERNIC.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000??IN??NS? ? A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.41.0.4
;
; formerly NS1.ISI.EDU
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.9.0.107
;
; formerly C.PSI.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.33.4.12
;
; formerly TERP.UMD.EDU
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.8.10.90
;
; formerly NS.NASA.GOV
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.203.230.10
;
; formerly NS.ISC.ORG
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???128.63.2.53
;
; formerly NIC.NORDU.NET
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???193.0.14.129
;
; temporarily housed at ISI (IANA)
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???198.32.64.12
;
; housed in Japan, operated by WIDE
;
.? ?? ?? ?? ?? ?? ?? ?? ?3600000? ?? ?NS? ? M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.? ?? ?3600000? ?? ?A? ???202.12.27.33
; End of File
17、我們還需要配置/etc/resolv.conf、/etc/hosts、/etc/hosts.conf文件以適應(yīng)新的狀況。
18、一切都結(jié)束后,用/usr/sbin/ndc start命令啟動(dòng)bind,同樣的可用stop、restart、reload等命令參數(shù)操作。
19、啟動(dòng)后用nslookup命令(有的系統(tǒng)推薦使用dig命令)檢驗(yàn)是否正確。如果出現(xiàn)錯(cuò)誤,該命令將不能啟動(dòng)。一般的錯(cuò)誤都是數(shù)據(jù)庫(kù)文件或配置文件筆誤所至。比如少個(gè)“.”或者文件明不正確等等。
(2) 安裝sendmail服務(wù)器
1、從www.sendmail.org下載最新的版本(這個(gè)snedmail倒是有必要升級(jí)為最新的版本,因?yàn)樗纳?jí)主要是安全漏洞問(wèn)題)。這里說(shuō)明的是用的sendmail-8.12.2.tar.gz
2、cd /usr/local/src/
3、把文件下載到:/usr/local/src中
4、tar zxvf sendmail-8.12.2.tar.gz
5、cd /usr/local/src/sendmail-8.12.2
6、chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
7、chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
8、cd /usr/local/src/sendmail-8.12.2/sendmail
9、sh Build
10、cd /usr/local/src/sendmail-8.12.2/cf/cf
11、建立文件sendmail.mc內(nèi)容如下,你可根據(jù)需要修改相應(yīng)部分。
divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
dnl file. If you modify thei file you will have to regenerate the
dnl /etc/sendmail.cf by running this macro config through the m4
dnl preprocessor:
dnl m4 /etc/sendmail.mc > /etc/sendmail.cf
dnl You will need to have the Sendmail-cf pacage installed for this to work.
include(`/usr/local/src/sendmail-8.12.2/cf')
? ? define(`confDEF_USER_ID',`8:12')
? ? OSTYPE(`linux')
? ? undefine(`UUCP_RELAY')
? ? undefine(`BITNET_RELAY')
? ? define(`confTO_CONNECT', `1m')
? ? define(`confTRY_NULL_MX_LIST',true)
? ? define(`confDONT_PROBE_INTERFACES',true)
? ? define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
? ? define(`SMART_HOST',compaq.rd.xxx.com)
<---這條用于(非HUB)缺省使用HUB發(fā)送郵件
? ? MASQUERADE_AS(`rd.xxx.com')? ?? ???
? ?? ? <-------------------------
? ? FEATURE(`masquerade_entire_domain')? ???
? ?<---這三條用于郵件地址偽裝
? ? FEATURE(`masquerade_envelope')? ?? ?? ?? ?
<-------------------------
? ? FEATURE(`smrsh',`/usr/sbin/smrsh')
? ? FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
? ? FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
? ? FEATURE(redirect)
? ? FEATURE(always_add_domain)
? ? FEATURE(use_cw_file)
? ? FEATURE(local_procmail)
? ? FEATURE(`access_db')
? ? FEATURE(`blacklist_recipients')
? ? FEATURE(`accept_unresolvable_domains')
? ? MAILER(smtp)
? ? MAILER(procmail)
? ? dnl We strongly recommend to comment this one out if you want to protect
? ? dnl yourself from spam. However, the laptop and users on computers that do
? ? dnl not hav 24x7 DNS do need this.
? ? dnl FEATURE(`relay_based_on_MX')? ?
12、sh Build install-cf
13、groupadd smmsp
14、useradd smmsp
15、cd cd /usr/local/src/sendmail-8.12.2/sendmail
16、sh Build install
17、cd /usr/local/src/sendmail-8.12.2/makemap
18、sh Build clean
19、sh Build all
20、sh Build install
21、cd /usr/local/src/sendmail-8.12.2/
22、在本域DNS主數(shù)據(jù)庫(kù)文件中增加MX紀(jì)錄:
rd.xxx.com.? ?? ???IN? ?? ?MX? ?? ?0? ?? ? compaq
注意修改相應(yīng)部分。那個(gè)0是有幾個(gè)郵件集中器的時(shí)候用于標(biāo)記先后順序的。當(dāng)有好幾個(gè)MX的時(shí)候,建議順序?qū)憺?0、20、30…
23、在/etc/mail目錄下創(chuàng)建access文件,內(nèi)容類似如下:
? ? ? ? 127.0.0.1 RELAY
? ? ? ? 21.9.22 RELAY
? ? ? ? 211.99.221.238 RELAY
然后:makemap hash access.db < access
24、創(chuàng)建文件/etc/mail/local-host-names,其內(nèi)容為本機(jī)的擁有的域名信息。
rd.xxx.com
compaq.rd.xxx.com
25、創(chuàng)建文件/etc/mail/aliases,內(nèi)容類似:
MAILER-DAEMON: postmaster
? ? ? ? postmaster: root
? ? ? ? bin: root
? ? ? ? daemon: root
? ? ? ? nobody: root
運(yùn)行newaliases創(chuàng)建數(shù)據(jù)庫(kù)。
創(chuàng)建別名文件的意義之一在于當(dāng)郵件發(fā)往域中其他郵件服務(wù)器的用戶而不是mail HUB用戶的時(shí)候用。
比如增加一條:
atan: atan@fbsd
則導(dǎo)致郵件發(fā)往mail HUB的時(shí)候自動(dòng)轉(zhuǎn)發(fā)到atan@fbsd.rd.xxx.com
26、啟動(dòng)sendmail: /usr/sbin/sendmail -bd -q30m
排錯(cuò):如果有問(wèn)題導(dǎo)致啟動(dòng)不了,大部分問(wèn)題和DNS配置有關(guān),可以使用nslookup檢查DNS是否正常。挨個(gè)檢查/etc/mail中的文件內(nèi)容也是排錯(cuò)的好辦法。另外,修改配置,不建議直接編輯sendmail.cf文件,建議使用m4宏編譯工具,因?yàn)橛行в邪踩┒椿蜻^(guò)時(shí)的宏在編譯的時(shí)候會(huì)有提示,這樣以免造成相關(guān)安全問(wèn)題。
| (3)安裝DHCP服務(wù)器 1、源程序下載地址是:ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.tar.gz ,我們的版本是:dhcpd-3.0 2、復(fù)制到:/usr/local/scr后解壓:tar zxvf dhcp-3.0.tar.gz 3、cd /usr/local/src/dhcp-3.0.tar.gz 4、./configure 5、make(如果不是第一次編譯,先make clean) 6、make install 7、cp ./server/dhcpd.conf /etc 8、編輯這個(gè)文件,看起來(lái)類似下面這樣:(要更改的地方用粗體標(biāo)出) # dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... option domain-name "rd.xxx.com"; option domain-name-servers compaq.rd.xxx.com; default-lease-time 86400; max-lease-time 172800; ddns-update-style ad-hoc; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. # This is a very basic subnet declaration. subnet 21.9.22.0 netmask 255.255.255.224 { range 21.9.22.2 21.9.22.6; option routers 21.9.22.1; } # This declaration allows BOOTP clients to get dynamic addresses, # which we don't really recommend. #subnet 10.254.239.32 netmask 255.255.255.224 { #??range dynamic-bootp 10.254.239.40 10.254.239.60; #??option broadcast-address 10.254.239.31; #??option routers rtr-239-32-1.example.org; #} # A slightly different configuration for an internal subnet. #subnet 10.5.5.0 netmask 255.255.255.224 { #??range 10.5.5.26 10.5.5.30; #??option domain-name-servers ns1.internal.example.org; #??option domain-name "internal.example.org"; #??option routers 10.5.5.1; #??option broadcast-address 10.5.5.31; #??default-lease-time 600; #??max-lease-time 7200; #} # Hosts which require special configuration options can be listed in # host statements.? ?If no address is specified, the address will be # allocated dynamically (if possible), but the host-specific information # will still come from the host declaration. #host passacaglia { #??hardware ethernet 0:0:c0:5d:bd:95; #??filename "vmunix.passacaglia"; #??server-name "toccata.fugue.com"; #} # Fixed IP addresses can also be specified for hosts.? ?These addresses # should not also be listed as being available for dynamic assignment. # Hosts for which fixed IP addresses have been specified can boot using # BOOTP or DHCP.? ?Hosts for which no fixed address is specified can only # be booted with DHCP, unless there is an address range on the subnet # to which a BOOTP client is connected which has the dynamic-bootp flag # set. #host fantasia { #??hardware ethernet 08:00:07:26:c0:a5; #??fixed-address fantasia.fugue.com; #} # You can declare a class of clients and then do address allocation # based on that.? ?The example below shows a case where all clients # in a certain class get addresses on the 10.17.224/24 subnet, and all # other clients get addresses on the 10.0.29/24 subnet. #class "foo" { #??match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; #} #shared-network 224-29 { #??subnet 10.17.224.0 netmask 255.255.255.0 { #? ? option routers rtr-224.example.org; #??} #??subnet 10.0.29.0 netmask 255.255.255.0 { #? ? option routers rtr-29.example.org; #??} #??pool { #? ? allow members of "foo"; #? ? range 10.17.224.10 10.17.224.250; #??} #??pool { #? ? deny members of "foo"; #? ? range 10.0.29.10 10.0.29.230; #??} 上面這個(gè)文件中后面都是注釋,是原來(lái)系統(tǒng)給你的配置做的例子,可以不要。當(dāng)然除非你用到它們,并且清楚它們的含義。 9、建立空文件:touch /var/state/dhcp/dhcpd.leases空文件 10、檢查內(nèi)核編譯選項(xiàng):Networking options-----Packet socket: mmapped IO和Socket Filtering選項(xiàng)是否被選中(不知道怎么看?看看前面的文章,用make menuconfig呀),如果沒(méi)有就需要重新編譯內(nèi)核了。 11、route add -host 255.255.255.255 dev eth0 12、roote add -host localhost dev eth0 13、在/etc/rc.d/rc.local最后增加一行route add -host 255.255.255.255 dev eth0 14、reboot系統(tǒng) 15、用dhcpd命令啟動(dòng)DHCP,用其他的機(jī)器試試看能不能自動(dòng)配置網(wǎng)絡(luò)了。 (4) 安裝apache+mysql+php+gd+png+zlib+jpeg+freetype+sslmod 這么一大堆東西為什么要一塊說(shuō)呢?因?yàn)樗麄冎虚g是有緊密聯(lián)系的,尤其是那個(gè)PHP,用到其他所有的模塊。要想PHP功能全,只能一步步來(lái)了。 1、首先安裝MYSQL:從http://www.mysql.com/downloads/index.html下載自己覺(jué)得合適的版本。這里用3.23.42版本。 2、進(jìn)入目錄/usr/local/src(這個(gè)以后就不用說(shuō)了吧?)解壓縮:tar zxvf mysql-3.23.42.tar.gz 3、cd mysql-3.23.42/ 4、configure --prefix=/usr/local/mysql 5、make 6、make install 7、useradd mysql ; groupadd mysql ; su mysql ;(建立命名為mysql的用戶和組,并切換為mysql身份) 8、scripts/mysql_install_db (建立數(shù)據(jù)庫(kù)結(jié)構(gòu)) 9、cd /usr/local/mysql/bin 10、./safe_mysqld & (啟動(dòng)了) 11、./mysqladmin -u root password "new-password"(你的新密碼,記住MYSQL的密碼核系統(tǒng)密碼是獨(dú)立的,缺省是沒(méi)有密碼) 12、用mysql程序試試看。 下面的步驟都很程式化,我盡量簡(jiǎn)潔地寫出。 13、下載相關(guān)的軟件包:地址表格如下 軟件 ? ? ? ?? ? 版本 ? ? ? ? 地址 jpegsrc.v6b.tar.gz 6b? ?? ???ftp://ftp.uu.net/graphics/jpeg zlib.tar.gz? ? ? ?? ???1.1.3? ?? ???ftp://ftp.uu.net/graphics/png/src freetype-2.0.8.tar.gz??2.0.8? ?? ? http://www.freetype.org libpng-1.0.10.tar.gz? ?1.0.10? ?? ???ftp://ftp.uu.net/graphics/png/src gd-1.8.4.tar.gz? ? ? ?? ?? ?1.8.4? ?? ?? ?http://www.boutell.com/gd apache_1.3.23.tar.gz? ?1.3.23? ?? ?? ?http://www.apache.org php-4.1.1.tar.gz? ? ? ?? ?? ?4.1.1? ?? ?? ?http://www.php.net number4.tar.gz? ?? ?? ? ? ? 4? ?? ???http://www.php.net/extra rsaref20.tar.Z? ? ? ?? ?? ? 2.0? ?? ???ftp://ftp.ai.mit.edu/pub/deberg openssl-engine-0.9.6c.tar.gz??0.9.6c? ?? ?? ?http://www.openssl.org/source mod_ssl-2.8.6-1.3.23.tar.gz? ?2.8.6? ?? ?http://www.modssl.org 下齊了就放在/usr/local/src目錄下,除了number4.tar.gz和rsaref20.tar.Z以外,其他一律用tar zxvf XXXX.tar.gz解壓縮。(過(guò)癮吧?) 特殊的,rsaref20.tar.Z 需要先建立一個(gè)rsaref-2.0目錄,然后把rsaref20.tar.Z復(fù)制到改目錄下用tar zxvf rsaref30.tar.Z釋放壓縮。Number4.tar.gz需要復(fù)制到php-4.1.1目錄內(nèi),然后用tar zxvf number4.tar.gz解壓縮。 下面的描述我想簡(jiǎn)單一點(diǎn),只寫出進(jìn)入目錄后執(zhí)行的命令。那些目錄都是釋放的時(shí)候自己建立的,如果你這些操作都在/usr/local/src下面執(zhí)行,所有的目錄就都在這里面。最好按照順序執(zhí)行。再羅嗦一句:如果不是第一次編譯,一般情況請(qǐng)執(zhí)行一次make clean后再編譯。 14、[jpeg-6b]:生成JPEG圖像的函數(shù)庫(kù)。 ./configure make make test make install 15、[zlib-1.1.3]:壓縮算法庫(kù),是PNG和JPEG需要的 make test make install 16、[freetype-2.0.8]:字體庫(kù),在圖像上使用字體的時(shí)候需要用到, ./configure --prefix=/usr/local make make install 17、[libpng-1.0.10]:生成PNG圖像的函數(shù)庫(kù) cp scripts/makefile.linux makefile make test pngtest pngnow.png (如果都通過(guò)測(cè)試了,請(qǐng)繼續(xù)。否則,看看錯(cuò)誤提示,改正錯(cuò)誤) make install 18、[gd-1.8.4]:GD庫(kù),用來(lái)動(dòng)態(tài)生成圖像用,這里主要是配合PHP生成圖像。 編輯Makefile 文件: 把下列行取消注釋符號(hào)(#): CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG ? ? -DHAVE_LIBFREETYPE -DHAVE_LIBTTF LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm -lttf 注釋下列行(增加#): CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG LIBS=-lgd -lpng -lz -lm 修改下列行: INCLUDEDIRS=-I. -I/usr/local/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include -I/usr/include/freetype 保存后執(zhí)行: make make install 19、[apache_1.3.23]:步驟一 ./configure --prefix=/usr/local/apache 20、[php-4.1.1]: 如果不是第一次安裝,請(qǐng)刪除:config.cache文件,然后執(zhí)行先執(zhí)行make clean 接下來(lái)配置環(huán)境,輸入一個(gè)比較長(zhǎng)的命令: ./configure --with-apache=/usr/local/src/apache_1.3.23 --with-config-file-path=/local/apache/conf --with-enable-versioning --with-mysql=/usr/local/mysql --with-ftp --with-gd=/usr/local/src/gd-1.8.4 --with-enabled-bcmath=yes --with-disable-debug --enable-memory-limit=yes --enable-track-vars --with-zlib --with-jpeg-dir=/usr/local/src/jpeg-6b --with-png-dir=/usr/local/src/libpng-1.0.10 --with-freetype-dir=/usr//local/src/freetype-2.0.8 當(dāng)然你也可以實(shí)現(xiàn)準(zhǔn)備一個(gè)含有上述命令的sh文件,這樣改起來(lái)方便些。我就是這樣做的。 make make install 21、[rsaref-2.0]:RSA加密模塊 前面說(shuō)過(guò),這個(gè)目錄的釋放是特殊的,先見(jiàn)目錄后釋放,希望你是這樣做的。 cp -rp install/unix local cd local make mv rsaref.a librsaref.a 22、[openssl-engine-0.9.6c]:openssl引擎 ./config -prefix=/usr/local/ssl -L`pwd`/../rsaref-2.0/local/ rsaref –fPIC make make test make install 23、[mod_ssl-2.8.6-1.3.23] ./configure --with-apache=../apache_1.3.23 24、[apache_1.3.23]步驟二 ./configure --prefix=/usr/local/apache --enable-shared=ssl --enable-module=ssl --activate-module=src/modules/php4/libphp4.a make make certificate TYPE=custom(回答一些問(wèn)題) make install 25、收尾工作: 編輯/usr/local/apache/conf/httpd.conf文件,增加一行: AddType application/x-httpd-php .php 26、用命令/usr/local/apache/bin/apachectl configtest檢查一下配置文件的正確性。 27、用/usr/lcoal/apache/bin/apachectl start啟動(dòng)apache服務(wù)器 28、在/usr/local/apache/htdocs建立一個(gè)test.php文件包含下列內(nèi)容: phpinfo(); ?> 29、在別的機(jī)器上用瀏覽器看一下這個(gè)機(jī)器:http://xxx.xxx.xxx.xxx/test.php會(huì)出現(xiàn)php的配置總匯,看看前面編譯的模塊都在不在。 30、檢驗(yàn)ssl很麻煩,需要用apachectl startssl啟動(dòng)apache然后還要生成一大堆證書。這里就不討論了。 31、把/usr/local/apache/bin/apachectl文件復(fù)制到/etc/rc.d/init.d中,然后在/etc/rc.d/rd3.d中建立個(gè)符號(hào)連接指向/etc/rc.d/init.d中的上述文件: ln -s ../init.d/apachectl S70apachectl 這樣系統(tǒng)啟動(dòng)的時(shí)候就可以自動(dòng)啟動(dòng)apache和她的哪一大堆模塊了。 呼~~~~(喘口氣)到這里,就基本上完成了一個(gè)功能很全的WEB服務(wù)器系統(tǒng)了。 (5)安裝 ftp 服務(wù)器 (6)安裝 pop3服務(wù)器 有的郵件服務(wù)器自己帶pop3功能(比如Qmail、Xmail),如果你用這幾種郵件服務(wù)器軟件,當(dāng)然就不用安裝pop3了。目前,常用的郵件服務(wù)器里面不帶pop3的好象只有sendmail和postfix等少數(shù)幾種。這幾種郵件服務(wù)器軟件使用的都是系統(tǒng)用戶,而我們安裝的pop3也只是對(duì)系統(tǒng)用戶的郵件進(jìn)行彈出操作的。這里我們使用的版本和下載地址是: qpopper4.0.3.tar.gz http://www.eudora.com/qpopper_general/ 同樣的,把文件下載到/usr/local/src中,按照下列步驟安裝: tar zxvf qpopper4.0.3.tar.gz cd qpopper4.0.3 ./configure make make install 完成后,qpopper安裝在/usr/local/sbin中(如果你愿意把它放在其他地方,可以在前面用./configure –prefix=/your_path指定),文件名叫作popper。通常情況下,popper是作為一個(gè)inetd(超級(jí)網(wǎng)絡(luò)服務(wù)進(jìn)程)的子進(jìn)程加載的。這樣需要編輯文件/etc/inetd.conf并做下面改動(dòng): ... # POP3 mail server #pop-3? ?stream??tcp? ???nowait??root? ? /usr/sbin/tcpd ipop3d pop-3 stream tcp nowait root /usr/local/sbin/popper qpopper –s ... 增加黑體的這一行,注釋掉原來(lái)的(上面這一行),注意,如果你的安裝路經(jīng)不同,記著改過(guò)來(lái)呀。然后,用下面的命令得到inetd的進(jìn)程號(hào): ps –ax | grep inetd 得到結(jié)果類似: 248 ?? ?? ???S? ?? ?0:00 inetd 什么?哪個(gè)是進(jìn)程號(hào)?就是最前面那個(gè)數(shù)字。然后用下面的命令重新啟動(dòng)inetd: kill –HUP 248 用下面的命令看看pop3是不是啟動(dòng)了。 netstat -ln|grep 110 如果結(jié)果是這樣,就恭喜了。 tcp? ?? ?0? ?? ?0 0.0.0.0:110? ?? ? 0.0.0.0:*? ?? ?? ?? ?? ?LISTEN 這里還要補(bǔ)充一點(diǎn),少數(shù)情況下,pop3進(jìn)程需要獨(dú)立的監(jiān)聽(tīng)端口,也就是不作為inetd的子進(jìn)程裝載,上面過(guò)程需要做如下改動(dòng): ./configure的時(shí)候加上--enable-standalone參數(shù)。 編輯/etc/inetd.conf不增加黑體一行,但需要注釋掉原來(lái)的pop-3一行(如果有的話)。 啟動(dòng)的時(shí)候,直接運(yùn)行/usr/local/sbin/popper xxx.xxx.xxx.xxx:110即可。后面的參數(shù)是本地需要幾監(jiān)聽(tīng)的IP地址和端口。注意,沒(méi)有特殊需要,端口必須是110。最后要說(shuō)的是:其實(shí)最簡(jiǎn)單的辦法就是用你使用的Linux發(fā)行包帶的pop3軟件,安裝的時(shí)候直接選上即可。 |
(7)安裝imap服務(wù)器
幾乎所有的發(fā)行包都帶有imap服務(wù)器軟件(一般是華盛頓大學(xué)版本),最好的辦法是用你的發(fā)行包安裝IMAP服務(wù)器。事實(shí)上,我個(gè)人覺(jué)得 IMAP服務(wù)器很少被使用。下載最常規(guī)的IMAP服務(wù)器源碼地址是:ftp: //ftp.cac.washington.edu/imap/imap.tar.Z
tar zxvf imap.tar.Z
cd imap-2001a
make slx
(如果不行依次試驗(yàn)一下其他你覺(jué)得可能的系統(tǒng)類型,用vi看一下Makefile中列的名稱)
然后配置/etc/inetd.conf,讓inetd允許imap服務(wù)。[本節(jié)內(nèi)容沒(méi)有試驗(yàn)成功,編譯總是過(guò)不去]
(8)安裝squid服務(wù)器
SQUID是一個(gè)優(yōu)秀的代理服務(wù)器軟件,它可以很靈活的被配置為各種應(yīng)用形式,其中包括正向代理,反向加速模式和透明代理等。但是SQUID目前只能代理HTTP協(xié)議,代理FTP協(xié)議需要配置瀏覽器仿真主動(dòng)FTP協(xié)議。下面的步驟是安裝SQUID的過(guò)程。
1、下載反向代理服務(wù)器軟件采用squid,下載地址:http://www.squid-cache.org/
下載后存放在/usr/local/src目錄里,文件名是squid-2.4.STABLE2-src.tar.gz
2、tar zxvf squid-2.4.STABLE2-src.tar.gz 解壓縮
3、cd /usr/local/src/squid-2.4.STABLE2 進(jìn)入目錄
4、./configure --prefix=/usr/local/squid --enable-heap-replacement --disable-internal-dns建立環(huán)境,把squid安裝/usr/local/squid中。第二個(gè)參數(shù)是指定使用更先進(jìn)的緩沖算法。第三個(gè)參數(shù)是取消內(nèi)部DNS解析(如果使用在遠(yuǎn)程高速緩存模式,比如GSLB,需要增加選項(xiàng):--disable-internal-dns,目的是關(guān)閉內(nèi)部DNS.否則內(nèi)部DNS不理睬你在etc/hosts中的設(shè)定,直接尋找域名服務(wù)器,這樣就會(huì)造成轉(zhuǎn)發(fā)循環(huán)。就是cache發(fā)送給物理服務(wù)器的更新請(qǐng)求(因?yàn)橛糜蛎?#xff09;也會(huì)被用戶的GSLN設(shè)備解析回來(lái)而形成循環(huán)。)
5、make 開(kāi)始編譯
6、make install 安裝到剛才--prefix=指定的路徑當(dāng)中
7、安裝完成后,會(huì)在您指定的安裝路徑里產(chǎn)生一個(gè)squid目錄,squid目錄下有四個(gè)目錄:bin/ etc/ libexec/ logs/。其中etc里面是配置文件,bin里面是執(zhí)行文件,logs里面是日志文件。
8、安裝結(jié)束后就是調(diào)試服務(wù)器,使其按照您的要求工作。Squid的配置文件只有一個(gè),在etc目錄里,名字是squid.conf,所有的配置選項(xiàng)都在這個(gè)文件里面。而且每個(gè)配置項(xiàng)目都有注釋說(shuō)明。首先,在squid文件里面找到下列配置項(xiàng):
cache_mem ---這里可以添上您準(zhǔn)備給squid作為高速緩存使用的內(nèi)存大小。注意,如果您的機(jī)器有N兆內(nèi)存,那么,推薦您在這里添的數(shù)字是N/3。
cache_dir /usr/local/squid/cache 100 16 256 這里的第一個(gè)數(shù)字100是您準(zhǔn)備給squid作為cache使用的硬盤空間大小,單位是兆。如果您想劃100M空間當(dāng)作cache,那么這里就寫100。
cache_mgr webmaster@test.com.cn這里填寫cache管理員的Email地址,系統(tǒng)出錯(cuò)會(huì)自動(dòng)提醒cache管理員。
cache_replacement_policy和memory_replacement_policy的參數(shù)由于使用了--enable-heap-replacement編譯參數(shù),就不能使用缺省的lru算法了,你可以在下列三種里面選一個(gè):
heap GDSF : Greedy-Dual Size Frequency
heap LFUDA: Least Frequently Used with Dynamic Aging
heap LRU : LRU policy implemented using a heap
例如:
cache_replacement_policy heap LRU
memory_replacement_policy heap LRU
下面設(shè)定ACL訪問(wèn)控制列表:為了簡(jiǎn)單起見(jiàn),我們?cè)谶@里開(kāi)放所有的權(quán)限。ACL分為兩個(gè)部分:ACL定義部分,和http_access部分。在access_http部分用到前面的定義。前面定義了:
acl all src 0.0.0.0/0.0.0.0
我們注釋掉所有的http_access行加一句:
http_access allow all ---注意:all是前面acl定義的。
這樣就開(kāi)放了所有的權(quán)限。以后有需要的,再繼續(xù)往上加各種限制即可。
9、以root身份創(chuàng)建組nogroup :
%su root (如果當(dāng)前不是root)
#groupadd nogroup
#useradd nobody (如果沒(méi)有這個(gè)用戶)
10、進(jìn)行目錄/usr/local ,以root身份執(zhí)行下面的命令,改變整個(gè)Squid目錄的所有者為nobody.nogroup
#cd /usr/local
#chown nobody.nogroup -R squid
11、su 作為nobody,進(jìn)行/usr/local/squid/bin目錄,執(zhí)行#squid -z 創(chuàng)建cache交換目錄
#su nobody
$ cd /usr/local/squid/bin
$./squid -z
12、成功后,測(cè)試一下:/usr/local/squid/bin/squid -NCd1 該命令正式啟動(dòng)Squid。如果一切正常,你會(huì)看到一行輸出 :Ready to serve requests.
13、用ctrl-c退出前臺(tái)測(cè)試。
14、把squid作為守護(hù)進(jìn)程啟動(dòng)就直接運(yùn)行:/usr/local/squid/bin/squid
15、檢查狀態(tài)用squid –k check
16、停止squid用squid -k shutdown
如果是配置基本的正向代理,上面的已經(jīng)可以使用了。下面的步驟用于配置支持多域名的反向代理服務(wù)器。還好,SQUID的所有配置都在/usr/local/squid/etc下面,和反向代理有關(guān)的幾項(xiàng)介紹如下:
17、http_port 80 “http_port”參數(shù)指定Squid監(jiān)聽(tīng)瀏覽器客戶請(qǐng)求的端口號(hào)。
18、icp_port 0 “icp_port”參數(shù)指定Squid從鄰居(neighbour)服務(wù)器緩沖內(nèi)發(fā)送和接收ICP請(qǐng)求的端口號(hào)。這里設(shè)置為0是因?yàn)檫@里配置Squid為內(nèi)部Web服務(wù)器的加速器,所以不需要使用鄰居服務(wù)器的緩沖。
19、emulate_httpd_log on 打開(kāi)“emulate_httpd_log”選項(xiàng),將使Squid仿照Web服務(wù)器的格式創(chuàng)建訪問(wèn)記錄。如果希望使用Web訪問(wèn)記錄分析程序,就需要設(shè)置這個(gè)參數(shù)。
20、redirect_rewrites_host_header off 缺省地,Squid將改寫任何重定向請(qǐng)求的主機(jī)頭部。若系統(tǒng)運(yùn)行Squid為加速器模式,則這時(shí)不需要重定向特性。該參數(shù)在負(fù)載過(guò)重的情況下要旁路重定向器時(shí)才打開(kāi)
21、httpd_accel_host vartual 此處設(shè)置反向代理的主機(jī)名,如果對(duì)后面多個(gè)域名進(jìn)行緩沖,請(qǐng)使用虛擬主機(jī)模式(如此)。
22、httpd_accel_port 80 此處設(shè)置反向代理的WEB服務(wù)端口號(hào)。
23、#httpd_accel_with_proxy off 把這行注釋掉,此處設(shè)置開(kāi)反向代理的同時(shí),是否開(kāi)普通代理緩存服務(wù)。如果這行不注釋掉,就沒(méi)有高速緩存功能。
24、定義訪問(wèn)控制列表:
acl port80 port 80
acl accel_host1 dstdomain .test.com
acl accel_host2 dstdomain .test.net
… …
http_access allow accel_host1 port80
http_access allow accel_host2 port80
http_access deny all;
25、完成后,用squid –k reconfigure重新裝載配置文件。
(9)安裝SSH
---
(10)配置Linux為路由器
---
(11)配置Linux網(wǎng)關(guān)和安裝ipchains/iptables防火墻
在Linux上面的防火墻,最最常用的是ipchains,而且通常情況下是作為網(wǎng)關(guān)的附加部分安裝的。Ipchains的規(guī)則是很復(fù)雜的,靈活性也很強(qiáng),可以配制成各種五花八門的樣子。這些都需要和你自己的實(shí)際情況相結(jié)合。這里,我們只介紹一種基于網(wǎng)關(guān)的簡(jiǎn)單配置。
安裝IPCHAINS一般都不用你操心,因?yàn)閹缀跛械腖inux發(fā)行包都把該軟件作為必須安裝的卻省配置。另一個(gè)原因是ipchains是跟內(nèi)核(kernel)有很大的關(guān)系,因此最好在安裝系統(tǒng)的時(shí)候選上相關(guān)選項(xiàng)(如果有)。在標(biāo)題里面我們還提到了iptables,這個(gè)工具在表面上等同于 ipchains,只不過(guò)是用于2.4內(nèi)核的(2.4內(nèi)核在這方面的代碼幾乎是重新寫過(guò)的,功能有了長(zhǎng)足的提高)。關(guān)于iptables工具的配置我們?cè)诤竺娼榻B。你只需要記住2.2核心下使用ipchains,2.4核心下使用iptables即可。
首先,你的服務(wù)器需要兩塊網(wǎng)卡(或更多),這種機(jī)器叫做“多宿主主機(jī)”,是專門的用于做網(wǎng)關(guān)或路由器的。這里插一句:一般情況下,作為普通服務(wù)器的主機(jī)即使負(fù)載再重就需要一塊網(wǎng)卡就夠了,只有做網(wǎng)關(guān)或路由器的時(shí)候才需要多宿主主機(jī)。這并不象一般人認(rèn)為得那樣增加一塊網(wǎng)卡可以增加一份帶寬,事實(shí)上,一塊網(wǎng)卡就可以提供足夠的帶寬。并且,還有人錯(cuò)誤的把兩塊網(wǎng)卡接在同一個(gè)交換機(jī)上分配兩個(gè)地址,這更是錯(cuò)誤的,因?yàn)檫@樣產(chǎn)生了額外的循環(huán)路由,會(huì)產(chǎn)生大量的內(nèi)部警告錯(cuò)誤,某些系統(tǒng)就會(huì)報(bào)警。
1、制作一個(gè)雙界面(雙宿主)的主機(jī)。
通常,現(xiàn)在的發(fā)行包的安裝程序都可以識(shí)別兩塊網(wǎng)卡,這樣就省事了。但是也有不少發(fā)行包只識(shí)別第一塊網(wǎng)卡(也許是出于前面說(shuō)的原因),或者你要在一臺(tái)在用的機(jī)器上加一塊網(wǎng)卡(因?yàn)槟悴辉敢庵匮b系統(tǒng)),那么就按照下面的辦法處理。
1.1、我們就說(shuō)PCI網(wǎng)卡。安裝前首先看看網(wǎng)卡芯片,記住芯片的型號(hào)(希望你自己攢過(guò)機(jī)器)。
1.2、安裝MAN手冊(cè)(用發(fā)行包)
1.3、在/usr/doc/HOWTO/english/txt/Ethernet-HOWTO文件(如果是壓縮的就釋放)中搜索你的網(wǎng)卡型號(hào),找到對(duì)應(yīng)的驅(qū)動(dòng)模塊名稱。
1.4、如果模塊沒(méi)有,還需要重新編譯核心。在menuconfig網(wǎng)絡(luò)設(shè)備一欄選中你的型號(hào)然后標(biāo)記為*或M,編譯完核心后別忘了編譯模塊:make modules;make modules_install。(不會(huì)的話再仔細(xì)溫習(xí)一下前面編譯內(nèi)核的部分)
1.5、用depmod –a命令建立/etc/modules.conf(如果已經(jīng)有就不用了),也有的發(fā)行包叫做conf.modules
1.6、編輯該文件加上一行:alias eth1 XXXX,其中XXXX是你剛才查到的模塊名稱。一般該模塊文件位于:/lib/modules/內(nèi)核版本號(hào)/net…中的XXXX.o文件。這個(gè)文件是你編譯內(nèi)核模塊的時(shí)候產(chǎn)生的,你在內(nèi)核配置的時(shí)候,凡是標(biāo)記為M的都會(huì)被編譯成.o文件放在這里。同樣的,你選擇的網(wǎng)卡驅(qū)動(dòng)也是會(huì)編譯成模塊在這里的。
1.7、運(yùn)行modprobe eth1使模塊有效。
1.8、修改/etc/sysconfig/network文件中需要修改的部分。
1.9、建立或修改/etc/sysconfig/network-script/ifcfg-eth1文件(照抄那個(gè)eth0的即可),設(shè)定地址是你的真實(shí)情況,比如設(shè)為eth1要接的網(wǎng)段。這兩個(gè)文件(eth0/eth1是啟動(dòng)的時(shí)候的腳本參數(shù)文件)
1.10、重新啟動(dòng)一下網(wǎng)絡(luò):/etc/rc.d/init.d/network restart
1.11、用ifconfig看看是否eth0/eth1都啟動(dòng)了。
1.12、大功告成
2、調(diào)整和編譯核心:如果作為網(wǎng)關(guān),有些核心選項(xiàng)需要配置。注意:這里的內(nèi)核編譯選項(xiàng)僅僅適合于2.2.X版本,2.4版本完全不同。
2.1、在/usr/src/linux中運(yùn)行make menuconfig配置核心下列選項(xiàng):
Networking options中
? ?
- Network firewalls
- IP: advanced router
- IP: firewalling
- IP: firewall packet netlink device
- IP: transparent proxy support
- IP: masquerading
- IP: ICMP masquerading
- IP: masquerading special modules support
IP: ipautofw masq support (EXPERIMENTAL)
IP: ipportfw masq support (EXPERIMENTAL)
IP: ip fwmark masq-forwarding support (EXPERIMENTAL)
- IP: masquerading virtual server support (EXPERIMENTAL)
(12) IP masquerading VS table size (the Nth power of 2)? ?
具體選項(xiàng)不同版本的內(nèi)核不盡相同,你看著差不多就可以了。編譯成模塊或編進(jìn)核心 - 可以自由選擇。
2.2、按照前面說(shuō)的編譯內(nèi)核,重新啟動(dòng)后就具有網(wǎng)關(guān)功能了。啟動(dòng)后驗(yàn)證一下文件:/proc/sys/net/ipv4/ip_forward內(nèi)容是否為1。(別告訴我不知道怎么看8-))
3、設(shè)置ipchains
本來(lái)這項(xiàng)工作是非常復(fù)雜的,但是我們這里講的簡(jiǎn)單,讓網(wǎng)關(guān)通了就行。
3.1、先看一下目前我們目前的假想環(huán)境:你的機(jī)器有兩塊網(wǎng)卡,一塊連接在內(nèi)網(wǎng)交換機(jī)配內(nèi)部網(wǎng)絡(luò)地址,另一塊在外網(wǎng)交換機(jī)配公網(wǎng)地址。在這個(gè)機(jī)器ping 內(nèi)網(wǎng)和外網(wǎng)的機(jī)器應(yīng)該都能通。并且在內(nèi)網(wǎng)的機(jī)器ping 該機(jī)器的外網(wǎng)地址也通,在外網(wǎng)的機(jī)器ping該機(jī)器內(nèi)網(wǎng)的地址也同樣通。這說(shuō)明轉(zhuǎn)發(fā)功能是有效的。
3.2、再試驗(yàn)一下:在內(nèi)部網(wǎng)絡(luò)把網(wǎng)關(guān)設(shè)為你的機(jī)器的內(nèi)網(wǎng)地址,然后ping 外網(wǎng)的任一臺(tái)機(jī)器(不是這臺(tái)機(jī)器的外網(wǎng)地址),結(jié)果是不通。原因是ICMP包發(fā)出去后外網(wǎng)的機(jī)器不知道怎么回答,那里沒(méi)有合適的路由,因?yàn)檫@個(gè)包的回應(yīng)地址是內(nèi)網(wǎng)。
3.3、現(xiàn)在設(shè)置ipchains:(ipchains軟件適用2.2.X的內(nèi)核,在2.4.X的內(nèi)核中不適用。2.4.X的內(nèi)核推薦使用iptables,關(guān)于該軟件的用法在下面介紹)
ipchains –A forward –s 192.168.1.0/24 –j MASQ
黑體部分是內(nèi)網(wǎng)地址。這句話的意思是,把所有內(nèi)網(wǎng)發(fā)送的包都偽裝成外部網(wǎng)的地址(那個(gè)機(jī)器的外網(wǎng)地址),這樣,外部其他機(jī)器回應(yīng)的時(shí)候就會(huì)發(fā)送到這臺(tái)機(jī)器,經(jīng)過(guò)轉(zhuǎn)發(fā)就回來(lái)內(nèi)網(wǎng)了。好了,一個(gè)簡(jiǎn)單的網(wǎng)關(guān)做好了。如果你需要實(shí)現(xiàn)防火墻(包過(guò)濾功能),則需要配置更加復(fù)雜的過(guò)濾規(guī)則,這些規(guī)則應(yīng)該同時(shí)作用于input/output/forward鏈。
3.4、自動(dòng)啟動(dòng):設(shè)定了復(fù)雜的鏈,需要保存。在/etc/rc.d中建立一個(gè)文件:rc.ipfwadm把你的鏈腳本加進(jìn)去就可以了。最后給這個(gè)文件+x屬性(chmod +x rc.ipfwadm)。
4.在2.4.X內(nèi)核中使用iptables建立Linux防火墻(網(wǎng)關(guān))。
4.1 說(shuō)明和下載
前面已經(jīng)提到過(guò)2.4 內(nèi)核中要使用iptables來(lái)做類似于ipchains在2.2內(nèi)核中實(shí)現(xiàn)的事情。事實(shí)上,在2.4內(nèi)核中的iptables包含了兩個(gè)完全不同的部分:包過(guò)濾和地址轉(zhuǎn)換。這兩個(gè)功能在邏輯上是分開(kāi)的,考慮到操作習(xí)慣上的問(wèn)題才集成在一個(gè)配置程序(iptables)上。如果你安裝了帶有2.4內(nèi)核的發(fā)行包,那么一般都帶有iptables,并且在內(nèi)核配置上也配置好了。如果要編譯新的內(nèi)核或者原來(lái)的內(nèi)核沒(méi)有支持iptables,需要選上相關(guān)的選項(xiàng)。使用make menuconfig 配置內(nèi)核的時(shí)候操作:進(jìn)入:Networking Options至少選擇上:
- Network packet filtering (replaces ipchains)
- ? ?Network packet filtering debugging (NEW)
進(jìn)入:IP: Netfilter Configuration??--->
- Connection tracking (required for masq/NAT) (NEW)
? ?? ? FTP protocol support (NEW)
? ?? ? IRC protocol support (NEW)? ???
等等……
把下面的選項(xiàng)全部標(biāo)記<*>
逐級(jí)返回上面菜單后保存配置,然后按照編譯內(nèi)核的那一套程序進(jìn)行即可(參見(jiàn)前面的內(nèi)容)。這里需要說(shuō)明的是,內(nèi)核支持了iptables功能,還需要有外部程序才行。如果你是直接安裝的帶有2.4內(nèi)核的發(fā)行包,應(yīng)該已經(jīng)帶有iptables實(shí)用程序了。但是如果你是從2.2核心的發(fā)行包直接升級(jí)到2.4內(nèi)核,盡管按照上面的做法配置的核心,但是還不能使用iptables。還必須下載和編譯iptables外部程序才能使用iptables功能。下載的地址是:http://www.netfilter.org ,下載的文件是iptables-1.2.6a.tar.bz2或更新的版本。
4.2 安裝:
這個(gè).bz2文件比較奇怪吧?把文件復(fù)制到/usr/local/src中,然后用下列命令釋放編譯和安裝: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那個(gè)‘- ’別忘了)
你的系統(tǒng)可能沒(méi)有bzip2工具,如果沒(méi)有,你就去下一個(gè):
進(jìn)入新生成的目錄 :cd iptables-1.2.6a 編譯和安裝:make ; make install
4.3 配置
如果你需要配置一個(gè)簡(jiǎn)單的網(wǎng)關(guān),你僅僅需要配置一個(gè)轉(zhuǎn)發(fā)加地址轉(zhuǎn)換功能即可,我提供的參考腳本如下:
#begin
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F INPUT
iptables -F FORWARD
iptables –F OUTPUT
iptables -F POSTROUTING -t nat
iptables -t nat -F
iptables -P FORWARD DROP
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24
-j SNAT --to 21.9.22.2
#end
其中3行modprobe是當(dāng)你在內(nèi)核中把iptables相關(guān)功能編譯成模塊(選成)的時(shí)候才用到的(也可能不止3行)。其中插入模塊(modprobe)的幾行比較重要,有時(shí)候當(dāng)你作完NAT后,發(fā)現(xiàn)FTP不好用了,就要手工插入ip_nat_ftp模塊(語(yǔ)法是:modprobe ip_nat_ftp)。黑體的地址部分可能是需要根據(jù)你網(wǎng)絡(luò)的實(shí)際情況來(lái)決定的。最后一句話的意思是把凡是源地址是192.168.1.x的包做地址轉(zhuǎn)換,轉(zhuǎn)換為網(wǎng)關(guān)外側(cè)地址21.9.22.2。好了,你已經(jīng)建立起一個(gè)基本的網(wǎng)關(guān)了。其實(shí)iptables的功能及其強(qiáng)大,配置也非常靈活。其中的防火墻功能通過(guò)-t filter參數(shù)實(shí)現(xiàn),地址轉(zhuǎn)換功能通過(guò)-t nat實(shí)現(xiàn)(就像上面一樣)。防火墻功能(packet filter)主要是3個(gè)鏈:INPUT,FORWARD,OUTPUT,地址轉(zhuǎn)換功(nat)主要是3個(gè)鏈:PREROUTING, POSTROUTING,OUTPUT。觀察當(dāng)前的狀態(tài)可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat。
好了,要配置出更靈活的、更強(qiáng)大的防火墻功能,全靠你自己了。我推薦你兩個(gè)手冊(cè):《Linux 2.4 Packet Filter HOWTO》和《Linux 2.4 NAT HOWTO》。這兩個(gè)文檔是iptables的原作者寫的,相當(dāng)經(jīng)典。英文不好?沒(méi)關(guān)系,這兩個(gè)文檔都有中文版本。推薦你到:永遠(yuǎn)的UNIX(http: //www.fanqiang.com)下載。
(12)配置samba服務(wù)器 - (13)構(gòu)建基于Linux的VPN網(wǎng)絡(luò)
構(gòu)建VPN幾乎是Linux的最高級(jí)應(yīng)用之一了,學(xué)會(huì)了這項(xiàng)技術(shù),是足以使你自豪的資本。VPN的主要用途就是建立一個(gè)加密的通信機(jī)制,然后通過(guò)把所有的你的子網(wǎng)的信息按照特定的方式加密傳輸,構(gòu)成一個(gè)邏輯上的虛擬的網(wǎng)絡(luò)。簡(jiǎn)單的說(shuō),就是一個(gè)Linux系統(tǒng)的IP層加密解決方案。這里面需要用到不少組件,下面一一介紹。
1、準(zhǔn)備工作和安裝
1.1 從http://www.kernel.org下載2.4.X的內(nèi)核,除了2.4.15版本(該版本有一個(gè)致命錯(cuò)誤)。然后把該內(nèi)核放置到: /usr/src中。(這里我們使用Linux-2.4.18.tar.gz),然后釋放:tar zxvf linux-2.4.18.tar.gz
1.2 刪除原來(lái)的連接rm linux
1.3 ln –s linux-2.4.18.tar.gz linux
1.4 檢查當(dāng)前的網(wǎng)卡和SCSI的型號(hào)(參見(jiàn)內(nèi)核升級(jí)一章)
1.5 cd linux (進(jìn)入linux-2.4.18目錄)
1.6 make menugonfig
1.7 make dep
1.8 make bzImage
1.9 編譯工作做到這里就打住!
1.10 從http://www.swox.com/gmp 下載gmp庫(kù)的最新版本到/usr/local/src。
1.11 tar zxvf gmp-4.0.1.tar.gz
1.12 cd gmp-4.0.1
1.13 ./configure
1.14 make
1.15 make install
1.16 從http://www.freeswan.org下載freeswan-1.97.tar.gz(我們這里使用的版本)到/usr/local/src
1.17 tar zxvf freeswan-1.97.tar.gz
1.18 從http://www.strongsec.com/freeswan/ 下載x509patch-0.9.11-freeswan-1.97.tar.gz ,這個(gè)是補(bǔ)丁文件。釋放,進(jìn)入x509補(bǔ)丁目錄,復(fù)制freeswan.diff到外面的freeswan源目錄,然后回到freeswan源目錄中運(yùn)行:patch –p1 < freswan.diff
1.19 從http://www.openssl.org下載openssl-0.9.6b版本到/usr/local/src,釋放,進(jìn)入目錄
1.20 ./config (如果原來(lái)系統(tǒng)中有openssl需要先uninstall再安裝,不過(guò)一般情況下你可能uninstall不下來(lái)8-)。如果無(wú)法uninstall,找到他們的路徑,在這里通過(guò)—prefix=參數(shù)指定路徑覆蓋舊版本的文件。這里嚴(yán)重建議:如果你沒(méi)有把握確定路徑,最好這樣做:到你用的發(fā)行包的開(kāi)發(fā)商的FTP站點(diǎn)(如果你用turbolinux就去ftp.turbolinux.com用redhat就去ftp.redhat.com),用 anonymous用戶和隨便一個(gè)電子郵件作為密碼登陸,找到你用的發(fā)行包版本的生機(jī)目錄,然后下載相應(yīng)的RPM包,注意:這里的包至少應(yīng)該是 0.9.6b1以上的i386版本。下載完畢后用rpm –Uvh更新。這樣做完了很干凈。
1.21 make (如果你用rpm包升級(jí)就不用這個(gè)步驟了)
1.22 make test (如果你用rpm包升級(jí)就不用這個(gè)步驟了)
1.23 make install (如果你用rpm包升級(jí)就不用這個(gè)步驟了)安裝完了以后執(zhí)行openssl命令,輸入version看看是不是你剛剛安裝的版本。如果不是,可能沒(méi)有覆蓋原來(lái)安裝的舊版本。從1.20重新來(lái)過(guò)
1.24 然后回到freeswan的源目錄,運(yùn)行:make menugo,在networking options中選擇關(guān)于iptables和ipsec相關(guān)的所有選項(xiàng)。其中ipsec是freeswan加上的,最好把前面括號(hào)中M(模塊方式)換成* (編譯進(jìn)內(nèi)核)。下列內(nèi)核選項(xiàng)應(yīng)該選上:
進(jìn)入:Networking Options至少選擇上:
- Network packet filtering (replaces ipchains)
- ? ?Network packet filtering debugging (NEW)
進(jìn)入:IP: Netfilter Configuration??--->
<*> Connection tracking (required for masq/NAT) (NEW)
? ?? ?FTP protocol support (NEW)
? ?? ?IRC protocol support (NEW)
注意:如果你需要使用DHCP功能,需要增加Pachet Socket mmapped IO和Socket Filtering兩個(gè)選項(xiàng),參見(jiàn)DHCP一章。
等等……
把下面的選項(xiàng)全部標(biāo)記<*>
返回上一層菜單后,把列表選項(xiàng)最下面的凡是IPSEC相關(guān)的選項(xiàng)全部選為<*>。另外的,如果你打算使用撥號(hào)連接請(qǐng)?jiān)诰W(wǎng)絡(luò)設(shè)備支持菜單選擇ppp支持(注意,你用的ppp程序一定要2.4版本以上的)
1.25 然后檢查網(wǎng)卡和硬盤選項(xiàng)是否正確,如果沒(méi)有問(wèn)題就逐層退出,然后保存配置。
1.26 退出后將自動(dòng)編譯內(nèi)核,等待……
1.27 編譯完成后,來(lái)到/usr/src/linux目錄,運(yùn)行:make modules;make modules_install
1.28 cp System..map /boot/System.map-2.4.18-vpn
1.29 cd arch/i386/boot
1.30 cp bzImage /boot/vmlinuz-2.4.18-vpn
1.31 cd /boot
1.32 rm System.map
1.33 ln –s System.map-2.4.18-vpn System.map
1.34 vi /etc/lilo.conf
增加一段:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux-vpn
image=/boot/vmlinuz
? ?? ???label=linux
? ?? ???initrd=/boot/initrd
? ?? ???read-only
? ?? ???root=/dev/sda5
image=/boot/vmlinuz-2.4.18-vpn
? ?? ???label=linux-vpn
? ?? ???initrd=/boot/initrd
? ?? ???read-only
? ?? ???root=/dev/sda5
1.35 運(yùn)行l(wèi)ilo更新數(shù)據(jù)
1.36 reboot
1.37 啟動(dòng)后,運(yùn)行:ipsec setup restart 應(yīng)該不報(bào)任何錯(cuò)誤而正常出現(xiàn)freeswan的版本。
注意:還有一些必要的內(nèi)核參數(shù)配置,這些配置可以在rc.local中實(shí)現(xiàn)。他們是:
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
如果你把下面兩項(xiàng)編譯成模塊(前面擴(kuò)號(hào)是M而不是*):
? ?FTP protocol support (NEW)? ???
? ?? ? IRC protocol support (NEW)
你需要在rc.local中加上:
modprobe ip_nat_ftp
安裝完了,接下來(lái)我們將說(shuō)明幾種VPN的玩法。
2、配置Frees/wan用于支持雙網(wǎng)關(guān)通信。也就是兩個(gè)異地的子網(wǎng)通過(guò)一對(duì)ipsec的VPN網(wǎng)關(guān)進(jìn)行交互訪問(wèn)。第一種玩法是網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)的VPN。一般的,某企業(yè)在甲乙兩地(距離相當(dāng)遠(yuǎn))各有一個(gè)辦公室,每個(gè)辦公室各有一套LAN,他們分別通過(guò)專線連接到 internet網(wǎng)絡(luò)上。甲LAN上是企業(yè)的管理中心,運(yùn)行著企業(yè)的管理系統(tǒng)。而乙LAN上的用戶也需要使用該管理系統(tǒng),盡管乙LAN可以通過(guò) internet(公網(wǎng))連接過(guò)去,但是企業(yè)的老板說(shuō)不行!我們的數(shù)據(jù)不能暴露在公網(wǎng)上,必須加密!好了,我們的VPN網(wǎng)絡(luò)就可以應(yīng)用于該企業(yè)的這種需求。首先在甲乙兩個(gè)LAN的出口各放置一臺(tái)我們的Linux服務(wù)器,他們都安裝好了ipsec(前面說(shuō)的安裝步驟一個(gè)都不少),兩個(gè)LAN的數(shù)據(jù)分別通過(guò)各自的這臺(tái)機(jī)器(ipsec gateway)進(jìn)入公網(wǎng),凡是經(jīng)過(guò)該網(wǎng)關(guān)的數(shù)據(jù)全部都是加密的。在效果上,兩個(gè)LAN的用戶可以互相ping到對(duì)方的機(jī)器,盡管他們可能一個(gè)是 192.168.1.0/24網(wǎng)段,另一個(gè)是192.168.10.0/24網(wǎng)段的。他們好像在同一個(gè)局域網(wǎng)中工作,沒(méi)有界限。公共網(wǎng)絡(luò)的加密部分對(duì)他們來(lái)說(shuō)也是透明的。而兩個(gè)LAN在公共網(wǎng)絡(luò)上交換的數(shù)據(jù)是密文的。這就是虛擬專用網(wǎng)VPN。
但愿你已經(jīng)按照前面的步驟順利的安裝好了兩臺(tái)機(jī)器,下面我告訴你怎樣配置成網(wǎng)對(duì)網(wǎng)的環(huán)境。
2.1 我們先配置甲網(wǎng)的ipsec網(wǎng)關(guān)(該網(wǎng)關(guān)有兩個(gè)網(wǎng)卡,我們配置他們的地址分別為eth1:192.168.1.231和eth0:21.9.22.22)。安裝完成后,我們首先要做的事情是生成CA證書。(用到剛才安裝的openssl)
2.2 找到openssl.cnf文件,一般在/etc/ssl/中,也可能在/var/ssl中或/usr/ssl中(實(shí)在不行你就find / -name “openssl.cnf”找找嘛!),要是有好幾個(gè),你要搞清楚哪個(gè)是你安裝的版本。改動(dòng)其中的default_bits選項(xiàng)的值從1024到 2048,然后改動(dòng)default_days的值到3650。讓期限為10年!保存退出。
2.3 在/var/中建立一個(gè)目錄:/var/sslca,改變?cè)撃夸浀臋?quán)限為700(chmod 700 /var/sslca)
2.4 在你安裝的openssl目錄中找到CA.sh腳本。注意,應(yīng)該是你當(dāng)前運(yùn)行的openssl版本的CA.sh
2.5 cd /var/sslca 進(jìn)入到你剛才建立的目錄
2.6 比如你剛才找到的CA.sh在/usr/lib/ssl/misc/,那么就輸入/usr/lib/ssl/misc/CA.sh –newca,接下來(lái)你會(huì)被問(wèn)到一系列問(wèn)題。問(wèn)題和回答類似于下面的樣子。如果你確認(rèn)哪些你有把握更改就改,比如公司名稱、郵件、密碼等。不能確定的就按照下面的樣子抄上即可。
~/sslca#/usr/lib/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create)
(enter)
Making CA certificate ...
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
........................................+++
........................................+++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phraseenter password)
Verifying password - Enter PEM pass phraseenter same password again)
-----
You are about to be asked to enter
information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US(enter)
State or Province Name (full name) [Some-State]:State(enter)
Locality Name (eg, city) []:City(enter)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:21vianet(enter)
Organizational Unit Name (eg, section) []enter)
Common Name (eg, YOUR name) []:CA(enter)
Email Address []:ca@xxx.com(enter)
~/sslca#
2.7 下一步是給網(wǎng)關(guān)生成證書:
命令和要回答的問(wèn)題如下:
~/sslca# /usr/lib/ssl/misc/CA.sh -newreq
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 2048 bit RSA private key
...................................+++
...............................+++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:(enter password)
Verifying password - Enter PEM pass phrase:(repeat password)
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US(enter)
State or Province Name (full name) [Some-State]:State(enter)
Locality Name (eg, city) []:City(enter)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ExampleCo(enter)
Organizational Unit Name (eg, section) []:(enter)
Common Name (eg, YOUR name) []:vpnserver.rd.xxx.com(enter)
Email Address []:user@xxx.com(enter)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(enter)
An optional company name []:(enter)
Request (and private key) is in newreq.pem
natecars@buzzword:~/sslca$ /usr/lib/ssl/misc/CA.sh -sign
Using configuration from /usr/lib/ssl/openssl.cnf
Enter PEM pass phrase:(password you entered for the ca certificate)
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName? ?? ?? ???RINTABLE:'US'
stateOrProvinceName? ?RINTABLE:'State'
localityName? ?? ?? ? RINTABLE:'City'
organizationName? ?? ?:PRINTABLE:'21vianet'
commonName? ?? ?? ?? ?:PRINTABLE:'vpnserver.rd.xxx.com'
emailAddress? ?? ?? ? :IA5STRING:'rd@xxx.com'
Certificate is to be certified until Feb 13 16:28:40 2012 GMT (3650 days)
Sign the certificate? [y/n]:y(enter)
1 out of 1 certificate requests certified, commit? [y/n]y(enter)
Write out database with 1 new entries
Data Base Updated
(certificate snipped)
Signed certificate is in newcert.pem
在以上步驟中一定要記住你輸入的密碼。如果哪一不錯(cuò)了,想重新來(lái)過(guò)的話,記住刪除/var/sslca目錄下面的所有子目錄即可。
2.8 把文件名字改為你需要的
~/sslca# mv newcert.pem vpnserver.rd.xxx.com.pem
~/sslca# mv newreq.pem vpnserver.rd.xxx.com.key
2.9 編輯.key文件,刪除'-----BEGIN CERTIFICATE REQUEST-----'后面所有的東西,之后,這個(gè)文件應(yīng)該從'-----BEGIN RSA PRIVATE KEY-----'至'-----END RSA PRIVATE KEY-----'結(jié)束。
2.10 如果正常的安裝了x.509補(bǔ)丁,你應(yīng)該可以看到/etc/ipsec.d及其下面的目錄。如果沒(méi)有,你就自己建立。然后按照下面的位置復(fù)制合適的文件:(此時(shí)你仍然在/var/sslca目錄中)
# cp vpnserver.rd.xxx.com.key /etc/ipsec.d/private
# cp vpnserver.rd.xxx.com.pem /etc/ipsec.d
# openssl x509 -in demoCA/cacert.pem -outform der -out rootca.der
# cp rootca.der /etc/ipsec.d/cacerts/RootCA.der
# openssl x509 -in host.example.com.pem -outform der -out /etc/x509cert.der
# openssl ca -gencrl -out crl.pem
# cp crl.pem /etc/ipsec.d/crls
2.11在/etc/ipsec.secrets中加入一行:: RSA vpnserver.rd.xxx.com.key "password",然后刪除其他所有行。其中的password是你前面生成密要的時(shí)候回答問(wèn)題輸入的密碼。
2.12編輯ipsec.conf文件類似下面的樣子:
# basic configuration
config setup
? ? ? ? interfaces=%defaultroute
? ? ? ? klipsdebug=none
? ? ? ? plutodebug=none
? ? ? ? plutoload=%search
? ? ? ? plutostart=%search
? ? ? ? uniqueids=yes
conn %default
? ? ? ? keyingtries=1
? ? ? ? compress=yes
? ? ? ? disablearrivalcheck=no
? ? ? ? authby=rsasig
? ? ? ? leftrsasigkey=%cert
? ? ? ? rightrsasigkey=%cert
? ? ? ? left=%defaultroute
? ? ? ? leftcert=vpnserver.rd.xxx.com.pem
? ? ? ? auto=add
? ? ? ? pfs=yes
conn roadwarrior
? ? ? ? right=%any
conn roadwarrior-net
? ? ? ? leftsubnet=192.168.1.0/255.255.255.0
? ? ? ? right=%any
conn net-net
? ? ? ? leftsubnet=192.168.1.0/255.255.255.0
? ? ? ? right=%any
? ? ? ? rightsubnet=192.168.10.0/255.255.255.0
conn world-net
? ? ? ? leftsubnet=*
? ? ? ? right=%any
? ? ? ? rightsubnet=192.168.10.0/255.255.255.0
黑體字的部分是你需要根據(jù)你實(shí)際的環(huán)境更改的。我們用的兩端的子網(wǎng)是192.168.1.0/24和192.168.10.0/24。文件中 vpnserver.rd.xxx.com.pem是CA證書。這個(gè)配置是通用的,也就是說(shuō)可以適用LAN-LAN方式的倆接和遠(yuǎn)端客戶端兩種方式。
2.13 下面配置分支機(jī)構(gòu)的網(wǎng)關(guān)。這個(gè)機(jī)器也要事先安裝完全freeswan等軟件。
重新執(zhí)行上面的2.7-2.9步驟生成分支機(jī)構(gòu)的證書,注意:在回答問(wèn)題的過(guò)程中,關(guān)于主機(jī)名稱的部分的輸入改變?yōu)槟惴种C(jī)構(gòu)的網(wǎng)關(guān)機(jī)器名稱,比如:vpncliet.rd.xxx.com。
2.14 復(fù)制下列生成的文件到分支機(jī)構(gòu)網(wǎng)關(guān)上的相應(yīng)位置(比如通過(guò)軟盤復(fù)制):
cp vpnserver.rd.xxx.com.pem /etc/ipsec.d
cp vpnclient.rd.xxx.com.key /etc/ipsec.d/private
cp vpnclient.rd.xxx.com.pem /etc/ipsec.d
執(zhí)行命令:openssl x509 –in vpnclient.rd.xxx.com.pem –
outform der –out /etc/x509cert.de
cp rootca.der /etc/ipsec.d/cacerts/RootCA.der
cp crl.pem /etc/ipsec.d/crls
2.15 配置分支機(jī)構(gòu)的/etc/ipsec.secrets 寫上一行:
RSA vpnclient.rd.xxx.com.key "password"。
其他行刪除。Password就是前面回答問(wèn)題的時(shí)候輸入的密碼。
2.16 配置/etc/ipsec.conf
# basic configuration
config setup
? ? ? ? interfaces=%defaultroute
? ? ? ? klipsdebug=none
? ? ? ? plutodebug=none
? ? ? ? plutoload=%search
? ? ? ? plutostart=%search
? ? ? ? uniqueids=yes
conn %default
? ? ? ? keyingtries=0
? ? ? ? compress=yes
? ? ? ? disablearrivalcheck=no
? ? ? ? authby=rsasig
? ? ? ? rightrsasigkey=%cert
? ? ? ? leftrsasigkey=%cert
? ? ? ? right=%defaultroute
? ? ? ? rightcert=vpnclient.rd.xxx.com.pem
? ? ? ? auto=add
? ? ? ? pfs=yes
conn roadwarrior
? ? ? ? left=21.9.22.22
? ? ? ? leftcert=vpnserver.rd.xxx.com.pem
conn roadwarrior-net
? ? ? ? left=21.9.22.22
? ? ? ? leftcert=vpnserver.rd.xxx.com.pem
? ? ? ? leftsubnet=192.168.1.0/255.255.255.0
conn net-net
? ? ? ? left=21.9.22.22
? ? ? ? leftcert=vpnserver.rd.xxx.com.pem
? ? ? ? leftsubnet=192.168.1.0/255.255.255.0
? ? ? ? rightsubnet=192.168.10.0/255.255.255.0
其中黑體的部分是你可以根據(jù)實(shí)際情況修改的。
2.17 首先啟動(dòng)server端的ipsec:ipsec setup restart,然后同樣啟動(dòng)客戶端的ipsec
2.18 建立通道:ipsec auto –up net-net然后在Server端可以用命令ipsec whack status應(yīng)該可以看到新建立的幾個(gè)通道。此時(shí),你在兩個(gè)子網(wǎng)中應(yīng)該可以互相ping 通。
3、配置Frees.wan用于支持遠(yuǎn)程客戶端訪問(wèn)。也就是允許一個(gè)Windows客戶端,來(lái)通過(guò)VPN和公司內(nèi)部的網(wǎng)絡(luò)進(jìn)行通訊。
第2種VPN玩法其實(shí)就是把分支機(jī)構(gòu)的LAN換成一個(gè)單獨(dú)的,地址不固定的機(jī)器。這樣的應(yīng)用適合總經(jīng)理出差的時(shí)候從外地ISP撥號(hào)上網(wǎng)連接到本部網(wǎng)絡(luò)的情況。期間,非但有認(rèn)證,而且通過(guò)ISP和公網(wǎng)的數(shù)據(jù)全部是加密的。這種方式在服務(wù)器端的配置和上面完全一樣(記得嗎?我們?cè)谛忻娼o出的配置已經(jīng)是兼顧了兩種用法)。這里需要做的是把總經(jīng)理的筆記本配成VPN客戶端。他的筆記本應(yīng)該是windows2000的并且升級(jí)到sp2。
3.1 首先重復(fù)2.7-2.9步驟生成證書,其中有關(guān)主機(jī)名的部分可以輸入你總經(jīng)理的機(jī)器名。類似于:win.rd.xxx.com。當(dāng)然,總經(jīng)理的機(jī)器要是同名的。
3.2 在服務(wù)器端生成windows可以認(rèn)的p12格式的密鑰。
openssl pkcs12 -export
? ?? ???-in win.rd.xxx.com.pem
-inkey win.rd.xxx.com.key
-certfile demoCA/cacert.pem
-out win.rd.xxx.com.p12
3.3 用命令察看環(huán)境:最好把結(jié)果輸出到文件記住,以后用得到。
openssl x509 -in demoCA/cacert.pem -noout -subject
3.4 把上面生成的p12文件傳送到總經(jīng)理的機(jī)器上,放在一個(gè)正規(guī)的地方(這個(gè)文件很重要)。
3.5 在總經(jīng)理的機(jī)器上從http://vpn.ebootis.de站點(diǎn)下載:ipsec.exe
3.6 在總經(jīng)理的機(jī)器上從: http://agent.microsoft.com/windo ... sting/ipsecpolo.asp站點(diǎn)下載windwos2000的ipsec資源工具。
3.7 安裝上述兩個(gè)軟件,并且把他們放在同一個(gè)目錄中。
3.8 建立一個(gè)ipsec的MMC:(希望你知道MMC是什么)
依次進(jìn)入Start/Run/MMC,
File (or Console) - Add/Remove Snap-in
單擊 'Add'
選 'Certificates', 然后選 'Add'
選 'Computer Account', 然后點(diǎn) 'Next'.
選 'Local computer', 然后點(diǎn) 'Finish'.
選 'IP Security Policy Management', 然后點(diǎn) 'Add'.
選 'Local Computer', 然后點(diǎn) 'Finish'
選 'Close' 然后點(diǎn) 'OK'
3.9 增加一個(gè)證書
展開(kāi)左側(cè)窗口中 'Certificates (Local Computer)'
右鍵 'Personal', 選 'All Tasks' 然后點(diǎn) 'Import'
點(diǎn) Next
輸入哪個(gè).p12 文件的路徑 (就是剛才你從服務(wù)器網(wǎng)關(guān)復(fù)制過(guò)來(lái)的,瀏覽選擇也可), 然后點(diǎn)'Next' 輸入export password(密碼), 然后點(diǎn)Next 選'Automatically select the certificate store based on the type of certificate', 然后點(diǎn)Next 點(diǎn)Finish, 如果有任何提示窗口彈出都選yes 退出MMC, 保存當(dāng)前配置到管理工具中,這樣就不用每次都重新來(lái)過(guò)了。以上所做就增加了一個(gè)證書到總經(jīng)理的機(jī)器上。
3.10設(shè)置ipsec工具:
編輯總經(jīng)理機(jī)器上的ipsec.conf文件,把rightca的=后面寫成剛才openssl x509 -in demoCA/cacert.pem -noout –subject命令生成的結(jié)果。類似下面這樣:
conn roadwarrior
? ? ? ? left=%any
? ? ? ? right=(ip_of_remote_system)
? ? ? ? rightca="C=US,S=State,L=City,O=21vianet,
CN=CA,Email=ca@xxx.com"
? ? ? ? network=auto
? ? ? ? auto=start
? ? ? ? pfs=yes
conn roadwarrior-net
? ? ? ? left=%any
? ? ? ? right=(ip_of_remote_system)
? ? ? ? rightsubnet=192.168.1.0/24
? ? ? ? rightca="C=US,S=State,L=City,O=21vianet,
CN=CA,Email=ca@xxx.com"
? ? ? ? network=auto
? ? ? ? auto=start
? ? ? ? pfs=yes
黑體部分要注意配置正確。
3.12運(yùn)行ipsec.exe有下面輸出:
C:ipsec>ipsec
IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller
Getting running Config ...
Microsoft's Windows XP identified
Host name is: (local_hostname)
No RAS connections found.
LAN IP address: (local_ip_address)
Setting up IPSec ...
? ?? ???Deactivating old policy...
? ?? ???Removing old policy...
Connection roadwarrior:
? ?? ???MyTunnel? ???: (local_ip_address)
? ?? ???MyNet? ?: (local_ip_address)/255.255.255.255
? ?? ???PartnerTunnel: (ip_of_remote_system)
? ?? ???PartnerNet? ?: (ip_of_remote_system)/255.255.255.255
? ?? ???CA (ID)? ?? ?: C=US,S=State,L=City,O=ExampleCo,...
? ?? ???PFS? ?? ?? ? : y
? ?? ???Auto? ?? ?? ?: start
? ?? ???Auth.Mode? ? : MD5
? ?? ???Rekeying? ???: 3600S/50000K
? ?? ???Activating policy...
Connection roadwarrior-net:
? ?? ???MyTunnel? ???: (local_ip_address)
? ?? ???MyNet? ?? ???: (local_ip_address)/255.255.255.255
? ?? ???PartnerTunnel: (ip_of_remote_system)
? ?? ???PartnerNet? ?: (remote_subnet)/(remote_netmask)
? ?? ???CA (ID)? ?? ?: C=US,S=State,L=City,O=ExampleCo,...
? ?? ???PFS? ?? ?? ? : y
? ?? ???Auto? ?? ?? ?: start
? ?? ???Auth.Mode? ? : MD5
? ?? ???Rekeying? ???: 3600S/50000K
? ?? ???Activating policy...
C:ipsec>
這時(shí)候你從客戶端ping服務(wù)器后面的內(nèi)網(wǎng)得到幾個(gè)'Negotiating IP Security'之后就可以ping通了。這樣總經(jīng)理帶著這臺(tái)筆記本到有互聯(lián)網(wǎng)絡(luò)的地方就可以象在辦公室一樣連接到公司里了。
值的注意的是,出于安全性的問(wèn)題,我們建議你關(guān)閉VPN網(wǎng)關(guān)上面的所有其他服務(wù),并仔細(xì)配置防火墻。通常的,如果你希望把所有的流量都發(fā)送給主站網(wǎng)關(guān),在從站就不需要增加iptables策略。否則,需要增加這樣一條策略:
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
在主站由于路由的原因,需要增加下面的策略:
iptables –t nat –A POSTROUTING –o ipsec0 –s ! 192.168.10.0/255.255.255.0 –
j SNAT –to 192,168.1.231
iptables –t nat –A POSTROUTING –o eth1 –s ! 192.168.10.0/255.255.255.0 –
j SNAT –to 192,168.1.231
每行中前面的黑體是子網(wǎng)網(wǎng)段,后面的是本網(wǎng)關(guān)的內(nèi)側(cè)出口。
注:原版資料在http://vpn.ebootis.de/ 詳細(xì)資料在:http://www.natecarlson.com/inclu ... amp;page=ipsec-x509
(14)安裝另一種郵件系統(tǒng)postfix
任何一種知名的事物似乎一定有至少一個(gè)跟風(fēng)之作(微軟的Windows系列似乎例外,跟風(fēng)者無(wú)一例外的夭折了),并且這些后來(lái)者往往有他們更出色的方面才能立足。在UNIX世界的郵件服務(wù)器領(lǐng)域,沒(méi)有哪個(gè)產(chǎn)品能夠有sendmail程序這么大的名氣,盡管它有一個(gè)非常晦澀的配置文件。同樣的,有不少人為了改進(jìn)Sendmail的缺點(diǎn)做了很多其他的郵件服務(wù)器產(chǎn)品,并且的它們都有各自鮮明的特色,并且吸引了不少用戶。其中佼佼者當(dāng)屬Q(mào)mail和 Postfix郵件系統(tǒng)了。這里我們之所以選擇Postfix介紹,主要基于下面兩個(gè)原因:其一、Postfix是一個(gè)和Sendmail一樣的為高負(fù)載郵件服務(wù)器設(shè)計(jì)的MTA(郵件傳輸代理),而Qmail處理能力要差一些(它比較適合中小型的應(yīng)用場(chǎng)合)。在某些情況下Postfix甚至比 Sendmail速度快3倍。其二、Postfix是按照兼容Sendmail的設(shè)計(jì)路子來(lái)做的,相當(dāng)?shù)呐渲梦募伎梢灾苯邮褂谩_@樣原有的 Sendmail用戶可很容易的升級(jí)的Postfix。這是一個(gè)很“優(yōu)惠”的升級(jí)條件,吸引了很多的原來(lái)的Sendmail用戶。
安裝和配置Postfix郵件系統(tǒng)的最基本步驟如下:
1、從http://www.postfix.org下載Postfix的最新版本。我們這里使用的版本是postfix1.1.5,文件名字叫作postfix-1.1.5.tar.gz,把這個(gè)文件下載到/usr/local/src里面
2、cd /usr/local/src
3、tar zxvf postfix-1.1.5.tar.gz釋放壓縮文件
4、cd postfix-1.1.5
5、vi INSTALL仔細(xì)閱讀該安裝文件和注意事項(xiàng)。
6、make clean
7、make
8、useradd postfix (或者是adduser postfix)增加一個(gè)新的用戶。然后用:vi /etc/passwd 編輯用戶文件的postfix一行,讓該行看起來(lái)類似:postfix:*:2126:2128:postfix:/no/where: /no/shell 其中號(hào)碼部分不要改動(dòng)。這主要是為了安全性考慮。
9、groupadd postdrop 建立一個(gè)組,但是這個(gè)組不能包括任何一個(gè)用戶。/etc文件中的相關(guān)行類似于:postdrop:*:54321:
10、檢查/etc/mail/aliases里面有沒(méi)有postfix: root一行,沒(méi)有就加上。
11、# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
12、# mv /usr/bin/newaliases /usr/bin/newaliases.OFF
13、# mv /usr/bin/mailq /usr/bin/mailq.OFF
14、# chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newaliases.OFF /usr/bin/mailq.OFF
15、make install (新安裝)
16、make upgrade (升級(jí))
在執(zhí)行上述兩步(選擇其中一個(gè))的時(shí)候,腳本會(huì)提問(wèn)許多路徑什么的,建議不要做改動(dòng)一路回車下來(lái),除非你確定你知道改動(dòng)默認(rèn)值的必要性。
17、啟動(dòng)是postfix start
注意:以上步驟10-14是從sendmail升級(jí)的時(shí)候用的。
很可能的,這樣安裝完了系統(tǒng)還不能收發(fā)郵件。首先,你應(yīng)該安裝一個(gè)pop3郵件接收協(xié)議服務(wù)(參見(jiàn)pop3安裝)。另外的,需要按照下列步驟檢查一下相關(guān)的配置文件。
1、/etc/mail/access是允許訪問(wèn)的控制文件,類似下面內(nèi)容,注意:地址就別照抄了。
127.0.0.1 RELAY
21.9.22 RELAY
211.151.194.14 RELAY
事實(shí)上這個(gè)文件可以定義得相當(dāng)復(fù)雜。模板和說(shuō)明可以參照:/etc/postfix/access
2、編輯完成/etc/access文件,還要把它編譯成數(shù)據(jù)庫(kù)格式:makemap hash access.db < access
3、/etc/mail/aliases是別名文件,類似下面的內(nèi)容:
MAILER-DAEMON: postmaster
postmaster: root
bin: root
daemon: root
nobody: root
postfix: root
這個(gè)文件的模板和說(shuō)明可以參見(jiàn)/etc/postfix/aliases。編輯完成后,用newaliases aliases轉(zhuǎn)換成數(shù)據(jù)庫(kù)格式。
4、/etc/mail/local-host-names寫了本地主機(jī)的名字,內(nèi)容類似于:
rd.xxx.com
tls65.rd.xxx.com
5、主配置文件:/etc/postfix/main.cf ,看一下內(nèi)容,比sendmial.cf強(qiáng)多了吧?每一項(xiàng)都有詳細(xì)的說(shuō)明和示例。最主要的(僅能使運(yùn)行的)配置項(xiàng)目在載面介紹一下。
5.1 mydomain
指明你的域名,在這里我們指定:
mydomain = test.com
5.2 myorigin
myorigin參數(shù)指明發(fā)件人所在的域名。如果你的用戶的郵件地址為user@domain.com,則 該參數(shù)指定@后面的域名。在這里我們指定:
myorigin = $mydomain
5.3 mydestination
mydestination參數(shù)指定postfix接收郵件時(shí)收件人的域名,換句話說(shuō),也就是你的postfix 系統(tǒng)要接收什么樣的郵件。通常與myorigin一樣:
mydestination = $mydomain
5.4 mynetworks_style
設(shè)置網(wǎng)絡(luò)類型,我們指定:
mynetworks_style = subnet
5.5mynetworks
定義可以使用的此smtp服務(wù)器發(fā)信的客戶ip地址,因?yàn)楣镜膇p范圍已知,所以我們指定:
mynetworks = 192.168.1.0/24
6、設(shè)定DNS服務(wù)器的MX記錄。例如,在域test.com中,安裝postfix的服務(wù)器名字叫mail.test.com,則在本域的DNS中設(shè)定MX記錄為mail.test.com
7、更改設(shè)定后不必重新啟動(dòng)postfix,只需要用postfix reload命令重新加載配置即可。
8、post還支持虛擬域名,配置方法如下:
8.1 首先把otherdomain.com(要用的虛擬域名)的MX記錄指向mail.test.com(本域的郵件服務(wù)器),這個(gè)配置在負(fù)責(zé)解析otherdomain.com的DNS做。
8.2 為了讓用戶可以使用username@otherdomain.com收發(fā)郵件,我們必須配置虛擬域,在main.cf文件中,我們添加以下內(nèi)容:
virtual_maps = hash:/etc/postfix/virtual
這里假定用戶tom、test、white需要使用這個(gè)虛擬域名,當(dāng)然首先要在系統(tǒng)中添加這幾個(gè)用戶(用useradd或adduser填加系統(tǒng)用戶),然后建立/etc/postfix/virtual文件并添加以下內(nèi)容:
othername.com anything
tom@othername.com tom
test@othername.com test
white@othername.com white
之后,用postmap命令生成虛擬域數(shù)據(jù)庫(kù):
postmap /etc/postfix/virtual
明白上面配置文件的例子,你就可以非常靈活的多域名郵件系統(tǒng)了。
五、日常維護(hù)
總結(jié)
以上是生活随笔為你收集整理的Linux简明系统维护手册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HCIP(华为高级网络安全工程师)(第十
- 下一篇: 怎么从pdf中提取图片?三招告诉你如何从