天天看點

bind allow-recursion

最近幾天一直在bind9+mysql中盤旋,搞的頭暈腦漲的,該死的DNS同步~呵呵,隻能怪自己心急`總是搞一會兒就把bind停掉,今天起,就不停掉bind了,讓他自己去同步吧,好了不廢話了,我把安裝步驟發出來和大家共項,有興趣的照着做,高手給指點一二,謝謝,歡迎各種闆磚,臭雞蛋~

測試環境:ubuntu8.04

在萬網花10元申請的域名伺服器 ns1.edgora.cn 在這裡鄙視他一下。NND這也要錢。

要解析的域名 xueku.org.cn

伺服器IP位址 123.123.123.123

需要的軟體包:bind9.5.tar.gz apache2  php5 php-mysql  mysql-bind.tar.gz phpmyadmin.gz mysql-server libmysqlclient15-dev php5-cli

1。apache2 php5 mysql-server 我就apt-get install 安裝了,ubuntu打封包件還是很不錯的,當然高手可以安裝源代碼`修改源代碼安裝可以比對自己的機器才是穩定麼,呵呵我沒那麼高的技術,也懶的去修改源代碼!本人懶。

apt-get install apache2 php5 php5-cli php5-mysql mysql-server  libmysqlclient15-dev

大陸使用者推薦用C99的源,我是在美國伺服器上裝,速度驚人,呵呵不用修改源`

2。安裝 bind9.5+mysql-bind在這裡我穿插一下我的郁悶的問題,我在bind官方網站在windows XP 下載下傳的bind9 下載下傳下來傳到伺服器上的,tar 解壓的時候總是提示檔案不全,不論下載下傳多少次都是,所有bind9.5我是wget下載下傳的。不知道你們安裝的時候會怎麼樣。

  tar zxvf bind9.5

 tar zxvf mysql-bind

cp mysql-bind/mysqldb.c bind9.5/bin/named

cp mysql-bind/mysqldb.h bind9.5/bin/named/include/named

cd bind9.5

vim bin/named/Makefile.in 将

DBDRIVER_OBJS =

DBDRIVER_SRCS =

DBDRIVER_INCLUDES =

DBDRIVER_LIBS =

改成

DBDRIVER_SRCS = mysqldb.c

DBDRIVER_INCLUDES = -I'/usr/include/mysql'

DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv

我的是 ubuntu系統 mysql 開發包路徑可能不一樣~大家指定自己的路徑就可以了不然會報錯改完後wq儲存退出。

然後修改 bin/named/main.c

查找 xxdb_init();

在 注釋檔案 xxdb_init();

下添加 mysqldb_init();

然後查找查找 xxdb_clear();

再下面添加mysqldb_clear();

修改完後wq 儲存退出,然後開始編譯安裝

./configure --prefix=/usr/local/named --enable-threads #--enable-threads 開啟多線程處理能力

make

make install

安裝完後,需要手工建立配置檔案的。不像 rpm 和deb包一樣會有預設檔案的。

cd /usr/local/named/etc

生成 rndc 控制指令的key檔案

../sbin/rndc-confgen > etc/rndc.conf

#### 從 rndc.conf 檔案中提取 named.conf 用的 key 生成 named.conf 檔案

tail -10 rndc.conf | head -9 | sed 's/# //g' > named.conf

#### 此時,named.conf 内容為:

key "rndc-key" {

algorithm hmac-md5;

secret "O0SuB34RK+E3r+m5Fbh2eA==";

};

controls {

inet 127.0.0.1 port 953

  allow { 127.0.0.1; } keys { "rndc-key"; };

#### dig 指令直接生成 named.root 檔案,這個檔案是很标準的東東,

#### 有了它,本地 dns 不能解的就上總部去問

dig > named.root

配置named.conf

        algorithm hmac-md5;

        secret "SNMYFWAAVeCB/udiejFdGw==";

        inet 127.0.0.1 port 953

                allow { 127.0.0.1; } keys { "rndc-key"; };

include "named.conf.options";

zone "." {

type hint;

file "/usr/local/named/etc/named.root";

zone "localhost" {

        type master;

        file "/usr/local/named/etc/db.local";

zone "127.in-addr.arpa" {

        file "/usr/local/named/etc/db.127";

zone "0.in-addr.arpa" {

        file "/usr/local/named/etc/db.0";

zone "255.in-addr.arpa" {

        file "/usr/local/named/etc/db.255";

zone "xueku.org.cn" IN {

  type master;

  database "mysqldb edgora ludy localhost root 123";

這些 db.local db.127 db.0 db.255 網上很多配置,其實也沒什麼用。

#### 上述内容中配置自己的

#### 資料庫名(edgora),表名(ludy),MYSQL主機(localhost),

#### MYSQL使用者(root),MYSQL密碼(123)

#### 當然,前提條件是在 mysql 建庫。

這裡我介紹一下,bind9.4以後新加的功能allow-query-cache。

感覺上allow-query-cache在未設定allow-recursion的情況下可以取代allow-recursion的功能,有繼承關系。如果想禁止使用者的遞歸查詢請求,還需要将 allow-query-cache 選項關閉,否則使用者仍然可能在 cache 中查到資料

我在這裡 配置的 named.conf.options 内容如下

options {

        directory "/usr/local/named/etc";

        allow-query { any; };

        allow-recursion { any; };

        allow-query-cache {any;};

        datasize 2098;

我這樣設定是非常不安全的,因為任何人都可以利用你的伺服器來做DNS這樣知道的多了,會造成嚴重的負載。是以大家可以建立acl規則來指定使用者來使用你的DNS伺服器。因為我測試就不這麼做了,給大家一個例子。

例子:

acl "trusted"{

192.168.6.0/24;

        allow-recursion { trusted; };

        allow-query-cache {trusted;};

4.安裝phpmyadmin

tar zxvf phpmyadmin.gz

mv phpmyadmin /var/www

我mysql有點不信任自己記得代碼,所有用phpmyadmin比較安全,也簡單。

查找 $cfg['PmaAbsoluteUri'] 修改為你将上傳到空間的phpMyAdmin的網址

如:$cfg['PmaAbsoluteUri'] = 'http://123.123.123.123/phpmyadmin

查找 $cfg['Servers'][$i]['host'] = 'localhost';(通常用預設,也有例外,可以不用修改)

查找 $cfg['Servers'][$i]['auth_type'] = 'config';

在自己的機子裡調試用config;如果在網絡上的空間用cookie,這裡我們既然在前面已經添加了網址,就修改成cookie ,這裡建議使用cookie.

查找 $cfg['Servers'][$i]['user'] = 'root'; // MySQL user(mysql使用者名,自己機裡用root;)

查找 $cfg['Servers'][$i]['only_db'] = ''; // If set to a db-name, only(你隻有一個資料就設定一下;如果你在本機或想架設伺服器,那麼建議留白) .查找 $cfg['DefaultLang'] = 'zh'; (這裡是選擇語言,zh代表簡體中文的意思,這裡不知道填gbk對否)

設定完畢後儲存

如果出現“配置檔案現在需要絕密的短語密碼(blowfish_secret)”那麼請在$cfg['blowfish_secret'] = ' ';的等号裡面設定你網站的cookie,例如:$cfg['blowfish_secret'] = '任意字元';這是因為你的“$cfg['Servers'][$i]['auth_type'] = 'cookie'的原因。

哎我的phpmyadmin麻煩了點,高手見量`

