Linux簡明系統(tǒng)維護(hù)手冊(四)
2024-08-28 00:23:37
供稿:網(wǎng)友
國內(nèi)最大的酷站演示中心!
(7)安裝imap服務(wù)器
幾乎所有的發(fā)行包都帶有imap服務(wù)器軟件(一般是華盛頓大學(xué)版本),最好的辦法是用你的發(fā)行包安裝imap服務(wù)器。事實(shí)上,我個(gè)人覺得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)一下其他你覺得可能的系統(tǒng)類型,用vi看一下makefile中列的名稱)
然后配置/etc/inetd.conf,讓inetd允許imap服務(wù)。[本節(jié)內(nèi)容沒有試驗(yàn)成功,編譯總是過不去]
(8)安裝squid服務(wù)器
squid是一個(gè)優(yōu)秀的代理服務(wù)器軟件,它可以很靈活的被配置為各種應(yīng)用形式,其中包括正向代理,反向加速模式和透明代理等。但是squid目前只能代理http協(xié)議,代理ftp協(xié)議需要配置瀏覽器仿真主動(dòng)ftp協(xié)議。下面的步驟是安裝squid的過程。
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ù)器的更新請求(因?yàn)橛糜蛎┮矔?huì)被用戶的gsln設(shè)備解析回來而形成循環(huán)。)
5、make 開始編譯
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)目都有注釋說明。首先,在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 [email protected]這里填寫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訪問控制列表:為了簡單起見,我們在這里開放所有的權(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定義的。
這樣就開放了所有的權(quán)限。以后有需要的,再繼續(xù)往上加各種限制即可。
9、以root身份創(chuàng)建組nogroup :
%su root (如果當(dāng)前不是root)
#groupadd nogroup
#useradd nobody (如果沒有這個(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、成功后,測試一下:/usr/local/squid/bin/squid -ncd1 該命令正式啟動(dòng)squid。如果一切正常,你會(huì)看到一行輸出 :ready to serve requests.
13、用ctrl-c退出前臺(tái)測試。
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)聽瀏覽器客戶請求的端口號。
18、icp_port 0 “icp_port”參數(shù)指定squid從鄰居(neighbour)服務(wù)器緩沖內(nèi)發(fā)送和接收icp請求的端口號。這里設(shè)置為0是因?yàn)檫@里配置squid為內(nèi)部web服務(wù)器的加速器,所以不需要使用鄰居服務(wù)器的緩沖。
19、emulate_httpd_log on 打開“emulate_httpd_log”選項(xiàng),將使squid仿照web服務(wù)器的格式創(chuàng)建訪問記錄。如果希望使用web訪問記錄分析程序,就需要設(shè)置這個(gè)參數(shù)。
20、redirect_rewrites_host_header off 缺省地,squid將改寫任何重定向請求的主機(jī)頭部。若系統(tǒng)運(yùn)行squid為加速器模式,則這時(shí)不需要重定向特性。該參數(shù)在負(fù)載過重的情況下要旁路重定向器時(shí)才打開
21、httpd_accel_host vartual 此處設(shè)置反向代理的主機(jī)名,如果對后面多個(gè)域名進(jìn)行緩沖,請使用虛擬主機(jī)模式(如此)。
22、httpd_accel_port 80 此處設(shè)置反向代理的web服務(wù)端口號。
23、#httpd_accel_with_proxy off 把這行注釋掉,此處設(shè)置開反向代理的同時(shí),是否開普通代理緩存服務(wù)。如果這行不注釋掉,就沒有高速緩存功能。
24、定義訪問控制列表:
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)的簡單配置。
安裝ipchains一般都不用你操心,因?yàn)閹缀跛械膌inux發(fā)行包都把該軟件作為必須安裝的卻省配置。另一個(gè)原因是ipchains是跟內(nèi)核(kernel)有很大的關(guān)系,因此最好在安裝系統(tǒng)的時(shí)候選上相關(guān)選項(xiàng)(如果有)。在標(biāo)題里面我們還提到了iptables,這個(gè)工具在表面上等同于ipchains,只不過是用于2.4內(nèi)核的(2.4內(nèi)核在這方面的代碼幾乎是重新寫過的,功能有了長足的提高)。關(guān)于iptables工具的配置我們在后面介紹。你只需要記住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)卡(也許是出于前面說的原因),或者你要在一臺(tái)在用的機(jī)器上加一塊網(wǎng)卡(因?yàn)槟悴辉敢庵匮b系統(tǒng)),那么就按照下面的辦法處理。
1.1、我們就說pci網(wǎng)卡。安裝前首先看看網(wǎng)卡芯片,記住芯片的型號(希望你自己攢過機(jī)器)。
1.2、安裝man手冊(用發(fā)行包)
1.3、在/usr/doc/howto/english/txt/ethernet-howto文件(如果是壓縮的就釋放)中搜索你的網(wǎng)卡型號,找到對應(yīng)的驅(qū)動(dòng)模塊名稱。
1.4、如果模塊沒有,還需要重新編譯核心。在menuconfig網(wǎng)絡(luò)設(shè)備一欄選中你的型號然后標(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)核版本號/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、按照前面說的編譯內(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
本來這項(xiàng)工作是非常復(fù)雜的,但是我們這里講的簡單,讓網(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)的地址也同樣通。這說明轉(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ī)器不知道怎么回答,那里沒有合適的路由,因?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)過轉(zhuǎn)發(fā)就回來內(nèi)網(wǎng)了。好了,一個(gè)簡單的網(wǎng)關(guān)做好了。如果你需要實(shí)現(xiàn)防火墻(包過濾功能),則需要配置更加復(fù)雜的過濾規(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 說明和下載
前面已經(jīng)提到過2.4 內(nèi)核中要使用iptables來做類似于ipchains在2.2內(nèi)核中實(shí)現(xiàn)的事情。事實(shí)上,在2.4內(nèi)核中的iptables包含了兩個(gè)完全不同的部分:包過濾和地址轉(zhuǎn)換。這兩個(gè)功能在邏輯上是分開的,考慮到操作習(xí)慣上的問題才集成在一個(gè)配置程序(iptables)上。如果你安裝了帶有2.4內(nèi)核的發(fā)行包,那么一般都帶有iptables,并且在內(nèi)核配置上也配置好了。如果要編譯新的內(nèi)核或者原來的內(nè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)記<*>
逐級返回上面菜單后保存配置,然后按照編譯內(nèi)核的那一套程序進(jìn)行即可(參見前面的內(nèi)容)。這里需要說明的是,內(nèi)核支持了iptables功能,還需要有外部程序才行。如果你是直接安裝的帶有2.4內(nèi)核的發(fā)行包,應(yīng)該已經(jīng)帶有iptables實(shí)用程序了。但是如果你是從2.2核心的發(fā)行包直接升級到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)可能沒有bzip2工具,如果沒有,你就去下一個(gè):
進(jìn)入新生成的目錄 :cd iptables-1.2.6a 編譯和安裝:make ; make install
4.3 配置
如果你需要配置一個(gè)簡單的網(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模塊(語法是:modprobe ip_nat_ftp)。黑體的地址部分可能是需要根據(jù)你網(wǎng)絡(luò)的實(shí)際情況來決定的。最后一句話的意思是把凡是源地址是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)大,配置也非常靈活。其中的防火墻功能通過-t filter參數(shù)實(shí)現(xiàn),地址轉(zhuǎn)換功能通過-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è)手冊:《linux 2.4 packet filter howto》和《linux 2.4 nat howto》。這兩個(gè)文檔是iptables的原作者寫的,相當(dāng)經(jīng)典。英文不好?沒關(guān)系,這兩個(gè)文檔都有中文版本。推薦你到:永遠(yuǎn)的unix(http://www.fanqiang.com)下載。