CentOS で dhclient で DDNS 登録

CentOSDHCP を使っているときに DDNS でホスト名の登録も行う方法が、ググってもさくっとは判らなかったのでその方法をメモしておきます。


DNS サーバの設定

DDNS を有効にしておきます。

/etc/named.conf
 :

zone "example.net" {
    type master;
    file "zone/example.net.zone";
    allow-update { 192.168.0.0/24; };
};

 :

DHCP サーバの設定

DDNS を有効にしておきます。また、domain-name で DDNS を有効にしたドメインを指定しておきます。

/etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;

 :

subnet 192.168.0.0 netmask 255.255.255.0 {
    option domain-name    "example.net";
    
     :
}

DHCP クライアントの設定

ifcfg-eth0 で次のように設定しておきます。

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
DHCP_HOSTNAME=hogehoge
DHCPRELEASE=yes

もしくは /etc/sysconfig/network でも大丈夫なようです。

/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
NOZEROCONF=yes
HOSTNAME=hogehoge.example.net
DHCP_HOSTNAME=hogehoge
DHCPRELEASE=yes


ネットワークをリスタートします。

# service network restart


これで、DHCPIPアドレスを取得するときに DHCP クライアントから DHCP サーバに DHCP_HOSTNAME で指定したホスト名が通知され、DHCP サーバがそのホスト名(+ドメイン)を DNS サーバへ登録するようになります。


DHCP_HOSTNAME を設定していると ifup の実行時に /etc/dhclient-eth0.conf というファイルが作成されて dhclient の設定ファイルとして使用されます(CentOS 5 の場合)。CentOS 6 の場合は dhclient に -H オプションが追加されており、その値として DHCP_HOSTNAME に指定したホスト名が使用されます。


DHCPRELEASE=yes を指定すると ifdown の実行時に dhclient が -r オプション付きで呼び出され、IPアドレスがリリースされます。このとき一緒に DDNS から IP アドレスの登録解除も行われます。


なお、実際の処理は /etc/sysconfig/network-scripts/ の ifup-eth と ifdown-eth で行われています。中身はシェルスクリプトになっているので中を読めば何が行われているかがわかります。