CentOS 6サービス管理のDNS-ソースインストールBind-9.10
14907 ワード
ソースインストールbind
1.ソースパッケージの準備:
bind公式サイト:http://www.isc.org/downloads/bind/
2.コンパイル環境が正常で、rpmのbindパッケージがインストールされていない
3.インストールソースパッケージのコンパイル:
ソースの解凍:
ヘルプは次のとおりです.
[[email protected]]#./configure --help |less
コンパイル:インストールパスの設定、プログラムプロファイルパスの設定、Ipv 6の無効化、chrootの無効化、マルチスレッドの許可
ここでコンパイルにエラーが発生しました.openssl-develに依存するパッケージ:
再コンパイル:
インストーラ:
4.できるだけシステムユーザーnamedに加入してbindを管理する
5.次の手順に従います.
プログラムパスをPATHにエクスポート
ヘルプファイルのエクスポート
ライブラリファイルとヘッダファイルをエクスポートするには、次の手順に従います.
ライブラリを開発して使用しない場合はエクスポートしません
6.ソースコードのインストールには、プロファイルやサービススクリプトはありませんよ.
プロファイルとサービススクリプトを自分で作成しますよ!
アクセス可能なDNSにアクセスしてルート領域ファイルを取得するには、次の手順に従います.
ローカル解析ライブラリファイルを編集するには、次の手順に従います.
アクセス権の設定とグループ名の設定:
プライマリプロファイルの提供:named.conf
まずrndcキープロファイルを設定します.
rndcキーファイルをnamedに構成する必要がある.confファイル:
ファイルの権限とグループを設定します.
7.ここで私たちは実はnamedサービスを起動することができます!
しかし、複雑で、命令だけを言っていますよ.
ヘルプファイルの表示
フロントが起動し、ログもフロントで記録
[root@dns1 named]# named -u named �Cg
バックグラウンドで実行するには、次の手順に従います.
起動ステータスの表示:
namedサービスを閉じるには、次の手順に従います.
8.私たちは今、参加エリアを実現します.
ゾーンフォワードゾーン解析ライブラリファイルを設定するには、次の手順に従います.
権限とグループの設定:
namedサービスを開始するには、次の手順に従います.
ログの表示:
検索できます.
成功したよ!
9.次のようにサービス起動スクリプトを書くことができます.
まずbindのヘルプファイルを/etc/manに書きます.configを呼び出します.
便利namedサービス起動後pidファイルを生成する:
バグがあり、warning関数は前の出力を上書きします.
warning関数の問題だと疑っています!
ほっといてo(∩∩)oハハ
10.最後にDNSの次の圧力テストツールを紹介します:queryperf
実際のテストは帯域幅を考慮しますよ!
簡単なコンパイルインストール:
コマンドをbinにコピーします.
圧力テストを開始します.
ドメイン名の集合を解析するファイルを作成する必要があります.
例:
簡単にテストしてみましょう!
機械はあまりよくないので,処理が遅い.
ここまでソースコードにBindをインストールする紹介は終わりましたが、shellスクリプト構築サービスはまだ熟練していません!
1.ソースパッケージの準備:
bind公式サイト:http://www.isc.org/downloads/bind/
[root@dns1 ~]#ll
-rw-r--r-- 1 root root 8356463 Dec 11 11:16 bind-9.10.1-P1.tar.gz
2.コンパイル環境が正常で、rpmのbindパッケージがインストールされていない
[root@dns1 ~]#yumgroupinstall Development tools
[root@dns1 ~]#yumgroupinstall Server Platform Development
[root@dns1 ~]# rpm-qa bind
[root@dns1 ~]#
3.インストールソースパッケージのコンパイル:
ソースの解凍:
[root@dns1 ~]#tar jxf bind-9.10.1-P1.tar.gz
[root@dns1 ~]#cd bind-9.10.1-P1
[[email protected]]#
ヘルプは次のとおりです.
[[email protected]]#./configure --help |less
コンパイル:インストールパスの設定、プログラムプロファイルパスの設定、Ipv 6の無効化、chrootの無効化、マルチスレッドの許可
[[email protected]]#./configure --prefix=/usr/local/bind --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
ここでコンパイルにエラーが発生しました.openssl-develに依存するパッケージ:
[[email protected]]#yum install openssl-devel
再コンパイル:
[[email protected]]#./configure --prefix=/usr/local/bind --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
インストーラ:
[[email protected]]#make && make install
4.できるだけシステムユーザーnamedに加入してbindを管理する
[root@dns1 ~]#groupadd -r -g 53 named
[root@dns1 ~]# useradd-r -g named -u 53 named
5.次の手順に従います.
プログラムパスをPATHにエクスポート
ヘルプファイルのエクスポート
ライブラリファイルとヘッダファイルをエクスポートするには、次の手順に従います.
ライブラリを開発して使用しない場合はエクスポートしません
[root@dns1 ~]#ls /usr/local/bind/sbin/
arpaname dnssec-revoke lwresd named-rrchecker
ddns-confgen dnssec-settime named nsec3hash
dnssec-dsfromkey dnssec-signzone named-checkconf rndc
dnssec-importkey dnssec-verify named-checkzone rndc-confgen
dnssec-keyfromlabel genrandom named-compilezone tsig-keygen
dnssec-keygen isc-hmac-fixup named-journalprint
[root@dns1 ~]#ls /usr/local/bind/bin/
bind9-config delv dig host isc-config.sh nslookup nsupdate
[root@dns1 ~]#vim .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/bind/bin:/usr/local/bind/sbin
[root@dns1 ~]#source .bash_profile
6.ソースコードのインストールには、プロファイルやサービススクリプトはありませんよ.
#ls/etc/named/
#ls/var/named/
#ls/etc/rc.d/init.d
プロファイルとサービススクリプトを自分で作成しますよ!
[root@dns1 ~]#mkdir /var/named
[root@dns1 ~]#cd /var/named
アクセス可能なDNSにアクセスしてルート領域ファイルを取得するには、次の手順に従います.
[root@dns1named]# dig -t NS . @172.16.0.1 >/var/named/named.ca
[root@dns1named]# ls
named.ca
ローカル解析ライブラリファイルを編集するには、次の手順に従います.
[root@dns1 named]# vim named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS @
A 127.0.0.1
[root@dns1 named]#vi named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS @
A 127.0.0.1
PTR localhost.
アクセス権の設定とグループ名の設定:
[root@dns1 named]# chmod 640 *
[root@dns1 named]# chown :named *
[root@dns1 named]# ll
total 12
-rw-r----- 1 root named 2100 Dec 11 11:56named.ca
-rw-r----- 1 root named 374 Dec 11 11:57 named.localhost
-rw-r----- 1 root named 401 Dec 11 11:58 named.loopback
プライマリプロファイルの提供:named.conf
まずrndcキープロファイルを設定します.
[root@dns1 named]# rndc-confgen -r /dev/urandom> /etc/named/rndc.conf
rndcキーファイルをnamedに構成する必要がある.confファイル:
[root@dns1 named]# cat /etc/named/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
# Use with the following in named.conf,adjusting the allow list as needed:
key"rndc-key" {
algorithm hmac-md5;
secret "4a8/AsRRQ5OH5a0oRaBeAg==";
};
#
controls{
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#End of named.conf
ファイルの権限とグループを設定します.
[root@dns1 named]# chmod 640 /etc/named/*
[root@dns1 named]# chown :named /etc/named/*
[root@dns1 named]# ll /etc/named/
total 12
-rw-r----- 1 root named 2389 Dec 11 11:29bind.keys
-rw-r----- 1 root named 545 Dec 11 12:09 named.conf
-rw-r----- 1 root named 479 Dec 11 12:01 rndc.conf
7.ここで私たちは実はnamedサービスを起動することができます!
しかし、複雑で、命令だけを言っていますよ.
ヘルプファイルの表示
#ls /usr/local/bind9/share/man
#man -M /usr/local/bind9/share/man named
フロントが起動し、ログもフロントで記録
[root@dns1 named]# named -u named �Cg
バックグラウンドで実行するには、次の手順に従います.
[root@dns1 named]# named -u named
起動ステータスの表示:
[root@dns1 named]# ss -tunl |grep :53
udp UNCONN 0 0 172.16.31.100:53 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
tcp LISTEN 0 10 172.16.31.100:53 *:*
tcp LISTEN 0 10 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::53887 :::*
[root@dns1 named]# ps aux |grep named
named 18870 0.0 1.1 139992 11848 ? Ssl 12:23 0:00 named -u named
root 18883 0.0 0.0 103252 824 pts/1 S+ 12:24 0:00 grep named
namedサービスを閉じるには、次の手順に従います.
[root@dns1 named]# killall named
[root@dns1 named]# ps aux |grep named
root 18887 0.0 0.0 103252 824 pts/1 S+ 12:24 0:00 grep named
8.私たちは今、参加エリアを実現します.
[root@dns1 named]# vim /etc/named/named.conf
zone "oracle.com" IN {
type master;
file "oracle.com.zone";
};
ゾーンフォワードゾーン解析ライブラリファイルを設定するには、次の手順に従います.
[root@dns1 named]#vim /var/named/oracle.com.zone
$ORIGIN oracle.com.
@ IN SOA ns.oracle.com. root.oracle.com. (
2014121101 ;serial
1D ;refresh
5M ;retry
1W ;expiry
1H) ;minimum
@ IN NS ns.oracle.com.
IN MX 5 mail.oracle.com.
ns IN A 172.16.31.100
www IN A 172.16.31.100
www IN A 172.16.31.101
mail IN A 172.16.31.100
pop3 IN CNAME mail
iamp4 IN CNAME mail
権限とグループの設定:
[root@dns1 named]# chmod 640 oracle.com.zone
[root@dns1 named]# chown :named oracle.com.zone
namedサービスを開始するには、次の手順に従います.
[root@dns1 named]# named -u named
ログの表示:
[root@dns1 named]# tail /var/log/messages
Dec 11 12:33:41 dns1 named[18945]: automaticempty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Dec 11 12:33:41 dns1 named[18945]: commandchannel listening on 127.0.0.1#953
Dec 11 12:33:41 dns1 named[18945]: the workingdirectory is not writable
Dec 11 12:33:41 dns1 named[18945]:managed-keys-zone: loaded serial 0
Dec 11 12:33:41 dns1 named[18945]: zonelocalhost/IN: loaded serial 0
Dec 11 12:33:41 dns1 named[18945]:oracle.com.zone:2: no TTL specified; using SOA MINTTL instead
Dec 11 12:33:41 dns1 named[18945]: zoneoracle.com/IN: loaded serial 2014121101
Dec 11 12:33:41 dns1 named[18945]: zone0.0.127.in-addr.arpa/IN: loaded serial 0
Dec 11 12:33:41 dns1 named[18945]: all zonesloaded
Dec 11 12:33:41 dns1 named[18945]: running
検索できます.
[root@dns1 named]# dig -t A [email protected]
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A [email protected]
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 15903
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.oracle.com. IN A
;; ANSWER SECTION:
www.oracle.com. 3600 IN A 172.16.31.101
www.oracle.com. 3600 IN A 172.16.31.100
;; AUTHORITY SECTION:
oracle.com. 3600 IN NS ns.oracle.com.
;; ADDITIONAL SECTION:
ns.oracle.com. 3600 IN A 172.16.31.100
;; Query time: 0 msec
;; SERVER: 172.16.31.100#53(172.16.31.100)
;; WHEN: Thu Dec 11 12:37:19 2014
;; MSG SIZE rcvd: 97
成功したよ!
9.次のようにサービス起動スクリプトを書くことができます.
まずbindのヘルプファイルを/etc/manに書きます.configを呼び出します.
便利namedサービス起動後pidファイルを生成する:
[root@dns1 named]# chown named:named/usr/local/bind/var/run/
[root@dns1 named]# touch /var/lock/subsys/named
[root@dns1 named]# touch /etc/rc.d/init.d/named
[root@dns1 named]# chmod 755/etc/rc.d/init.d/named
[root@dns1 named]# vim /etc/rc.d/init.d/named
#!/bin/bash
# named a network name service.
# chkconfig: 345 35 75
# description: a name server
pidfile=/usr/local/bind/var/run/named/named.pid
lockfile=/var/lock/subsys/named
conffile=/etc/named/named.conf
named=/usr/local/bind/sbin/named
prog=named
[ -r /etc/rc.d/init.d/functions ] && ./etc/rc.d/init.d/functions
start() {
if [ -e $lockfile ] ; then
echo -n -e "$prog is already running.
"
warning
echo -n -e
exit 0
fi
echo -n "Starting $prog:"
daemon --pidfile $pidfile $named -u named -c $conffile
tetval=$?
echo
if [[ $retval -eq 0 ]] ; then
touch $lockfile
return $retval
else
rm -f $lockfile $pidfile
return 1
fi
}
stop() {
if [ ! -e $lockfile ] ; then
echo -n "$prog is stopped."
warning
echo
exit 0
fi
echo -n "Stopping $prog:"
killproc $prog
retval=$?
echo
if [[ $retval -eq 0 ]] ; then
rm -f $lockfile $pidfile
return 0
else
echo "Can't stop $prog"
return 1
fi
}
restart() {
stop
start
}
reload() {
echo -n "Reload the $prog:"
killproc -HUP $prog
retval=$?
echo
return $retval
}
status() {
if pidof $prog &>/dev/null; then
echo -n "$prog is running."
success
echo
else
echo -n "$prog is stopped."
success
echo
fi
}
usage() {
echo "Usage:named {start|stop|status|reload|restart}"
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
reload)
reload;;
*)
usage
exit 1
;;
esac
バグがあり、warning関数は前の出力を上書きします.
warning関数の問題だと疑っています!
ほっといてo(∩∩)oハハ
10.最後にDNSの次の圧力テストツールを紹介します:queryperf
実際のテストは帯域幅を考慮しますよ!
[[email protected]]# ls contrib
dane idn perftcpdns queryperf scripts zkt-1.1.2
dlz nslint-3.0a2 query-loc-0.4.0 README sdb
[[email protected]]# cd contrib/queryperf/
[root@dns1queryperf]# ls
config.h.in configure.in Makefile.in queryperf.c utils
configure input missing README
簡単なコンパイルインストール:
[root@dns1 queryperf]# make
root@dns1 queryperf]# ./configure
コマンドをbinにコピーします.
[root@dns1 queryperf]# cp queryperf /bin/
圧力テストを開始します.
queryperf [-d datafile] [-s server_addr] [-p port] [-qnum_queries]
[-b bufsize] [-t timeout] [-n] [-l limit] [-f family] [-1]
[-i interval] [-r arraysize] [-u unit] [-H histfile]
[-T qps] [-e] [-D] [-R] [-c] [-v] [-h]
:
-d datefile: ,
-s server_addr:
ドメイン名の集合を解析するファイルを作成する必要があります.
例:
[root@dns1 ~]#vi test.txt
www.oracle.com A
mail.oarcle.com A
oracle.com NS
oracle.com MX
pop3.oracle.com A
iamp4.oracle.com A
www.oracle.com A
mail.oarcle.com A
oracle.com NS
oracle.com MX
pop3.oracle.com A
iamp4.oracle.com A
簡単にテストしてみましょう!
[root@dns1 ~]# queryperf -d test.txt -s172.16.31.100
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/0507:36:04 marka Exp $
[Status] Processing input data
[Status] Sending queries (beginning with172.16.31.100)
[Timeout] Query timed out: msg id 2
[Timeout] Query timed out: msg id 8
[Status] Testing complete
Statistics:
Parseinput file: once
Endeddue to: reaching end of file
Queriessent: 12 queries
Queriescompleted: 12 queries
Querieslost: 0 queries
Queriesdelayed(?): 0 queries
RTTmax: 0.004873 sec
RTTmin: 0.000074 sec
RTTaverage: 0.001751 sec
RTT stddeviation: 0.001375 sec
RTT outof range: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Startedat: Thu Dec 11 14:05:39 2014
Finished at: Thu Dec 1114:05:44 2014
Ranfor: 5.004047 seconds
Queriesper second: 2.398059 qps
機械はあまりよくないので,処理が遅い.
ここまでソースコードにBindをインストールする紹介は終わりましたが、shellスクリプト構築サービスはまだ熟練していません!