CentOS 7向け named service Unit

[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Before=nss-lookup.target
After=network.target
 
[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/named
PIDFile=/var/run/named/named.pid
ExecStartPre=/opt/bind/sbin/named-checkconf -z /etc/named.conf
ExecStart=/opt/bind/sbin/named -u named -c /etc/named.conf
ExecReload=/bin/sh -c '/opt/bind/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/opt/bind/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
PrivateTmp=true
[Install]
WantedBy=multi-user.target

named.conf

namedの起動時に読み込まれる設定ファイル。場所は/etc/named.confにしている

acl localnet {
   192.168.0.0/24;
   127.0.0.1;
};
options {
   directory        "/var/named";
   allow-query      { localnet; };
   allow-transfer   { localnet; };
   forward          only;
   forwarders       { 192.168.0.1 port 53; };
};
logging {
   channel "default-log" {
                file "/var/log/named/dns.log" versions 5 size 1M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
   };
   channel "update" {
                file "/var/log/named/nsupdate.log" versions 7 size 1M;
                severity debug;
                print-time yes;
                print-severity yes;
                print-category yes;
   };
   category default         { "default-log"; };
   category update-security { "update"; };
};
include "/opt/bind/etc/rndc.key";
/***************************************************/
/* chaperone.jp ゾーン                             */
key "chaperone.jp" {
   algorithm HMAC-MD5;
   secret "omPnyNydbZSujw5CUxZ4ZwIokAAl...(略";
};
zone "chaperone.jp" IN {
   type            master;
   file            "chaperone.zone";
   allow-update { key chaperone.jp; };
   check-names     ignore;
};
zone "0.168.192.IN-ADDR.ARPA" IN {
   type            master;
   allow-update { key chaperone.jp; };
   file            "chaperone.rev";
};
zone "0.0.127.in-addr.arpa" in {
   type            master;
   file            "localhost.rev";
};

keyファイル

allow-updateはaclによるホスト指定でもいいのだが、dnssec-keygenによる鍵方式が望ましいらしい。
その鍵はnamed.confファイル内のkey chaperone.jpで定義される。
まずは鍵ファイルを作成します。

[root@c ~]# cd /var/named/
[root@c named]#
[root@c named]# /opt/bind/sbin/dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST chaperone.jp
Kchaperone.jp.+157+58055
 
[root@c named]# ls -l Kchaperone.jp.+157+58055*
-rw------- 1 root root 121  3月  8 12:30 Kchaperone.jp.+157+58055.key
-rw------- 1 root root 229  3月  8 12:30 Kchaperone.jp.+157+58055.private
[root@c named]#

これで2つのファイルが作成されます。拡張子 key は公開鍵、privateは秘密鍵と言った感じかな。このうち公開鍵の中身の一部をnamed.confに移します。

[root@c named]# cat Kchaperone.jp.+157+58055.key
chaperone.jp. IN KEY 512 3 157 omPnyNydbZSujw5CUxZ4ZwIokAAl...(略
[root@c named]#

公開鍵文字列omPnyNydbZSujw5CUxZ4ZwIokAAl.../etc/named.confkey chaperone.jp に割り当てます。

key "chaperone.jp" {
    algorithm HMAC-MD5;
    secret "omPnyNydbZSujw5CUxZ4ZwIokAAl(略";

っで、この鍵。
何に使えるのかと言うと、どちらのファイルでもいいらしいのだが、片方のファイルを使って、
dhcpdサーバに組み込んで、特定のdhcpdサーバからでないとallow-updateさせないとか、
nsupdateの際、読み込ませてallow-updateさせるなど、とにかくこのファイルがないと更新できない
ことを保証する役目らしい。下記は例。
*ファイルを使わない場合

[root@c ~]# /opt/bind/bin/nsupdate
> update add ccc.chaperone.jp 3600 IN a 192.168.0.70      *TTL:100秒でccc.chaperone.jp(192.168.0.70)を追加
> send
update failed: REFUSED
> quit
[root@c ~]#

と撥ねられる。
次に鍵ファイル(公開鍵秘密鍵どちらでも可)を使うと
*公開鍵を使うのが当然なのでしょう

[root@c ~]# /opt/bind/bin/nsupdate -k /var/named/Kchaperone.jp.+157+58055.key
> update add ccc.chaperone.jp 3600 IN a 192.168.0.70
> send
> quit
[root@c ~]#
[root@c ~]# nslookup ccc.chaperone.jp
Server:         192.168.0.3
Address:        192.168.0.3#53
 
Name:   ccc.chaperone.jp
Address: 192.168.0.70
 
[root@c ~]#
[root@c ~]# /opt/bind/bin/nsupdate -k /var/named/Kchaperone.jp.+157+58055.key
> update delete ccc.chaperone.jp
> send
> quit
[root@c ~]# nslookup ccc.chaperone.jp
Server:         192.168.0.3
Address:        192.168.0.3#53
 
** server can't find ccc.chaperone.jp: NXDOMAIN
 
[root@c ~]#

と登録、削除ができた。ここでは /opt/bind/bin/nsupdate を使用しているが、OS提供の /usr/bin/nsupdate(/bin/nsupdate)でも可

ログの場所

namedを実行するユーザはnamedというrootではないユーザです。
そのため、ログの書き出し場所にはそのnamedユーザで書き込める場所であることが条件となる。

[root@c ~]# chown named:named /var/log/named

chaperone.zoneファイル 正引きファイル

$TTL 86400
@ IN SOA  c.chaperone.jp. root.c.chaperone.jp (
  1;        Serial.
  10800;    Refresh after 3 Hours.
  3600;     Retry after 1 Hour.
  604800;   Expire after 1 week.
  86400 );  Minimum TTL of 1 day.
; Authoritative Name Servers.
       IN      NS      c.chaperone.jp.
; Hosts
@      IN      A       192.168.0.254;
c      IN      A       192.168.0.254;
c2     IN      A       192.168.0.2;
c3     IN      A       192.168.0.3;
; Localhost
localhost IN   A       127.0.0.1;

chaperone.revファイル 逆引きファイル

$TTL 86400
@ IN SOA c.chaperone.jp. root.c.chaperone.jp.  (
  1;        Seral
  10800;    Refresh after 3 Hours
  3600;     Retry after 1 Hour
  604800;   Expire after 1 Week
  86400 );  Minimun TTL of 1day.
; Authoritative Name Servers
       IN      NS      c.chaperone.jp.
; Hosts
254    IN      PTR     c.chaperone.jp.
2      IN      PTR     c2.chaperone.jp.
3      IN      PTR     c3.chaperone.jp.

localhost.revファイル

$TTL 86400
@ IN SOA c.chaperone.jp.  root.c.chaperone.jp.  (
  1;       Seral
  10800;   Refresh after 3 Hours
  3600;    Retry after 1 Hour
  604800;  Expire after 1 Week
  86400);  Minimun TTL of 1Day
; Authoritative Name Servers
       IN      NS      c.chaperone.jp.
; Hosts
1      IN      PTR     localhost.

/etc/init.d/named

initファイル。CentOS6とかで使用可能

#!/bin/sh
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: 2345 55 45
# description: named (BIND) is a Domain Name Server (DNS)
# that is used to resolve host names to IP addresses.
# probe: true
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /opt/bind/sbin/named ] || exit 0
[ -f /etc/named.conf ] || exit 0
 
# See how we were called.
case "$1" in
 start)
      # Start daemons.
      echo -n "Starting named: "
      daemon /opt/bind/sbin/named -u named -c /etc/named.conf
      echo
      touch /var/lock/subsys/named
      ;;
 stop)
      # Stop daemons.
      echo -n "Shutting down named: "
      killproc named
      rm -f /var/lock/subsys/named
      echo
      ;;
 status)
      status named
      exit $?
      ;;
 restart)
      $0 stop
      $0 start
      exit $?
      ;;
 *)
      echo "Usage: named {start|stop|status}"
      exit 1
esac
exit 0
最新の60件
2026-09-05 2026-08-31 2026-08-27 2026-08-24 2026-08-20 2026-08-18 2026-08-17 2026-08-16 2026-08-15 2026-08-13 2026-08-12 2026-08-11 2026-08-09 2026-07-30 2026-07-25 2026-07-24 2026-07-20 2026-07-18 2026-07-17 2026-07-16 2026-07-08 2026-07-07 2026-07-06 2026-07-04 2026-07-02 2026-06-27 2026-06-24 2026-06-21 2026-06-17 2026-06-14 2026-06-13 2026-06-09 2026-06-08 2026-06-05 2026-06-04 2026-06-03

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-08 (日) 13:10:02