日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux简明系统维护手册

發布時間:2024/3/26 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux简明系统维护手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux簡明系統維護手冊
摘要
? ?   本文是長期工作經驗的總結,說明了Linux下各種主要網絡應用的配置實例,對接觸Linux時間不長的同學們很有參考價值。注意:其中有些應用還是很復雜的呀。文中VPN技術部分要感謝老井無私的提供支持,這是我們共同的完成的。(2002-11-01 16:50:49)

By atan

作者:阿譚

前言

  有同事已經通過艱苦的工作完成了長達好幾百頁的關于Linux的文檔。事實上,在網上還有超過好幾萬頁的各種關于Linux的技術精華,還不包括英文的。有數萬程序員和網絡專家在為這個軟件努力工作。這就是自由的魅力。

  我使用Linux有不少時間了,期間也經歷過無數的挫折,同時也得到過很多高手的幫助。我一向喜歡言簡意賅的文字。通過下面的簡單句子和代碼,我希望能夠表達出我使用Linux的體會。也許本文的結構比較凌亂,但我希望它的每一句話都是對你有用的。當然,你要知道一些更詳細的東西,請參閱我同事寫的文檔。

  當然,能夠通過查閱這個文檔,使你的工作順利是我最大的心愿。

一、關于Linux的誤區

  1、Linux干什么用?

  首先,很少有人用Linux做桌面系統,因為Windows桌面系統已經足夠好了。我們主要把Linux用作網絡服務器的操作系統。如果你和你的應用符合下面的幾條,那么你合適使用Linux:

  *不愿意花錢在操作系統和網絡應用上。

  *用D版系統受良心譴責或害怕承擔責任。

  *想得到和花錢的系統差不多的性能。

  *在用戶面前顯得水平較高。

  *認識幾個弄Linux的高手,或者知道在哪里能夠找到問題答案。

  2、每種Linux發行包差別很多嗎?

  如果你在上世紀80年代末到95年之前這段時間大量使用PC機的話,那對于Linux你應該很好理解:它就象一個有著32位搶先多任務核心的 DOS,其區別在于外表看起來像是一種UNIX。Linux是好多人用智慧堆砌起來的,初學者經常問:“RedHat好還是Slackware好?”。這個人同時還面臨上百種選擇,這的確讓人頭痛。大部分Linux發行包實際上很簡單,幾乎所有的發行包都有相同的內核(也許是不同版本),外部命令和數據文件的差別也僅僅局限于在文件系統中的存放位置不同(這導致了某些兼容性問題,因為在某些地方找不到特定的文件嘛)。另外就是有些發行包為了顯示自己的卓而不群,在發行包中增加了一些自己的實用程序。實際上動手修改內核的廠商不算太多,因為這樣會內核官方版本的不斷更新而手忙腳亂。當然有一些嵌入式系統開發商在Linux基礎上做了自己的系統另說。

  擁有眾多的發行包是Linux的一個很討厭的問題,在這一點上,我更喜歡FreeBSD,因為它只有一個官方發行版本,也運行得比較穩定。可給 Linux做軟件的程序員太多了,Linux上面的資料也更多。記住:當一個家伙跟你說用哪個發行版本無所謂的時候,那他就是專家。

  3、Linux業余愛好者的東西嗎?

  這樣的宣傳給了很多人這樣的印象。其實,Linux是一個嚴肅的操作系統,擁有一切操作系統共有的特性。它可以用在很多嚴肅的場合。

  4、Linux性能比Windows更好嗎?

  這里的答案會讓你失望,據我以往的實際測試,2.2版本的Linux核心的性能比windows2000要低。值得欣慰的是2.4版本的核心性能有大幅度提高基本上接近了Windows2000。但Windows2000復雜的圖形界面占用了相當的系統資源。

  5、Linux比Windows更復雜更專業嗎?

  從復雜度上說,Windows2000要比Linux復雜很多。在核心技術上,Windows也更先進。

  6、Linux更可靠嗎?

  應該從兩個角度評價系統的可靠性。(1)系統自身的可靠性,兩者象差不多。人們普遍認為的Windwos不如Linux可靠的印象來源于 Windows眾多的良莠不齊的軟件。當然,Linux比Windows結構簡單,在一定程度上也可以提高可靠性。(2)從安全性角度來說,Linux遠遠高于Windows系統,道理很簡單:樹大招風嘛。另外,Linux的源代碼開放機制使得漏洞發現和消滅得很快。而Windows相對就顯得比較官僚了。這里補充一點,我用過的最可靠的系統是BSD類的OS,可靠性和安全性都可圈可點。

  7、Linux真的不用花一分錢嗎?

  大部分的發行包需要花少量的錢購買。當然你也可以從網絡上DOWN。其實這些發行包未必符合你的應用,一般都需要經過一些改動和定制才能運行好。當然,花的錢跟Windows沒法比。

