controls

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