controlsとは
controls { [ inet ( ip_addr | * ) [ port ip_port ] allow { address_match_list } keys { key_list }; ] [ inet ...; ] [ unix path perm number owner number group number keys { key_list }; ] [ unix ...; ] };
controlsステートメントは管理者がnamedをコントロールするためのチャネルを設定する。rndcコマンドでこのコントロールチャネルを利用し、様々な操作コマンドを実行することが可能。コントロールチャネルを使用したくない(使わせたくない)場合、以下のように設定することでコントロールチャネルを無効にすることができる。
controls { };
inet節
[ inet ( ip_addr | * ) [ port ip_port ] allow { address_match_list } keys { key_list }; ]
inetから始まる部分でコントロールチャネルがListenするTCPソケット情報をIPとポート番号で指定する。IPはIPv4とIPv6の両
方が利用可能。*(アスタリスク)はIPv4ワイルドカードとして認識される。*を指定すると、どのIPv4アドレスからでコントロールチャネルにアクセス可能になる。IPv6ワイルドカードを利用したい場合には::(コロンx2個)を使う。
コントロールチャネルを使うrndcを実行するのがlocalhostの限られている場合、セキュリティを考慮してloopbackアドレス (127.0.0.1)を指定することがお勧め。Localhost利用の場合、IPv4は127.0.0.1、IPv6は::1を利用する。ポート番号 を指定しない場合は953番ポートが利用される。当然ポート番号は*(アスタリスク)指定はできない。
コントロールチャネルを利用たコマンド実行はallowとkeysで制限できる。IP制限は簡単なIPフィルタリングしか設定できない。フィルタされる場合(NGの場合)にはkeyは無視されます。
unix節
[ unix path perm number owner number group number keys { key_list }; ]
controlsステートメントでunixが指定された場合、指定されたUNIXドメインSocketが利用される。Socketへのアクセスは権限、 オーナー、グループの節で指定する。SunOSやSolarisなどの一部のPlatformでは権限は親ディレクトリの権限を意味し、Socket自体 のパーミッションは無視される。
keys節
controlsステートメントが無いとLoopback(127.0.0.1 and ::1)のデフォルトポート(TCP:953)でコントロールチャネルが設定される。この場合もそうだし、controlsステートメントがあったとしてもkeysが設定されていなかった場合、namedは/etc/rndc.keyをデフォルトとして参照する。
rndc.keyを生成するためのコマンドは以下。
rndc-confgen -a