二、Linux安裝注意事項

  現在的大部分發行包都很容易安裝,基本上都是圖形向導式的,每個發行包都不太相同,也無法一一描述,如果你連安裝都不明白,那就別用Linux了。這里僅僅說明幾個注意的問題。

  1、如果要和Windows混裝,一定要先裝Windows,后裝Linux。

  2、分區的時候,根據計劃安裝的軟件靈活決定分區。一般分區有:/,/root,/usr,/var和swap分區,其中swap分區類型和其他不同需要專門選擇一下,它的空間一般是物理內存的兩倍即可。/root分區是緊急情況root用的,有64兆就行了。

  3、當然,為了方便,你可以安裝發行包給你做好的軟件。但我安裝Linux的習慣做法是開始就安裝一個最小系統,然后安裝所有的編譯工具。安裝編譯工具的方法一般都通過你用的發行包的包管理工具實現,這樣最方便。比如在TurboLinux中,運行/usr/sbin/Turbopkg就可以了。在管理工具中選擇所有關于Developoment相關的選項或gcc相關選項,一般就可以了。

  4、lilo一定要裝。否則一旦出現分區問題都不好辦。

  5、如果和Windows混裝的時候,裝完了系統起不來了。可以用98啟動盤啟動,然后用FDISK /MBR回復主引導分區來保住Windows分區。

  在安裝了最小系統和全套的編譯器后,我們應該得到一個比較干凈的系統。在這個系統上,可以下載和安裝各種應用軟件了。

