インストール
今回はDNSサーバーもDHCPサーバーも1台で兼任させる。
まずインストールする。
※Version bind9.9.4 dhcp4.2.5
# yum install dhcp bind
DNSサーバーの設定
bindから設定する。
下記の箇所の内容を変更または追記する。
options { // zoneファイルの保存場所 directory "/var/named/"; // LAN内からの問い合わせを許可 allow-query { localhost; 192.168.1.0/24; }; // 自分で名前解決できないときの丸投げ先 forwarders { 192.168.1.254; 8.8.8.8; }; }; zone "example.jp." { type master; file "example.jp.zone"; // 自身からの変更を許可しておく allow-update { localhost; }; };
さっき指定したzoneファイルを作成する。
※admin.example.jp.の部分はadmin@example.jpという管理者のE-mailという意味
$TTL 86400 @ IN SOA dns.example.jp. admin.example.jp. ( 2018042619 10800 36400 604800 86400 ) IN NS dns.example.jp. dns IN A 192.168.1.11
作成したらファイルの所有グループをnamedに変更して書き込み権限を設定する。
※namedに読み書きの権限を持たせるのが目的
# chgrp named /var/named/example.jp.zone # chmod g+w /var/named/example.jp.zone
ついでに/var/named/の所有グループもnamedに変更して書き込み権限を設定する。
※namedに書き込みの権限を持たせるのが目的
# chgrp named /var/named/ # chmod g+w /var/named/
DHCPサーバーの設定
設定ファイルを下記のように編集する。
# DNSサーバーに更新要求を送信する設定 ddns-update-style interim; # 普通のDHCPの設定 subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.101 192.168.1.120; option routers 192.168.1.254; option domain-name "example.jp"; option domain-name-servers 192.168.1.11; # 更新を通知するDNSサーバーを指定 zone example.jp. { primary localhost; } }
その他の必要な設定
SELinuxとFirewallに例外を追加する。
# setsebool -P named_write_master_zones true # firewall-cmd --add-service=dns --permanent # firewall-cmd --add-service=dhcp --permanent # firewall-cmd --reload
サービスを有効にして起動。
# systemctl enable named # systemctl start named # systemctl enable dhcpd # systemctl start dhcpd
補足
nsupdate
nsupdateを使用してDNSサーバーを更新をテストするには bind-utils をインストールし、nsupdateコマンドを実行する。実行したら対話型コンソールになるので下記のような感じで入力する。何もエラーが出なければOK。
>server 127.0.0.1 >update add test.example.jp. 3600 A 192.168.1.222 >send >server 127.0.0.1 >update delete test.example.jp. >send
rndc
rndcでdumpして現在のDNSレコードを確認する。
# rndc dumpdb -zones # cat /var/named/data/cache_dump.db | grep dns.example.jp.