DHCP-DNS 関連
DDNS の実験をしていました。
環境は、VirtualBox で、GNS3 上で実験です。
DHCPサーバが割り振ったIPアドレスをもとに、DNSサーバに設定を書いていくものです。
配役は、こんな感じです。
DHCP: 192.168.100.1
DNS:192.168.100.2
PC:0.0.0.0
--------
まず、DHCP サーバです。
今回は、ISC-DHCP の、4.1-ESV-R15 をチェックアウトしました。
別の環境(CentOS6.9)に移して、./configure ; make ; make install しました。
バイナリは、/usr/local/sbin/dhcpd です。
dhcpd.conf は、/usr/share 以下に存在しているファイルをコピーして、適当に作成します。
option domain-name "intrajp-test.org";
option domain-name-servers ns1.intrajp-test.org;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style interim;
ignore client-updates;
ddns-domainname "intrajp-test.org.";
ddns-rev-domainname "in-addr.arpa.";
authoritative;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.10;
zone intrajp-test.org. {
primary 192.168.100.2;
}
zone 100.168.192.in-addr.arpa. {
primary 192.168.100.2;
}
}
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:xxxx
TYPE=Ethernet
UUID=xxxxxxxx
ONBOOT=yes
NM_CONTROLLED=yes
DNS1=192.168.100.2
BOOTPROTO=static
IPADDR=192.168.100.1
NETMASK=255.255.255.0
まあ、こうすると、Network Manager が、/etc/resolv.conf にいい具合に nameserver の設定を入れてくれます。
さて、スタートコマンドは、/usr/local/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid という感じです。pid ファイルは存在していないので、touch しておきます。
ところで、lease ファイルは、/var/lib/dhcpd じゃなくて、/var/db 以下に入りました。
異常がなければ、DNSサーバの設定に移ります。
--------
DNS サーバは、できるだけ簡単にしたいので、yum でパッケージを入れました。chroot もしてない、素な感じのやつです。
SELinux でハマりそうな時は、restorecon します。
設定です。
/etc/sysconfig/network-scripts/ifcfg-eth0
========
DEVICE=eth0
HWADDR=08:00:27:xxxx
TYPE=Ethernet
UUID=xxxxxxxx
ONBOOT=yes
NM_CONTROLLED=yes
DNS1=192.168.100.2
BOOTPROTO=static
IPADDR=192.168.100.2
NETMASK=255.255.255.0
/etc/named.conf
========
options {
listen-on port 53 { 192.168.100.2; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { 192.168.100.0/24; };
recursion yes;
};
zone "intrajp-test.org" IN {
type master;
file "data/intrajp-test.org.zone";
allow-update { 192.168.100.0/24; };
};
zone "100.168.192.in-addr.arpa" IN {
type master;
file "data/intrajp-test.org.rr.zone";
allow-update { 192.168.100.0/24; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
========
その他は、コメントアウトしました。
/var/named/data/intrajp-test.org.zone
========
$ORIGIN .
$TTL 86400 ; 1 day
intrajp-test.org IN SOA ns1.intrajp-test.org. hostmaster.intrajp-test.org. (
2018060308 ; serial
21600 ; refresh (6 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.intrajp-test.org.
$ORIGIN intrajp-test.org.
ns1 A 192.168.100.2
========
/var/named/data/intrajp-test.org.rr.zone
========
$ORIGIN .
$TTL 86400 ; 1 day
100.168.192.in-addr.arpa IN SOA dns1.intrajp-test.org. hostmaster.intrajp-test.org. (
2018060304 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS ns1.intrajp-test.org.
MX 10 mail.intrajp-test.org.
$ORIGIN 100.168.192.in-addr.arpa.
2 PTR ns1.intrajp-test.org.
========
/etc/sysconfig/named
========
ENABLE_ZONE_WRITE=yes
========
これで、/var/named 以下のディレクトリのオーナーとか、ファイルパーミッションとか、SELinux のラベルとかに注意して、サービスを起動します。必要に応じて、iptables の設定もやります。
service named start
エラーがなければ成功。
ここで、nsupdate -d コマンドで、update add pc100 3600 in a 192.168.100.100 とかしてみて、show send でうまくいくかを確かめてください。結構、ハマリポイントがありますが、設定をうまくやっていれば、大丈夫なはずです。
ここで、DHCP サーバからも、nsupdate コマンドで、update add とかをします。同様に、うまくいければOKです。
jnl ファイルは、cache_t というドメインを持っています。なので、/var/named/data にzone ファイルが無いといけないです。
では、PC から、dhcp コマンドを発行してみます。そのときに、パケットをキャプチャしておきましょう。
DHCPサーバのログがこんな感じになれば成功しています。
========
Jun 4 00:47:52 localhost dhcpd: DHCPDISCOVER from 00:50:79:66:68:00 via eth0
Jun 4 00:47:53 localhost dhcpd: DHCPOFFER on 192.168.100.10 to 00:50:79:66:68:00 (PC11) via eth0
Jun 4 00:47:56 localhost dhcpd: Added new forward map from PC11.intrajp-test.org. to 192.168.100.10
Jun 4 00:47:56 localhost dhcpd: added reverse map from 10.100.168.192.in-addr.arpa. to PC11.intrajp-test.org.
Jun 4 00:47:56 localhost dhcpd: DHCPREQUEST for 192.168.100.10 (192.168.100.1) from 00:50:79:66:68:00 (PC11) via eth0
Jun 4 00:47:56 localhost dhcpd: DHCPACK on 192.168.100.10 to 00:50:79:66:68:00 (PC11) via eth0
========
パケットだと、こんな感じ。
DNS サーバの data ディレクトリを見ると、ジャーナルファイルができていました。
rndc freeze; rndc thaw; service named restart したら、zone ファイルが更新されました。本当のやり方は?