三、基本使用

  1、文件系統

  無論有多少個分區,整個文件系統都是一棵完整的樹結構。經常用到的目錄有:

  (1)/usr:存放各種應用程序文件用。其中的/usr/local用來存放后安裝的軟件

  (2)/var:用來存放所有的數據文件

  (3)/proc:里面的文件用來表示系統內核的各種配置和狀態。這一塊不是真正的文件系統,而是內存里面的各種數據。可以從這里得到一些常用的系統信息。比如CPU內存什么的。

  (4)/etc:這里是放置所有的系統配置文件。一般情況下,后安裝的軟件的配置文件不會放到這里。除非你是用RPM安裝的隨發行包配的軟件或者故意這樣做。我不喜歡把不同軟件的文件混在一起,因此通常讓不同的軟件的配置文件放在各自的目錄中。

  2、常用的命令

  這里我列出一些經常用的命令,具體的用法可以參見相關手冊頁(希望你的英文不象我這么差)。

  vi(一定要會用這個你非常討厭的東西,如果你屈服了,可以選擇另一個叫做pico的編輯器,它有點象DOS的edit)

  head(用來看很長的文件用)

  tail(同上)

  netstat(看網絡狀態)

  tar(解開.tar.gz的壓縮包)

  ps(察看進程)

  kill(干掉進程)

  top(看系統狀況)

  shutdown(關閉系統)

  cat(看文件內容)

  ping (看網絡連通狀況)

  ftp(傳輸文件)

  man(手冊)

  上面這些命令都是最最常用的,一定要把基本用法記牢。事實上,每人能記住全部命令或一個命令的全部參數,記住幾個常用的就行了。其他的查書。

  3、內核升級

  如果你不愿意冒險,可以跳過這個部分。不過根據我實際使用的經驗,2.4.x版本的內核性能比2.2.x的性能至少提高40%,還是很值得一試的。現在最新的發行包幾乎都帶有新的2.4內核,但是版本號想對保守。這里,我的建議是在決定升級任何部分的時候,一定要首先看一下所謂的 “currect version release note”信息,里面告訴你本次版本升級都有些什么改動。如果改動的內容不涉及你當前的環境或需求,只是增加了一些邪門設備的驅動,你大可不必急著升級。補充一句話:Linux的內核版本號的中間一位是奇數的是非穩定版本,比如2.3,是偶數的才是穩定版本。

  升級內核的步驟如下:

  (1)首先在網上找到你打算升級的內核文件,一般名字是:linux-2.x.xx.tar.gz,把這個文件復制到/usr/src。(不知道在哪里找?看看:http://www.kernel.org ,最好找到.tar.gz格式的,比如這里:http://www.kernel.org/pub/linux/kernel/v2.x/)。下面的升級舉例是從2.2.18升級到2.5.7(這是最新的內核了,你使用其它的版本別忘了改變版本號)

  (2)解壓縮:tar zxvf linux-2.5.7.tar.gz后生成一個目錄:linux-2.5.7。

  (3)進入/usr/src,用ls –l 命令可以看到src里面有一個連接,類似于:linux -> linux-2.2.18/ (連接指向你當前用的內核版本)。首先刪除這個連接(rm linux),用ln -s linux-2.5.7 linux 命令重建連接。我想你一定不會連這里的版本號都照抄吧?

  (4)進入linux-2.5.7 目錄,如果不是第一次編譯這個內核,最好用命令:make mrproper 刪掉上次編譯產生的.o文件等,當然以前保存的配置也丟了。

  (5)用命令:make menuconfig命令調整內核配置以適應你目前的環境,記住,不懂的配置不要亂動。首要任務是調整各種硬件的環境,比如SCSI卡:SCSI support/SCSI low-level drivers,不知道現在的SCSI卡型號?在/proc/scsi中可以找到。還有網卡,在Network Device Support 里面。不知道現在的網卡型號?在這個文件里面寫著呢:/proc/net/PRO_LAN_Adapters/eth0.info或/proc/pci文件中也可以找到 。在menuconfig中用空格鍵改變選項狀態,前面的<*>表示該功能編譯在內核中,主要是運行速度快。< >表示不需要該功能。表示把該功能編譯成模塊,通常為了減小尺寸,和更換方便而把某些驅動編譯成模塊。

  (6)下面的事情比較程序化,照著做:make dep (檢查文件的完整性,過程很復雜)

  (7)make bzImage 注意大小寫(真正開始編譯了耶!我覺著這個最過癮了,屏幕“嘩啦嘩啦”的,這時候你會感覺到,多少不知名的程序員在這個復雜的系統中貢獻了自己的一份力量)

  (8)make modules (編譯那些被標記為的功能模塊或驅動程序)

  (9)make modules_install(把編譯好的模塊復制到指定地點,一般是:/lib/modules/ 。注意:不同版本號的模塊是完全分開在不同目錄中的,因為modules跟內核是緊密相關的,混用容易導致系統崩潰)

  (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復制到/boot/

  (11)cp /usr/src/linux-2.5.7/System.map /boot/System.map-2.5.7

  (12)進入/boot目錄,rm System.map

  (13)在/boot目錄中運行ln System.map-2.5.7 System.map 10-13兩個步驟每次重新編譯都要做。

  (14)我開始提醒過的,但愿你安裝了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

  黑體字部分是后加的和修改的。萬一你沒有安裝lilo,你只能修改/boot下面的連接指向你新的System.map和vmlinuz , 而不用修改lilo了。這樣也能啟動,但是一旦出現問題,你的機器就啟動不了了。

  (15)執行命令:lilo (用來更新lilo數據),注意輸出的結果:帶星號的是缺省的。

  (16)祈禱,然后reboot 系統重新啟動后,用uname –a 可看到新的內核起作用了。如果出現任何問題不能引導了,你需要在lilo的引導界面選擇原來的內核啟動,進入系統后重新改變內核參數,調整硬件或其他配置。然后重復前面所有過程。

四、主要的軟件安裝

  前面說過,我的習慣是,裝系統的時候就安裝一個內核和編譯系統,得到了一個干凈的系統后,再安裝其他的軟件就比較清晰。另一點,除非搞不到源代碼版本,一般情況下我都會下載官方版本的源代碼文件,來重新編譯之。同樣的,選擇軟件版本要根據該軟件的Release Note來決定,并非越新越好。這就是為什么很多軟件都是幾個版本齊頭并進的發展之原因。這些軟件不同版本之間的安裝方法會有少許不同,安裝前一定要仔細閱讀目錄中的README文件和INSTALL文件,否則這些少許不同會造成不少得麻煩。下面描述的安裝過程都核版本號緊密相關。另外,所有的軟件都把程序文件的包拷貝到/usr/local/src目錄中再解壓縮,這是習慣。因為在Linux中習慣于把后來的軟件裝在/usr/local中。

  (1)安裝DNS服務器

  1、從www.isc.org下載bind 域名服務器軟件。我們這里用的是bind8.3.0,bind8分支和bind9分支是并行發展的。根據自己的實際情況選擇合適的bind版本。

  2、mkdir /usr/src/bind83

  3、下載的文件叫bind-src.tar.gz,復制到/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內容如下,需要更改的部分用黑體標出:


  /*
   * 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中標記的文件:rd.xxx.com.db,內容如下,需要修改和調整相應部分:


  ;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中標記的文件:21.9.22.db,內容如下,你需要修改相應部分:


  ;
  ;
  $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中標記的文件:127.0.0.db,內容如下,你需要修改相應部分:


  ; 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中標記的文件:named.root,內容大致如下。該文件標記了14個域名服務器。可以從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文件以適應新的狀況。

  18、一切都結束后,用/usr/sbin/ndc start命令啟動bind,同樣的可用stop、restart、reload等命令參數操作。

  19、啟動后用nslookup命令(有的系統推薦使用dig命令)檢驗是否正確。如果出現錯誤,該命令將不能啟動。一般的錯誤都是數據庫文件或配置文件筆誤所至。比如少個“.”或者文件明不正確等等。

  (2) 安裝sendmail服務器

  1、從www.sendmail.org下載最新的版本(這個snedmail倒是有必要升級為最新的版本,因為它的升級主要是安全漏洞問題)。這里說明的是用的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內容如下,你可根據需要修改相應部分。


  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發送郵件
? ? 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主數據庫文件中增加MX紀錄:


  rd.xxx.com.? ?? ???IN? ?? ?MX? ?? ?0? ?? ? compaq

  注意修改相應部分。那個0是有幾個郵件集中器的時候用于標記先后順序的。當有好幾個MX的時候,建議順序寫為10、20、30…

  23、在/etc/mail目錄下創建access文件,內容類似如下:


? ? ? ? 127.0.0.1 RELAY
? ? ? ? 21.9.22 RELAY
? ? ? ? 211.99.221.238 RELAY

  然后:makemap hash access.db < access

  24、創建文件/etc/mail/local-host-names,其內容為本機的擁有的域名信息。


  rd.xxx.com
  compaq.rd.xxx.com

  25、創建文件/etc/mail/aliases,內容類似:


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

  運行newaliases創建數據庫。

  創建別名文件的意義之一在于當郵件發往域中其他郵件服務器的用戶而不是mail HUB用戶的時候用。

  比如增加一條:


  atan: atan@fbsd

  則導致郵件發往mail HUB的時候自動轉發到atan@fbsd.rd.xxx.com

  26、啟動sendmail: /usr/sbin/sendmail -bd -q30m

  排錯:如果有問題導致啟動不了,大部分問題和DNS配置有關,可以使用nslookup檢查DNS是否正常。挨個檢查/etc/mail中的文件內容也是排錯的好辦法。另外,修改配置,不建議直接編輯sendmail.cf文件,建議使用m4宏編譯工具,因為有些帶有安全漏洞或過時的宏在編譯的時候會有提示,這樣以免造成相關安全問題。

(3)安裝DHCP服務器

  1、源程序下載地址是:ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.tar.gz ,我們的版本是:dhcpd-3.0

  2、復制到:/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、編輯這個文件,看起來類似下面這樣:(要更改的地方用粗體標出)


  # 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;
  #??}

  上面這個文件中后面都是注釋,是原來系統給你的配置做的例子,可以不要。當然除非你用到它們,并且清楚它們的含義。

  9、建立空文件:touch /var/state/dhcp/dhcpd.leases空文件

  10、檢查內核編譯選項:Networking options-----Packet socket: mmapped IO和Socket Filtering選項是否被選中(不知道怎么看?看看前面的文章,用make menuconfig呀),如果沒有就需要重新編譯內核了。

  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系統

  15、用dhcpd命令啟動DHCP,用其他的機器試試看能不能自動配置網絡了。

(4) 安裝apache+mysql+php+gd+png+zlib+jpeg+freetype+sslmod

  這么一大堆東西為什么要一塊說呢?因為他們中間是有緊密聯系的,尤其是那個PHP,用到其他所有的模塊。要想PHP功能全,只能一步步來了。

  1、首先安裝MYSQL:從http://www.mysql.com/downloads/index.html下載自己覺得合適的版本。這里用3.23.42版本。

  2、進入目錄/usr/local/src(這個以后就不用說了吧?)解壓縮: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 (建立數據庫結構)

  9、cd /usr/local/mysql/bin

  10、./safe_mysqld & (啟動了)

  11、./mysqladmin -u root password "new-password"(你的新密碼,記住MYSQL的密碼核系統密碼是獨立的,缺省是沒有密碼)

  12、用mysql程序試試看。

  下面的步驟都很程式化,我盡量簡潔地寫出。

  13、下載相關的軟件包:地址表格如下


  軟件    ? ? ? ?? ? 版本    ? ? ? ? 地址
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解壓縮。(過癮吧?)

  特殊的,rsaref20.tar.Z 需要先建立一個rsaref-2.0目錄,然后把rsaref20.tar.Z復制到改目錄下用tar zxvf rsaref30.tar.Z釋放壓縮。Number4.tar.gz需要復制到php-4.1.1目錄內,然后用tar zxvf number4.tar.gz解壓縮。

  下面的描述我想簡單一點,只寫出進入目錄后執行的命令。那些目錄都是釋放的時候自己建立的,如果你這些操作都在/usr/local/src下面執行,所有的目錄就都在這里面。最好按照順序執行。再羅嗦一句:如果不是第一次編譯,一般情況請執行一次make clean后再編譯。

  14、[jpeg-6b]:生成JPEG圖像的函數庫。


  ./configure
  make
  make test
  make install

  15、[zlib-1.1.3]:壓縮算法庫,是PNG和JPEG需要的


  make test
  make install

  16、[freetype-2.0.8]:字體庫,在圖像上使用字體的時候需要用到,


  ./configure --prefix=/usr/local
  make
  make install

  17、[libpng-1.0.10]:生成PNG圖像的函數庫


  cp scripts/makefile.linux makefile
  make test
  pngtest pngnow.png
  (如果都通過測試了,請繼續。否則,看看錯誤提示,改正錯誤)
  make install

  18、[gd-1.8.4]:GD庫,用來動態生成圖像用,這里主要是配合PHP生成圖像。

  編輯Makefile 文件:

  把下列行取消注釋符號(#):


  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

  保存后執行:


  make
  make install

  19、[apache_1.3.23]:步驟一 ./configure --prefix=/usr/local/apache

  20、[php-4.1.1]:

  如果不是第一次安裝,請刪除:config.cache文件,然后執行先執行make clean

  接下來配置環境,輸入一個比較長的命令:


  ./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

  當然你也可以實現準備一個含有上述命令的sh文件,這樣改起來方便些。我就是這樣做的。


  make
  make install

  21、[rsaref-2.0]:RSA加密模塊

  前面說過,這個目錄的釋放是特殊的,先見目錄后釋放,希望你是這樣做的。


  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(回答一些問題)
  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啟動apache服務器

  28、在/usr/local/apache/htdocs建立一個test.php文件包含下列內容:


  
    phpinfo();
  ?>

  29、在別的機器上用瀏覽器看一下這個機器:http://xxx.xxx.xxx.xxx/test.php會出現php的配置總匯,看看前面編譯的模塊都在不在。

  30、檢驗ssl很麻煩,需要用apachectl startssl啟動apache然后還要生成一大堆證書。這里就不討論了。

  31、把/usr/local/apache/bin/apachectl文件復制到/etc/rc.d/init.d中,然后在/etc/rc.d/rd3.d中建立個符號連接指向/etc/rc.d/init.d中的上述文件:


  ln -s ../init.d/apachectl S70apachectl

  這樣系統啟動的時候就可以自動啟動apache和她的哪一大堆模塊了。

  呼~~~~(喘口氣)到這里,就基本上完成了一個功能很全的WEB服務器系統了。

  (5)安裝 ftp 服務器

  (6)安裝 pop3服務器

  有的郵件服務器自己帶pop3功能(比如Qmail、Xmail),如果你用這幾種郵件服務器軟件,當然就不用安裝pop3了。目前,常用的郵件服務器里面不帶pop3的好象只有sendmail和postfix等少數幾種。這幾種郵件服務器軟件使用的都是系統用戶,而我們安裝的pop3也只是對系統用戶的郵件進行彈出操作的。這里我們使用的版本和下載地址是:


  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是作為一個inetd(超級網絡服務進程)的子進程加載的。這樣需要編輯文件/etc/inetd.conf并做下面改動: ...


  # 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
  ...

  增加黑體的這一行,注釋掉原來的(上面這一行),注意,如果你的安裝路經不同,記著改過來呀。然后,用下面的命令得到inetd的進程號:


  ps –ax | grep inetd

  得到結果類似:


  248 ?? ?? ???S? ?? ?0:00 inetd

  什么?哪個是進程號?就是最前面那個數字。然后用下面的命令重新啟動inetd:


  kill –HUP 248

  用下面的命令看看pop3是不是啟動了。


  netstat -ln|grep 110

  如果結果是這樣,就恭喜了。


  tcp? ?? ?0? ?? ?0 0.0.0.0:110? ?? ? 0.0.0.0:*? ?? ?? ?? ?? ?LISTEN

  這里還要補充一點,少數情況下,pop3進程需要獨立的監聽端口,也就是不作為inetd的子進程裝載,上面過程需要做如下改動:

  ./configure的時候加上--enable-standalone參數。

  編輯/etc/inetd.conf不增加黑體一行,但需要注釋掉原來的pop-3一行(如果有的話)。

  啟動的時候,直接運行/usr/local/sbin/popper xxx.xxx.xxx.xxx:110即可。后面的參數是本地需要幾監聽的IP地址和端口。注意,沒有特殊需要,端口必須是110。最后要說的是:其實最簡單的辦法就是用你使用的Linux發行包帶的pop3軟件,安裝的時候直接選上即可。

(7)安裝imap服務器

  幾乎所有的發行包都帶有imap服務器軟件(一般是華盛頓大學版本),最好的辦法是用你的發行包安裝IMAP服務器。事實上,我個人覺得 IMAP服務器很少被使用。下載最常規的IMAP服務器源碼地址是:ftp: //ftp.cac.washington.edu/imap/imap.tar.Z


  tar zxvf imap.tar.Z
  cd imap-2001a
  make slx

  (如果不行依次試驗一下其他你覺得可能的系統類型,用vi看一下Makefile中列的名稱)

  然后配置/etc/inetd.conf,讓inetd允許imap服務。[本節內容沒有試驗成功,編譯總是過不去]

  (8)安裝squid服務器

  SQUID是一個優秀的代理服務器軟件,它可以很靈活的被配置為各種應用形式,其中包括正向代理,反向加速模式和透明代理等。但是SQUID目前只能代理HTTP協議,代理FTP協議需要配置瀏覽器仿真主動FTP協議。下面的步驟是安裝SQUID的過程。

  1、下載反向代理服務器軟件采用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 進入目錄

  4、./configure --prefix=/usr/local/squid --enable-heap-replacement --disable-internal-dns建立環境,把squid安裝/usr/local/squid中。第二個參數是指定使用更先進的緩沖算法。第三個參數是取消內部DNS解析(如果使用在遠程高速緩存模式,比如GSLB,需要增加選項:--disable-internal-dns,目的是關閉內部DNS.否則內部DNS不理睬你在etc/hosts中的設定,直接尋找域名服務器,這樣就會造成轉發循環。就是cache發送給物理服務器的更新請求(因為用域名)也會被用戶的GSLN設備解析回來而形成循環。)

  5、make 開始編譯

  6、make install 安裝到剛才--prefix=指定的路徑當中

  7、安裝完成后,會在您指定的安裝路徑里產生一個squid目錄,squid目錄下有四個目錄:bin/ etc/ libexec/ logs/。其中etc里面是配置文件,bin里面是執行文件,logs里面是日志文件。

  8、安裝結束后就是調試服務器,使其按照您的要求工作。Squid的配置文件只有一個,在etc目錄里,名字是squid.conf,所有的配置選項都在這個文件里面。而且每個配置項目都有注釋說明。首先,在squid文件里面找到下列配置項:

  cache_mem ---這里可以添上您準備給squid作為高速緩存使用的內存大小。注意,如果您的機器有N兆內存,那么,推薦您在這里添的數字是N/3。

  cache_dir /usr/local/squid/cache 100 16 256 這里的第一個數字100是您準備給squid作為cache使用的硬盤空間大小,單位是兆。如果您想劃100M空間當作cache,那么這里就寫100。

  cache_mgr webmaster@test.com.cn這里填寫cache管理員的Email地址,系統出錯會自動提醒cache管理員。

  cache_replacement_policy和memory_replacement_policy的參數由于使用了--enable-heap-replacement編譯參數,就不能使用缺省的lru算法了,你可以在下列三種里面選一個:

  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

  下面設定ACL訪問控制列表:為了簡單起見,我們在這里開放所有的權限。ACL分為兩個部分:ACL定義部分,和http_access部分。在access_http部分用到前面的定義。前面定義了:


  acl all src 0.0.0.0/0.0.0.0

  我們注釋掉所有的http_access行加一句:

  http_access allow all ---注意:all是前面acl定義的。

  這樣就開放了所有的權限。以后有需要的,再繼續往上加各種限制即可。

  9、以root身份創建組nogroup :


  %su root (如果當前不是root)
  #groupadd nogroup
  #useradd nobody (如果沒有這個用戶)

  10、進行目錄/usr/local ,以root身份執行下面的命令,改變整個Squid目錄的所有者為nobody.nogroup


  #cd /usr/local
  #chown nobody.nogroup -R squid

  11、su 作為nobody,進行/usr/local/squid/bin目錄,執行#squid -z 創建cache交換目錄


  #su nobody
  $ cd /usr/local/squid/bin
  $./squid -z

  12、成功后,測試一下:/usr/local/squid/bin/squid -NCd1 該命令正式啟動Squid。如果一切正常,你會看到一行輸出 :Ready to serve requests.

  13、用ctrl-c退出前臺測試。

  14、把squid作為守護進程啟動就直接運行:/usr/local/squid/bin/squid

  15、檢查狀態用squid –k check

  16、停止squid用squid -k shutdown

  如果是配置基本的正向代理,上面的已經可以使用了。下面的步驟用于配置支持多域名的反向代理服務器。還好,SQUID的所有配置都在/usr/local/squid/etc下面,和反向代理有關的幾項介紹如下:

  17、http_port 80 “http_port”參數指定Squid監聽瀏覽器客戶請求的端口號。

  18、icp_port 0 “icp_port”參數指定Squid從鄰居(neighbour)服務器緩沖內發送和接收ICP請求的端口號。這里設置為0是因為這里配置Squid為內部Web服務器的加速器,所以不需要使用鄰居服務器的緩沖。

  19、emulate_httpd_log on 打開“emulate_httpd_log”選項,將使Squid仿照Web服務器的格式創建訪問記錄。如果希望使用Web訪問記錄分析程序,就需要設置這個參數。

  20、redirect_rewrites_host_header off 缺省地,Squid將改寫任何重定向請求的主機頭部。若系統運行Squid為加速器模式,則這時不需要重定向特性。該參數在負載過重的情況下要旁路重定向器時才打開

  21、httpd_accel_host vartual 此處設置反向代理的主機名,如果對后面多個域名進行緩沖,請使用虛擬主機模式(如此)。

  22、httpd_accel_port 80 此處設置反向代理的WEB服務端口號。

  23、#httpd_accel_with_proxy off 把這行注釋掉,此處設置開反向代理的同時,是否開普通代理緩存服務。如果這行不注釋掉,就沒有高速緩存功能。

  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網關和安裝ipchains/iptables防火墻

  在Linux上面的防火墻,最最常用的是ipchains,而且通常情況下是作為網關的附加部分安裝的。Ipchains的規則是很復雜的,靈活性也很強,可以配制成各種五花八門的樣子。這些都需要和你自己的實際情況相結合。這里,我們只介紹一種基于網關的簡單配置。

  安裝IPCHAINS一般都不用你操心,因為幾乎所有的Linux發行包都把該軟件作為必須安裝的卻省配置。另一個原因是ipchains是跟內核(kernel)有很大的關系,因此最好在安裝系統的時候選上相關選項(如果有)。在標題里面我們還提到了iptables,這個工具在表面上等同于 ipchains,只不過是用于2.4內核的(2.4內核在這方面的代碼幾乎是重新寫過的,功能有了長足的提高)。關于iptables工具的配置我們在后面介紹。你只需要記住2.2核心下使用ipchains,2.4核心下使用iptables即可。

  首先,你的服務器需要兩塊網卡(或更多),這種機器叫做“多宿主主機”,是專門的用于做網關或路由器的。這里插一句:一般情況下,作為普通服務器的主機即使負載再重就需要一塊網卡就夠了,只有做網關或路由器的時候才需要多宿主主機。這并不象一般人認為得那樣增加一塊網卡可以增加一份帶寬,事實上,一塊網卡就可以提供足夠的帶寬。并且,還有人錯誤的把兩塊網卡接在同一個交換機上分配兩個地址,這更是錯誤的,因為這樣產生了額外的循環路由,會產生大量的內部警告錯誤,某些系統就會報警。

  1、制作一個雙界面(雙宿主)的主機。

  通常,現在的發行包的安裝程序都可以識別兩塊網卡,這樣就省事了。但是也有不少發行包只識別第一塊網卡(也許是出于前面說的原因),或者你要在一臺在用的機器上加一塊網卡(因為你不愿意重裝系統),那么就按照下面的辦法處理。

  1.1、我們就說PCI網卡。安裝前首先看看網卡芯片,記住芯片的型號(希望你自己攢過機器)。

  1.2、安裝MAN手冊(用發行包)

  1.3、在/usr/doc/HOWTO/english/txt/Ethernet-HOWTO文件(如果是壓縮的就釋放)中搜索你的網卡型號,找到對應的驅動模塊名稱。

  1.4、如果模塊沒有,還需要重新編譯核心。在menuconfig網絡設備一欄選中你的型號然后標記為*或M,編譯完核心后別忘了編譯模塊:make modules;make modules_install。(不會的話再仔細溫習一下前面編譯內核的部分)

  1.5、用depmod –a命令建立/etc/modules.conf(如果已經有就不用了),也有的發行包叫做conf.modules

  1.6、編輯該文件加上一行:alias eth1 XXXX,其中XXXX是你剛才查到的模塊名稱。一般該模塊文件位于:/lib/modules/內核版本號/net…中的XXXX.o文件。這個文件是你編譯內核模塊的時候產生的,你在內核配置的時候,凡是標記為M的都會被編譯成.o文件放在這里。同樣的,你選擇的網卡驅動也是會編譯成模塊在這里的。

  1.7、運行modprobe eth1使模塊有效。

  1.8、修改/etc/sysconfig/network文件中需要修改的部分。

  1.9、建立或修改/etc/sysconfig/network-script/ifcfg-eth1文件(照抄那個eth0的即可),設定地址是你的真實情況,比如設為eth1要接的網段。這兩個文件(eth0/eth1是啟動的時候的腳本參數文件)

  1.10、重新啟動一下網絡:/etc/rc.d/init.d/network restart

  1.11、用ifconfig看看是否eth0/eth1都啟動了。

  1.12、大功告成

  2、調整和編譯核心:如果作為網關,有些核心選項需要配置。注意:這里的內核編譯選項僅僅適合于2.2.X版本,2.4版本完全不同。

  2.1、在/usr/src/linux中運行make menuconfig配置核心下列選項:


  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)? ?

      具體選項不同版本的內核不盡相同,你看著差不多就可以了。編譯成模塊或編進核心
  • 可以自由選擇。

      2.2、按照前面說的編譯內核,重新啟動后就具有網關功能了。啟動后驗證一下文件:/proc/sys/net/ipv4/ip_forward內容是否為1。(別告訴我不知道怎么看8-))

      3、設置ipchains

      本來這項工作是非常復雜的,但是我們這里講的簡單,讓網關通了就行。

      3.1、先看一下目前我們目前的假想環境:你的機器有兩塊網卡,一塊連接在內網交換機配內部網絡地址,另一塊在外網交換機配公網地址。在這個機器ping 內網和外網的機器應該都能通。并且在內網的機器ping 該機器的外網地址也通,在外網的機器ping該機器內網的地址也同樣通。這說明轉發功能是有效的。

      3.2、再試驗一下:在內部網絡把網關設為你的機器的內網地址,然后ping 外網的任一臺機器(不是這臺機器的外網地址),結果是不通。原因是ICMP包發出去后外網的機器不知道怎么回答,那里沒有合適的路由,因為這個包的回應地址是內網。

      3.3、現在設置ipchains:(ipchains軟件適用2.2.X的內核,在2.4.X的內核中不適用。2.4.X的內核推薦使用iptables,關于該軟件的用法在下面介紹)


      ipchains –A forward –s 192.168.1.0/24 –j MASQ

      黑體部分是內網地址。這句話的意思是,把所有內網發送的包都偽裝成外部網的地址(那個機器的外網地址),這樣,外部其他機器回應的時候就會發送到這臺機器,經過轉發就回來內網了。好了,一個簡單的網關做好了。如果你需要實現防火墻(包過濾功能),則需要配置更加復雜的過濾規則,這些規則應該同時作用于input/output/forward鏈。

      3.4、自動啟動:設定了復雜的鏈,需要保存。在/etc/rc.d中建立一個文件:rc.ipfwadm把你的鏈腳本加進去就可以了。最后給這個文件+x屬性(chmod +x rc.ipfwadm)。

      4.在2.4.X內核中使用iptables建立Linux防火墻(網關)。

      4.1 說明和下載

      前面已經提到過2.4 內核中要使用iptables來做類似于ipchains在2.2內核中實現的事情。事實上,在2.4內核中的iptables包含了兩個完全不同的部分:包過濾和地址轉換。這兩個功能在邏輯上是分開的,考慮到操作習慣上的問題才集成在一個配置程序(iptables)上。如果你安裝了帶有2.4內核的發行包,那么一般都帶有iptables,并且在內核配置上也配置好了。如果要編譯新的內核或者原來的內核沒有支持iptables,需要選上相關的選項。使用make menuconfig 配置內核的時候操作:進入: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)? ???
      等等……
      把下面的選項全部標記<*>

      逐級返回上面菜單后保存配置,然后按照編譯內核的那一套程序進行即可(參見前面的內容)。這里需要說明的是,內核支持了iptables功能,還需要有外部程序才行。如果你是直接安裝的帶有2.4內核的發行包,應該已經帶有iptables實用程序了。但是如果你是從2.2核心的發行包直接升級到2.4內核,盡管按照上面的做法配置的核心,但是還不能使用iptables。還必須下載和編譯iptables外部程序才能使用iptables功能。下載的地址是:http://www.netfilter.org ,下載的文件是iptables-1.2.6a.tar.bz2或更新的版本。

      4.2 安裝:

      這個.bz2文件比較奇怪吧?把文件復制到/usr/local/src中,然后用下列命令釋放編譯和安裝: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那個‘- ’別忘了)

      你的系統可能沒有bzip2工具,如果沒有,你就去下一個:

      進入新生成的目錄 :cd iptables-1.2.6a 編譯和安裝:make ; make install

      4.3 配置

      如果你需要配置一個簡單的網關,你僅僅需要配置一個轉發加地址轉換功能即可,我提供的參考腳本如下:


      #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是當你在內核中把iptables相關功能編譯成模塊(選成)的時候才用到的(也可能不止3行)。其中插入模塊(modprobe)的幾行比較重要,有時候當你作完NAT后,發現FTP不好用了,就要手工插入ip_nat_ftp模塊(語法是:modprobe ip_nat_ftp)。黑體的地址部分可能是需要根據你網絡的實際情況來決定的。最后一句話的意思是把凡是源地址是192.168.1.x的包做地址轉換,轉換為網關外側地址21.9.22.2。好了,你已經建立起一個基本的網關了。其實iptables的功能及其強大,配置也非常靈活。其中的防火墻功能通過-t filter參數實現,地址轉換功能通過-t nat實現(就像上面一樣)。防火墻功能(packet filter)主要是3個鏈:INPUT,FORWARD,OUTPUT,地址轉換功(nat)主要是3個鏈:PREROUTING, POSTROUTING,OUTPUT。觀察當前的狀態可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat。

      好了,要配置出更靈活的、更強大的防火墻功能,全靠你自己了。我推薦你兩個手冊:《Linux 2.4 Packet Filter HOWTO》和《Linux 2.4 NAT HOWTO》。這兩個文檔是iptables的原作者寫的,相當經典。英文不好?沒關系,這兩個文檔都有中文版本。推薦你到:永遠的UNIX(http: //www.fanqiang.com)下載。

      (12)配置samba服務器
  • (13)構建基于Linux的VPN網絡

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

      1、準備工作和安裝

      1.1 從http://www.kernel.org下載2.4.X的內核,除了2.4.15版本(該版本有一個致命錯誤)。然后把該內核放置到: /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 檢查當前的網卡和SCSI的型號(參見內核升級一章)

      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補丁目錄,復制freeswan.diff到外面的freeswan源目錄,然后回到freeswan源目錄中運行:patch –p1 < freswan.diff

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

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

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

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

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

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

      進入: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相關的選項全部選為<*>。另外的,如果你打算使用撥號連接請在網絡設備支持菜單選擇ppp支持(注意,你用的ppp程序一定要2.4版本以上的)

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

      1.26 退出后將自動編譯內核,等待……

      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 運行lilo更新數據

      1.36 reboot

      1.37 啟動后,運行:ipsec setup restart 應該不報任何錯誤而正常出現freeswan的版本。

      注意:還有一些必要的內核參數配置,這些配置可以在rc.local中實現。他們是:


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

      但愿你已經按照前面的步驟順利的安裝好了兩臺機器,下面我告訴你怎樣配置成網對網的環境。

      2.1 我們先配置甲網的ipsec網關(該網關有兩個網卡,我們配置他們的地址分別為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,改變該目錄的權限為700(chmod 700 /var/sslca)

      2.4 在你安裝的openssl目錄中找到CA.sh腳本。注意,應該是你當前運行的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 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 下一步是給網關生成證書:

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


      ~/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

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

      2.10 如果正常的安裝了x.509補丁,你應該可以看到/etc/ipsec.d及其下面的目錄。如果沒有,你就自己建立。然后按照下面的位置復制合適的文件:(此時你仍然在/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

      黑體字的部分是你需要根據你實際的環境更改的。我們用的兩端的子網是192.168.1.0/24和192.168.10.0/24。文件中 vpnserver.rd.xxx.com.pem是CA證書。這個配置是通用的,也就是說可以適用LAN-LAN方式的倆接和遠端客戶端兩種方式。

      2.13 下面配置分支機構的網關。這個機器也要事先安裝完全freeswan等軟件。

      重新執行上面的2.7-2.9步驟生成分支機構的證書,注意:在回答問題的過程中,關于主機名稱的部分的輸入改變為你分支機構的網關機器名稱,比如:vpncliet.rd.xxx.com。

      2.14 復制下列生成的文件到分支機構網關上的相應位置(比如通過軟盤復制):


      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
      執行命令: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 配置分支機構的/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

      其中黑體的部分是你可以根據實際情況修改的。

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

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

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

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

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

      3.2 在服務器端生成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 用命令察看環境:最好把結果輸出到文件記住,以后用得到。


      openssl x509 -in demoCA/cacert.pem -noout -subject

      3.4 把上面生成的p12文件傳送到總經理的機器上,放在一個正規的地方(這個文件很重要)。

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

      3.6 在總經理的機器上從: http://agent.microsoft.com/windo ... sting/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 增加一個證書

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

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

      點 Next

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

      3.10設置ipsec工具:

      編輯總經理機器上的ipsec.conf文件,把rightca的=后面寫成剛才openssl x509 -in demoCA/cacert.pem -noout –subject命令生成的結果。類似下面這樣:


      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服務器后面的內網得到幾個'Negotiating IP Security'之后就可以ping通了。這樣總經理帶著這臺筆記本到有互聯網絡的地方就可以象在辦公室一樣連接到公司里了。

      值的注意的是,出于安全性的問題,我們建議你關閉VPN網關上面的所有其他服務,并仔細配置防火墻。通常的,如果你希望把所有的流量都發送給主站網關,在從站就不需要增加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

      每行中前面的黑體是子網網段,后面的是本網關的內側出口。

      注:原版資料在http://vpn.ebootis.de/ 詳細資料在:http://www.natecarlson.com/inclu ... amp;page=ipsec-x509

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

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

      安裝和配置Postfix郵件系統的最基本步驟如下:

      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文件中的相關行類似于: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 (升級)

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

      17、啟動是postfix start

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

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

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


      127.0.0.1 RELAY
      21.9.22 RELAY
      211.151.194.14 RELAY

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

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

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


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

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

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


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

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


      5.1 mydomain

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


      mydomain = test.com
      5.2 myorigin

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


      myorigin = $mydomain
      5.3 mydestination

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


      mydestination = $mydomain
      5.4 mynetworks_style

      設置網絡類型,我們指定:


      mynetworks_style = subnet
      5.5mynetworks

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


      mynetworks = 192.168.1.0/24

      6、設定DNS服務器的MX記錄。例如,在域test.com中,安裝postfix的服務器名字叫mail.test.com,則在本域的DNS中設定MX記錄為mail.test.com

      7、更改設定后不必重新啟動postfix,只需要用postfix reload命令重新加載配置即可。

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

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

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


      virtual_maps = hash:/etc/postfix/virtual

      這里假定用戶tom、test、white需要使用這個虛擬域名,當然首先要在系統中添加這幾個用戶(用useradd或adduser填加系統用戶),然后建立/etc/postfix/virtual文件并添加以下內容:


      othername.com anything
      tom@othername.com tom
      test@othername.com test
      white@othername.com white

      之后,用postmap命令生成虛擬域數據庫:


      postmap /etc/postfix/virtual

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

    五、日常維護

總結

以上是生活随笔為你收集整理的Linux简明系统维护手册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。