最終更新日付: 2018年3月27日
DNSのパッケージであるbind(named)でIPv6を無効にしたいといった場合、二つの意味合いがあります。
- IPv6でリッスンするのを無効にするのか
- IPv6の名前解決を無効にする(フィルター)のか
それぞれの方法について説明したいと思います。
レジュメ
環境・前提条件
- CentOS Linux release 7.3.1611
- bind 9.9.4-37
環境で説明します。
namedがIPv6でリッスンするのを無効にする方法
bindパッケージのnamedプロセスがIPv6でリッスンさせない設定方法は次の二つの方法があります。
どちらかを設定することにより無効化できます。
- namedの起動オプションで”-4”引数
- named.confでlisten-on-v6をnone設定
方法1、namedの起動オプションで”-4”引数
通常に
systemctl start named
で起動してもnamedプロセスには引数に”-4”オプションはついていません。
その場合は、上記画像のようにtcp6のLISTENがあることがわかります。
上記のようにnamedプロセスに引数”-4”オプションを付けることによって、tcp6のLISTENが消えていることがわかります。
ちなみに、namedプロセスに引数”-4”オプションをつけて起動させるためには
- /etc/sysconfig/named
ファイルに
OPTIONS="-4"
と記載しnamedサービスを再起動するだけです。
方法2、named.confでlisten-on-v6をnone設定
引数に“-4”オプションをつけなくてもIPv6へのリッスンを無効にする方法があります。
- /etc/named.conf
に上記のように、options部に
listen-on-v6 { none;};
と記載しnamedサービスを再起動します。(既存のlisten-on-v6設定をコメントアウトするだけでもIPv6リッスンが無効になりますが)
IPv6の名前解決を無効にする方法(フィルター)
結論から言いますと、残念ながらこちらは標準では設定不可です。
以下のようにnamedをコンパイル時にオプションをつけてコンパイルすることにより
IPv6の名前解決を無効(厳密にはフィルタリングする)オプション”filter-aaaa-on-v4”を使用できるようになります。
IPv4のレコートタイプはA、IPv6のレコードタイプはAAAA
ちなみに、
- IPv4で定義されたレコードはAレコード(タイプA)で
- IPv6で定義されたレコードはAAAAレコード(タイプAAAA)です
IPv4なのかIPv6なのかはレコードタイプが分かれています。
つまり、DNSクライアントが名前解決したい時に、
- Aレコードで解決したいか、
- AAAAレコードで解決したいか
をDNSサーバーに問い合わせた結果、DNSサーバーが
- Aレコード要求ならIPv4
- AAAAレコードならIPv6
を応答しているわけです。
DNSクライアントがAレコードを指定して問い合わせしてくれば、DNSサーバーはAレコード(IPv4)しか応答を返しません。
bindでipv6を無効にしたくて検索していたところこのページを見つけました。
貴重な情報ありがとうございます。
ただその設定項目「OPTIONS=”-4”」ですが、ダブルクォートが全角になっていてこのままコピペするとエラーになります。
何回か構築していてその度コピペして動かないというマヌケな過ちを繰り返してしまいましたので、一応指摘させていただきます。
>koujiさん
ご指摘ありがとうございます。
確か、wordpressが自動でダブルコーテーションやシングルコーテーションを
全角に変換してしまったかと思います、、、
少し調べ何か手を打てないか検討します。