四、主要的軟件安裝
前面說過,我的習慣是,裝系統的時候就安裝一個內核和編譯系統,得到了一個干淨的系統後,再安裝其他的軟件就比較清晰。另一點,除非搞不到源代碼版本,一般情況下我都會下載官方版本的源代碼文件,來重新編譯之。同樣的,選擇軟件版本要根據該軟件的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 nam