明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Linux簡明系統(tǒng)維護手冊(5)

[摘要](12)配置samba服務(wù)器.....(13)構(gòu)建基于Linux的VPN網(wǎng)絡(luò)  構(gòu)建VPN幾乎是Linux的最高級應(yīng)用之一了,學(xué)會了這項技術(shù),是足以使你自豪的資本。VPN的主要用途就是建立一個加密的...
(12)配置samba服務(wù)器

.....

(13)構(gòu)建基于Linux的VPN網(wǎng)絡(luò)

  構(gòu)建VPN幾乎是Linux的最高級應(yīng)用之一了,學(xué)會了這項技術(shù),是足以使你自豪的資本。VPN的主要用途就是建立一個加密的通信機制,然后通過把所有的你的子網(wǎng)的信息按照特定的方式加密傳輸,構(gòu)成一個邏輯上的虛擬的網(wǎng)絡(luò)。簡單的說,就是一個Linux系統(tǒng)的IP層加密解決方案。這里面需要用到不少組件,下面一一介紹。

  1、準備工作和安裝

  1.1 從http://www.kernel.org下載2.4.X的內(nèi)核,除了2.4.15版本(該版本有一個致命錯誤)。然后把該內(nèi)核放置到:/usr/src中。(這里我們使用Linux-2.4.18.tar.gz),然后釋放:tar zxvf linux-2.4.18.tar.gz

  1.2 刪除原來的連接rm linux

  1.3 ln –s linux-2.4.18.tar.gz linux

  1.4 檢查當(dāng)前的網(wǎng)卡和SCSI的型號(參見內(nèi)核升級一章)

  1.5 cd linux (進入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庫的最新版本到/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 ,這個是補丁文件。釋放,進入x509補丁目錄,復(fù)制freeswan.diff到外面的freeswan源目錄,然后回到freeswan源目錄中運行:patch –p1 < freswan.diff

  1.19 從http://www.openssl.org下載openssl-0.9.6b版本到/usr/local/src,釋放,進入目錄

  1.20 ./config (如果原來系統(tǒng)中有openssl需要先uninstall再安裝,不過一般情況下你可能uninstall不下來8-)。如果無法uninstall,找到他們的路徑,在這里通過—prefix=參數(shù)指定路徑覆蓋舊版本的文件。這里嚴重建議:如果你沒有把握確定路徑,最好這樣做:到你用的發(fā)行包的開發(fā)商的FTP站點(如果你用turbolinux就去ftp.turbolinux.com用redhat就去ftp.redhat.com),用anonymous用戶和隨便一個電子郵件作為密碼登陸,找到你用的發(fā)行包版本的生機目錄,然后下載相應(yīng)的RPM包,注意:這里的包至少應(yīng)該是0.9.6b1以上的i386版本。下載完畢后用rpm –Uvh更新。這樣做完了很干凈。

  1.21 make (如果你用rpm包升級就不用這個步驟了)

  1.22 make test (如果你用rpm包升級就不用這個步驟了)

  1.23 make install (如果你用rpm包升級就不用這個步驟了)安裝完了以后執(zhí)行openssl命令,輸入version看看是不是你剛剛安裝的版本。如果不是,可能沒有覆蓋原來安裝的舊版本。從1.20重新來過

  1.24 然后回到freeswan的源目錄,運行:make menugo,在networking options中選擇關(guān)于iptables和ipsec相關(guān)的所有選項。其中ipsec是freeswan加上的,最好把前面括號中M(模塊方式)換成*(編譯進內(nèi)核)。下列內(nèi)核選項應(yīng)該選上:

  進入:Networking Options至少選擇上:


  [*] Network packet filtering (replaces ipchains)
  [*] Network packet filtering debugging (NEW)
  進入: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兩個選項,參見DHCP一章。

  等等……

  把下面的選項全部標記<*>

  返回上一層菜單后,把列表選項最下面的凡是IPSEC相關(guān)的選項全部選為<*>。另外的,如果你打算使用撥號連接請在網(wǎng)絡(luò)設(shè)備支持菜單選擇ppp支持(注意,你用的ppp程序一定要2.4版本以上的)

  1.25 然后檢查網(wǎng)卡和硬盤選項是否正確,如果沒有問題就逐層退出,然后保存配置。

  1.26 退出后將自動編譯內(nèi)核,等待……

  1.27 編譯完成后,來到/usr/src/linux目錄,運行: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 運行l(wèi)ilo更新數(shù)據(jù)

  1.36 reboot

  1.37 啟動后,運行:ipsec setup restart 應(yīng)該不報任何錯誤而正常出現(xiàn)freeswan的版本。

  注意:還有一些必要的內(nèi)核參數(shù)配置,這些配置可以在rc.local中實現(xiàn)。他們是:


  echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
  echo 1 > /proc/sys/net/ipv4/ip_forward




  如果你把下面兩項編譯成模塊(前面擴號是M而不是*):


   FTP protocol support (NEW)
IRC protocol support (NEW)




  你需要在rc.local中加上:


  modprobe ip_nat_ftp




  安裝完了,接下來我們將說明幾種VPN的玩法。

  2、配置Frees/wan用于支持雙網(wǎng)關(guān)通信。也就是兩個異地的子網(wǎng)通過一對ipsec的VPN網(wǎng)關(guān)進行交互訪問。第一種玩法是網(wǎng)絡(luò)對網(wǎng)絡(luò)的VPN。一般的,某企業(yè)在甲乙兩地(距離相當(dāng)遠)各有一個辦公室,每個辦公室各有一套LAN,他們分別通過專線連接到internet網(wǎng)絡(luò)上。甲LAN上是企業(yè)的管理中心,運行著企業(yè)的管理系統(tǒng)。而乙LAN上的用戶也需要使用該管理系統(tǒng),盡管乙LAN可以通過internet(公網(wǎng))連接過去,但是企業(yè)的老板說不行!我們的數(shù)據(jù)不能暴露在公網(wǎng)上,必須加密!好了,我們的VPN網(wǎng)絡(luò)就可以應(yīng)用于該企業(yè)的這種需求。首先在甲乙兩個LAN的出口各放置一臺我們的Linux服務(wù)器,他們都安裝好了ipsec(前面說的安裝步驟一個都不少),兩個LAN的數(shù)據(jù)分別通過各自的這臺機器(ipsec gateway)進入公網(wǎng),凡是經(jīng)過該網(wǎng)關(guān)的數(shù)據(jù)全部都是加密的。在效果上,兩個LAN的用戶可以互相ping到對方的機器,盡管他們可能一個是192.168.1.0/24網(wǎng)段,另一個是192.168.10.0/24網(wǎng)段的。他們好像在同一個局域網(wǎng)中工作,沒有界限。公共網(wǎng)絡(luò)的加密部分對他們來說也是透明的。而兩個LAN在公共網(wǎng)絡(luò)上交換的數(shù)據(jù)是密文的。這就是虛擬專用網(wǎng)VPN。

  但愿你已經(jīng)按照前面的步驟順利的安裝好了兩臺機器,下面我告訴你怎樣配置成網(wǎng)對網(wǎng)的環(huán)境。

  2.1 我們先配置甲網(wǎng)的ipsec網(wǎng)關(guān)(該網(wǎng)關(guān)有兩個網(wǎng)卡,我們配置他們的地址分別為eth1:192.168.1.231和eth0:21.9.22.22)。安裝完成后,我們首先要做的事情是生成CA證書。(用到剛才安裝的openssl)

  2.2 找到openssl.cnf文件,一般在/etc/ssl/中,也可能在/var/ssl中或/usr/ssl中(實在不行你就find / -name “openssl.cnf”找找嘛。怯泻脦讉,你要搞清楚哪個是你安裝的版本。改動其中的default_bits選項的值從1024到2048,然后改動default_days的值到3650。讓期限為10年!保存退出。

  2.3 在/var/中建立一個目錄:/var/sslca,改變該目錄的權(quán)限為700(chmod 700 /var/sslca)

  2.4 在你安裝的openssl目錄中找到CA.sh腳本。注意,應(yīng)該是你當(dāng)前運行的openssl版本的CA.sh

  2.5 cd /var/sslca 進入到你剛才建立的目錄

  2.6 比如你剛才找到的CA.sh在/usr/lib/ssl/misc/,那么就輸入/usr/lib/ssl/misc/CA.sh –newca,接下來你會被問到一系列問題。問題和回答類似于下面的樣子。如果你確認哪些你有把握更改就改,比如公司名稱、郵件、密碼等。不能確定的就按照下面的樣子抄上即可。


  ~/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 phrase:(enter password)
  Verifying password - Enter PEM pass phrase:(enter 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)生成證書:

  命令和要回答的問題如下:


  ~/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 :PRINTABLE:'US'
  stateOrProvinceName :PRINTABLE:'State'
  localityName :PRINTABLE:'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




  在以上步驟中一定要記住你輸入的密碼。如果哪一不錯了,想重新來過的話,記住刪除/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-----'后面所有的東西,之后,這個文件應(yīng)該從'-----BEGIN RSA PRIVATE KEY-----'至'-----END RSA PRIVATE KEY-----'結(jié)束。

  2.10 如果正常的安裝了x.509補丁,你應(yīng)該可以看到/etc/ipsec.d及其下面的目錄。如果沒有,你就自己建立。然后按照下面的位置復(fù)制合適的文件:(此時你仍然在/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是你前面生成密要的時候回答問題輸入的密碼。

  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ù)你實際的環(huán)境更改的。我們用的兩端的子網(wǎng)是192.168.1.0/24和192.168.10.0/24。文件中vpnserver.rd.xxx.com.pem是CA證書。這個配置是通用的,也就是說可以適用LAN-LAN方式的倆接和遠端客戶端兩種方式。

  2.13 下面配置分支機構(gòu)的網(wǎng)關(guān)。這個機器也要事先安裝完全freeswan等軟件。

  重新執(zhí)行上面的2.7-2.9步驟生成分支機構(gòu)的證書,注意:在回答問題的過程中,關(guān)于主機名稱的部分的輸入改變?yōu)槟惴种C構(gòu)的網(wǎng)關(guān)機器名稱,比如:vpncliet.rd.xxx.com。

  2.14 復(fù)制下列生成的文件到分支機構(gòu)網(wǎng)關(guān)上的相應(yīng)位置(比如通過軟盤復(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 配置分支機構(gòu)的/etc/ipsec.secrets 寫上一行:


  RSA vpnclient.rd.xxx.com.key "password"。




  其他行刪除。Password就是前面回答問題的時候輸入的密碼。

  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ù)實際情況修改的。

  2.17 首先啟動server端的ipsec:ipsec setup restart,然后同樣啟動客戶端的ipsec

  2.18 建立通道:ipsec auto –up net-net然后在Server端可以用命令ipsec whack status應(yīng)該可以看到新建立的幾個通道。此時,你在兩個子網(wǎng)中應(yīng)該可以互相ping 通。

  3、配置Frees.wan用于支持遠程客戶端訪問。也就是允許一個Windows客戶端,來通過VPN和公司內(nèi)部的網(wǎng)絡(luò)進行通訊。

  第2種VPN玩法其實就是把分支機構(gòu)的LAN換成一個單獨的,地址不固定的機器。這樣的應(yīng)用適合總經(jīng)理出差的時候從外地ISP撥號上網(wǎng)連接到本部網(wǎng)絡(luò)的情況。期間,非但有認證,而且通過ISP和公網(wǎng)的數(shù)據(jù)全部是加密的。這種方式在服務(wù)器端的配置和上面完全一樣(記得嗎?我們在行面給出的配置已經(jīng)是兼顧了兩種用法)。這里需要做的是把總經(jīng)理的筆記本配成VPN客戶端。他的筆記本應(yīng)該是windows2000的并且升級到sp2。

  3.1 首先重復(fù)2.7-2.9步驟生成證書,其中有關(guān)主機名的部分可以輸入你總經(jīng)理的機器名。類似于:win.rd.xxx.com。當(dāng)然,總經(jīng)理的機器要是同名的。

  3.2 在服務(wù)器端生成windows可以認的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)理的機器上,放在一個正規(guī)的地方(這個文件很重要)。

  3.5 在總經(jīng)理的機器上從http://vpn.ebootis.de站點下載:ipsec.exe

  3.6 在總經(jīng)理的機器上從: http://agent.microsoft.com/windows2000/techinfo/reskit/tools/existing/ipsecpolo.asp站點下載windwos2000的ipsec資源工具。

  3.7 安裝上述兩個軟件,并且把他們放在同一個目錄中。

  3.8 建立一個ipsec的MMC:(希望你知道MMC是什么)

  依次進入Start/Run/MMC,


  File (or Console) - Add/Remove Snap-in
  單擊 'Add'
  選 'Certificates', 然后選 'Add'
  選 'Computer Account', 然后點 'Next'.
  選 'Local computer', 然后點 'Finish'.
  選 'IP Security Policy Management', 然后點 'Add'.
  選 'Local Computer', 然后點 'Finish'
  選 'Close' 然后點 'OK'




  3.9 增加一個證書

  展開左側(cè)窗口中 'Certificates (Local Computer)'

  右鍵 'Personal', 選 'All Tasks' 然后點 'Import'

  點 Next

  輸入哪個.p12 文件的路徑 (就是剛才你從服務(wù)器網(wǎng)關(guān)復(fù)制過來的,瀏覽選擇也可), 然后點'Next' 輸入export password(密碼), 然后點Next 選'Automatically select the certificate store based on the type of certificate', 然后點Next 點Finish, 如果有任何提示窗口彈出都選yes 退出MMC, 保存當(dāng)前配置到管理工具中,這樣就不用每次都重新來過了。以上所做就增加了一個證書到總經(jīng)理的機器上。

  3.10設(shè)置ipsec工具:

  編輯總經(jīng)理機器上的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運行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>




  這時候你從客戶端ping服務(wù)器后面的內(nèi)網(wǎng)得到幾個'Negotiating IP Security'之后就可以ping通了。這樣總經(jīng)理帶著這臺筆記本到有互聯(lián)網(wǎng)絡(luò)的地方就可以象在辦公室一樣連接到公司里了。

  值的注意的是,出于安全性的問題,我們建議你關(guān)閉VPN網(wǎng)關(guān)上面的所有其他服務(wù),并仔細配置防火墻。通常的,如果你希望把所有的流量都發(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/ 詳細資料在:http://www.natecarlson.com/include/showpage.php?cat=linux&page=ipsec-x509

  (14)安裝另一種郵件系統(tǒng)postfix

  任何一種知名的事物似乎一定有至少一個跟風(fēng)之作(微軟的Windows系列似乎例外,跟風(fēng)者無一例外的夭折了),并且這些后來者往往有他們更出色的方面才能立足。在UNIX世界的郵件服務(wù)器領(lǐng)域,沒有哪個產(chǎn)品能夠有sendmail程序這么大的名氣,盡管它有一個非常晦澀的配置文件。同樣的,有不少人為了改進Sendmail的缺點做了很多其他的郵件服務(wù)器產(chǎn)品,并且的它們都有各自鮮明的特色,并且吸引了不少用戶。其中佼佼者當(dāng)屬Q(mào)mail和Postfix郵件系統(tǒng)了。這里我們之所以選擇Postfix介紹,主要基于下面兩個原因:其一、Postfix是一個和Sendmail一樣的為高負載郵件服務(wù)器設(shè)計的MTA(郵件傳輸代理),而Qmail處理能力要差一些(它比較適合中小型的應(yīng)用場合)。在某些情況下Postfix甚至比Sendmail速度快3倍。其二、Postfix是按照兼容Sendmail的設(shè)計路子來做的,相當(dāng)?shù)呐渲梦募伎梢灾苯邮褂。這樣原有的Sendmail用戶可很容易的升級的Postfix。這是一個很“優(yōu)惠”的升級條件,吸引了很多的原來的Sendmail用戶。

  安裝和配置Postfix郵件系統(tǒng)的最基本步驟如下:

  1、從http://www.postfix.org下載Postfix的最新版本。我們這里使用的版本是postfix1.1.5,文件名字叫作postfix-1.1.5.tar.gz,把這個文件下載到/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仔細閱讀該安裝文件和注意事項。

  6、make clean

  7、make

  8、useradd postfix (或者是adduser postfix)增加一個新的用戶。然后用:vi /etc/passwd 編輯用戶文件的postfix一行,讓該行看起來類似:postfix:*:2126:2128:postfix:/no/where:/no/shell 其中號碼部分不要改動。這主要是為了安全性考慮。

  9、groupadd postdrop 建立一個組,但是這個組不能包括任何一個用戶。/etc文件中的相關(guān)行類似于:postdrop:*:54321:

  10、檢查/etc/mail/aliases里面有沒有postfix: root一行,沒有就加上。

  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 (升級)

  在執(zhí)行上述兩步(選擇其中一個)的時候,腳本會提問許多路徑什么的,建議不要做改動一路回車下來,除非你確定你知道改動默認值的必要性。

  17、啟動是postfix start

  注意:以上步驟10-14是從sendmail升級的時候用的。

  很可能的,這樣安裝完了系統(tǒng)還不能收發(fā)郵件。首先,你應(yīng)該安裝一個pop3郵件接收協(xié)議服務(wù)(參見pop3安裝)。另外的,需要按照下列步驟檢查一下相關(guān)的配置文件。

  1、/etc/mail/access是允許訪問的控制文件,類似下面內(nèi)容,注意:地址就別照抄了。


  127.0.0.1 RELAY
  21.9.22 RELAY
  211.151.194.14 RELAY




  事實上這個文件可以定義得相當(dāng)復(fù)雜。模板和說明可以參照:/etc/postfix/access

  2、編輯完成/etc/access文件,還要把它編譯成數(shù)據(jù)庫格式:makemap hash access.db < access

  3、/etc/mail/aliases是別名文件,類似下面的內(nèi)容:


  MAILER-DAEMON: postmaster
  postmaster: root
  bin: root
  daemon: root
  nobody: root
  postfix: root




  這個文件的模板和說明可以參見/etc/postfix/aliases。編輯完成后,用newaliases aliases轉(zhuǎn)換成數(shù)據(jù)庫格式。

  4、/etc/mail/local-host-names寫了本地主機的名字,內(nèi)容類似于:


  rd.xxx.com
  tls65.rd.xxx.com




  5、主配置文件:/etc/postfix/main.cf ,看一下內(nèi)容,比sendmial.cf強多了吧?每一項都有詳細的說明和示例。最主要的(僅能使運行的)配置項目在載面介紹一下。


  5.1 mydomain




  指明你的域名,在這里我們指定:


  mydomain = test.com
  5.2 myorigin




  myorigin參數(shù)指明發(fā)件人所在的域名。如果你的用戶的郵件地址為user@domain.com,則 該參數(shù)指定@后面的域名。在這里我們指定:


  myorigin = $mydomain
  5.3 mydestination




  mydestination參數(shù)指定postfix接收郵件時收件人的域名,換句話說,也就是你的postfix 系統(tǒng)要接收什么樣的郵件。通常與myorigin一樣:


  mydestination = $mydomain
  5.4 mynetworks_style




  設(shè)置網(wǎng)絡(luò)類型,我們指定:


  mynetworks_style = subnet
  5.5mynetworks




  定義可以使用的此smtp服務(wù)器發(fā)信的客戶ip地址,因為公司的ip范圍已知,所以我們指定:


  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è)定后不必重新啟動postfix,只需要用postfix reload命令重新加載配置即可。

  8、post還支持虛擬域名,配置方法如下:

  8.1 首先把otherdomain.com(要用的虛擬域名)的MX記錄指向mail.test.com(本域的郵件服務(wù)器),這個配置在負責(zé)解析otherdomain.com的DNS做。

  8.2 為了讓用戶可以使用username@otherdomain.com收發(fā)郵件,我們必須配置虛擬域,在main.cf文件中,我們添加以下內(nèi)容:


  virtual_maps = hash:/etc/postfix/virtual




  這里假定用戶tom、test、white需要使用這個虛擬域名,當(dāng)然首先要在系統(tǒng)中添加這幾個用戶(用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ù)庫:


  postmap /etc/postfix/virtual




  明白上面配置文件的例子,你就可以非常靈活的多域名郵件系統(tǒng)了。

五、日常維護

  責(zé)任編輯提示:這篇文章是熱心網(wǎng)友所發(fā),里面還有一些內(nèi)容沒有完整,請與這位作者直接聯(lián)系。:)