bind(namd)のIPv6を無効にする方法

最終更新日付: 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”引数

image

通常に

systemctl start named

で起動してもnamedプロセスには引数に”-4”オプションはついていません。
その場合は、上記画像のようにtcp6のLISTENがあることがわかります。

image

上記のようにnamedプロセスに引数”-4”オプションを付けることによって、tcp6のLISTENが消えていることがわかります。

ちなみに、namedプロセスに引数”-4”オプションをつけて起動させるためには

  • /etc/sysconfig/named

ファイルに

OPTIONS="-4"

と記載しnamedサービスを再起動するだけです。

image

 

方法2、named.confでlisten-on-v6をnone設定

image

引数に“-4”オプションをつけなくてもIPv6へのリッスンを無効にする方法があります。

  • /etc/named.conf

に上記のように、options部に

listen-on-v6 { none;};

と記載しnamedサービスを再起動します。(既存のlisten-on-v6設定をコメントアウトするだけでもIPv6リッスンが無効になりますが)

 

IPv6の名前解決を無効にする方法(フィルター)

image

結論から言いますと、残念ながらこちらは標準では設定不可です。

以下のようにnamedをコンパイル時にオプションをつけてコンパイルすることにより
IPv6の名前解決を無効(厳密にはフィルタリングする)オプション”filter-aaaa-on-v4”を使用できるようになります。

image

参考、キャッシュDNSサーバとフィルタリングの実例

 

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(namd)のIPv6を無効にする方法」への2件のフィードバック

  1. kouji

    bindでipv6を無効にしたくて検索していたところこのページを見つけました。
    貴重な情報ありがとうございます。
    ただその設定項目「OPTIONS=”-4”」ですが、ダブルクォートが全角になっていてこのままコピペするとエラーになります。
    何回か構築していてその度コピペして動かないというマヌケな過ちを繰り返してしまいましたので、一応指摘させていただきます。

    返信
    1. putise 投稿作成者

      >koujiさん

      ご指摘ありがとうございます。

      確か、wordpressが自動でダブルコーテーションやシングルコーテーションを
      全角に変換してしまったかと思います、、、
      少し調べ何か手を打てないか検討します。

      返信

kouji へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です