computerの日記

Cisco,SHELL,C,Qt,C++,Linux,ネットワーク,Windows Scriptなどの発言です

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

========

パケットだと、こんな感じ。

 

f:id:intrajp:20180604015219p:plain

DNS サーバの data ディレクトリを見ると、ジャーナルファイルができていました。

rndc freeze; rndc thaw; service named restart したら、zone ファイルが更新されました。本当のやり方は?