相信大家如何建立資料庫就不用說了吧,輸入root 密碼 123

進去後設定一下mysql的安全吧。然後建立一個資料庫

好了`然後插入表了,因為時間問題我就不多說了。直接插代碼了,我的表名ludy

CREATE TABLE ludy (

        name varchar(255) default NULL,

        ttl int(11) default NULL,

        rdtype varchar(255) default NULL,

        rdata varchar(255) default NULL

        ) TYPE=MyISAM;

####以下是正向解析示範可以直接倒入

28800');

INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'NS', 'ns1.edgora.cn.');

INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'MX', '10 mail.xueku.org.cn.');

INSERT INTO ludy VALUES ('ns1.edgora.cn', 259200, 'A', '123.123.123.123');

INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'A', '123.123.123.123');

INSERT INTO ludy VALUES ('www.xueku.org.cn', 259200, 'A', '123.123.123.123');

5.啟動 bind測試它是否正常工作

04-Jul-2008 02:58:03.821 starting BIND 9.5.0 -g

04-Jul-2008 02:58:03.822 found 1 CPU, using 1 worker thread

04-Jul-2008 02:58:03.827 loading configuration from '/usr/local/named/etc/named.conf'

04-Jul-2008 02:58:03.828 listening on IPv6 interfaces, port 53

04-Jul-2008 02:58:03.831 binding TCP socket: address in use

04-Jul-2008 02:58:03.832 listening on IPv4 interface lo, 127.0.0.1#53

04-Jul-2008 02:58:03.856 binding TCP socket: address in use

04-Jul-2008 02:58:03.856 listening on IPv4 interface eth0, 75.125.197.202#53

04-Jul-2008 02:58:03.906 binding TCP socket: address in use

04-Jul-2008 02:58:03.963 default max-cache-size (33554432) applies

04-Jul-2008 02:58:03.990 automatic empty zone: 254.169.IN-ADDR.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 2.0.192.IN-ADDR.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: D.F.IP6.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 8.E.F.IP6.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: 9.E.F.IP6.ARPA

04-Jul-2008 02:58:03.991 automatic empty zone: A.E.F.IP6.ARPA

04-Jul-2008 02:58:03.992 automatic empty zone: B.E.F.IP6.ARPA

04-Jul-2008 02:58:04.005 default max-cache-size (33554432) applies: view _bind

04-Jul-2008 02:58:04.025 /usr/local/named/etc/named.conf:7: couldn't add command channel 127.0.0.1#953: address in use

04-Jul-2008 02:58:04.026 ignoring config file logging statement due to -g option

04-Jul-2008 02:58:04.046 zone 0.in-addr.arpa/IN: loaded serial 1

04-Jul-2008 02:58:04.047 zone 127.in-addr.arpa/IN: loaded serial 1

04-Jul-2008 02:58:04.048 zone 255.in-addr.arpa/IN: loaded serial 1

04-Jul-2008 02:58:04.057 zone localhost/IN: loaded serial 1

04-Jul-2008 02:58:04.059 running

能打開OK。 host -t ns xueku.org.cn 得到 ns1.edgora.cn好一切正常,現在就等你的bind9與世界各地的DNS同步了,預設的DNS就可以解析你的域名啦。寫的有點倉促,呵呵如果有錯誤謝謝指點。nslookup xueku.org.cn也可以測試的。。

在這裡 要謝謝``幫助我的人` 呵呵``讓我學到了不少東西。當然要想同步的快點把TTL修改低一點 修改 3600吧呵呵``一小時同步一次。再告訴大家一個好用的測試指令

也是向别人學習的呵呵。dig @203.119.27.1 xueku.org.cn

; <<>> DiG 9.3.5rc2 <<>> @203.119.27.1 xueku.org.cn

; (1 server found)

;; global options:  printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1310

;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:

;xueku.org.cn.                  IN      A

;; AUTHORITY SECTION:

xueku.org.cn.           21600   IN      NS      ns.edgora.cn.

xueku.org.cn.           21600   IN      NS      ns1.edgora.cn.

;; Query time: 93 msec

;; SERVER: 203.119.27.1#53(203.119.27.1)

;; WHEN: Tue Jul 01 19:41:27 2008

;; MSG SIZE  rcvd: 72

;; connection timed out; no servers could be reached

因為我的還沒有同步是以報錯了。

好了就寫這麼多,歡迎石頭闆磚,雞蛋~~