最良の方法は、バインド9.8.1以降の応答ポリシーゾーンを使用することです。任意のゾーンの単一のレコードをオーバーライドできます(そして、そのためにサブドメイン全体を作成する必要はありません、変更したい単一のレコードのみ)、CNAMEなどをオーバーライドできます。Unboundなどの他のソリューションはCNAMEをオーバーライドできません。
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
編集:その後、これを適切に行いましょう。上記のリンクされたチュートリアルに基づいて、私が行ったことを文書化します。
私のOSはRaspberry Pi用のRaspbian 4.4ですが、この技術はDebianとUbuntuに変更を加えることなく、または他のプラットフォームに最小限の変更を加えて機能するはずです。
バインド構成ファイルがシステム上で保持されている場所に移動します/etc/bind
。ここにあります。db.rpz
次の内容で呼び出されるファイルをそこに作成します。
$TTL 60
@ IN SOA localhost. root.localhost. (
2015112501 ; serial
1h ; refresh
30m ; retry
1w ; expiry
30m) ; minimum
IN NS localhost.
localhost A 127.0.0.1
www.some-website.com A 127.0.0.1
www.other-website.com CNAME fake-hostname.com.
それは何をするためのものか?
www.some-website.com
偽のアドレス127.0.0.1
でIPアドレスを上書きし、そのサイトのすべてのトラフィックをループバックアドレスに効率的に送信します
- という
www.other-website.com
別のサイトにトラフィックを送信しますfake-hostname.com
ここで使用できるバインドゾーンファイルに入れられるものはすべて。
これらの変更を有効にするには、さらにいくつかの手順があります。
named.conf.local
このセクションを編集して追加します。
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
上記のリンク先のチュートリアルでは、さらに多くのものを追加するように指示されていますzone "rpz" { }
が、単純なセットアップでは必要ありません。ここで示したのは、ローカルリゾルバで動作するための最小値です。
編集named.conf.options
し、options { }
セクションのどこかにresponse-policy
オプションを追加します。
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
次に、バインドを再起動します。
service bind9 restart
それでおしまい。ネームサーバーはこれらのレコードのオーバーライドをすぐに開始する必要があります。
変更が必要な場合は、単に編集してdb.rpz
から、バインドを再起動してください。
ボーナス:DNSクエリをsyslogに記録する場合は、手順を監視し、編集named.conf.local
しlogging
て、これらのステートメントを含むセクションがあることを確認します。
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
バインドを再度再起動すると、それだけです。
Bindを実行しているマシンでテストします。
dig @127.0.0.1 www.other-website.com. any
別のマシンでdigを実行する場合は、@ 127.0.0.1ではなく@ the-ip-address-of-Bind-serverを使用してください。
この手法を使用して、作業中のウェブサイトのCNAMEをオーバーライドし、テスト中の新しいAWSロードバランサーに送信しました。Raspberry Piを使用してBindを実行し、RPiもWiFiルーターとして機能するように構成されました。したがって、RPiで実行されているSSIDにデバイスを接続すると、テストに必要なDNSオーバーライドを取得できます。