CentOS で DHCP を使っているときに 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
これで、DHCPでIPアドレスを取得するときに 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 で行われています。中身はシェルスクリプトになっているので中を読めば何が行われているかがわかります。