#author("2020-11-07T08:45:34+09:00","default:dramsukohome","dramsukohome") #author("2023-01-24T20:29:58+09:00","default:dramsukohome","dramsukohome") [[Linux]]~ *bind、DNSサーバーについて(CentOS6) [#d9e77701] *目次 [#gf209d77] #contents * トップレベルドメインリストの入手 [#n3d6b338] ftp://ftp.rs.internic.net/domain/ から入手。 named.root がそのファイル。~ 当サーバーではこのファイルを~ named.ca として名前を変更して使用する。 * ドメイン名の登録確認 [#w14b7b53] + IANA(Internet Assigned Numbers Authority) が管理している国名コード(ccTLD)のリストは、[[http://www.iana.org/domains/root/db:http://www.iana.org/domains/root/db]] で確認できる。 + whois domain-name でも検索できる(らしい)~ (自分の環境ではだめだった。) + whois 以外では、 dig ns domain-name でもいけるようだ。 * bind のバージョン確認 [#s2be5117] named -v * named.conf [#gff192e1] + ネームサーバーのワーキングディレクトリ設定 options { directory "/var/named"; }; + root ヒントファイルの設定 zone "." in { type hint; file "named.ca"; }; + プライマリマスタネームサーバー zone "foo.example" { type master; file "db.foo.example"; }; + スレーブネームサーバー zone "foo.example" { type slave; masters { 192.168.0.1; }; file "bak.foo.example"; }; * ゾーンデータの作成 [#if8c71b6] + $TTL の指定(1日)~ ++ 単位を省略して整数のみを記載すると秒の意味 $TTL 86400 ; 1 day ++ 単位を指定する。~ s(秒)、m(分)、h(時間)、d(日)、w(週)~ 1日の指定を単位を使って表すと $TTL 1d ; 1 day ++ 2つの単位の混合 $TTL 1d12h ; 1日半 ++ $TTL は、1時間から1日が一般的 * SOA レコード [#ef70fd7a] + ゾーンのデータが変更されたかどうかを、スレーブネームサーバがどれくらいの頻度で確認するかなど、ゾーン全体に関わる情報を記述する。~ + SOA レコードはドメイン名の記述から始まり、次にゾーンのクラスを指定(ほとんどの場合、Internet を示す IN を指定)して、SOA レコードのタイプを示す SOA を記述します。~ + SOA レコードでは、タイプの後に7つの要素を記述します。 ++ MNAME フィールド --- このゾーンのプライマリマスタネームサーバのドメイン名を指定する。 ++ RNAME フィールド --- ゾーン管理者に到達性のあるメールアドレス。メールアドレスで使われる @ 記号は使えないため、 . (ドット)に変更して記述する。 ++ シリアル番号 --- YYYYMMDDVV の形式が望ましい。~ 例) 2013121700~ ++ リフレッシュ --- このゾーンのスレーブネームサーバが、どれくらいの頻度で、自分のマスタネームサーバに、ゾーンのシリアルが増加しているかどうか(変更があったか)について、問い合わせる時間を指定する。 ++ リトライ --- シリアルの確認時にエラーが出た時、次に問い合わせるまでの間隔を指定する。 ++ 期限切れ --- スレーブサーバーがマスターに到達できなくなった時、どれくらいの期間、反応を続けるかを指定する。通常、事故などに備え、数週間から1ヶ月程度の値を用いる ++ ネガティブキャッシュTTL --- 他のネームサーバがゾーンに対する権威を持ったネームサーバからの否定応答をキャッシュしてもよい時間を設定する。この値は、15分から3時間程度のかなり短めに設定してもよい。 ++ 例)~ $TTL 86400 ; 1 day foo.example. IN SOA ns1.foo.example. root.foo.example. ( 2002123041 ; serial 3600 ; refresh (1 hour) 900 ; retry (15 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.foo.example. NS ns2.foo.example. * slave 設定の /etc/named.conf [#u70cc6b9] zone "foo.net" IN { type slave; file "slaves/db.foo.example"; masters { 111.222.112.221; }; }; zone "112.222.111.in-addr.arpa" IN { type slave; file "slaves/db.111.222.112"; masters { 111.222.112.221; }; }; * Log のカテゴリ [#se267ca6] - 参考外部サイト : [[BINDのロギング機能(Server Architecture for Linux):http://linux.kororo.jp/cont/server/bind_log.php]] |カテゴリ名|内容|h |default|チャンネルが割り当てられていない全てのカテゴリ。| |general|以下のカテゴリに分類されない、その他全てのメッセージ| |database|named の内部データベースに関するメッセージ。| |security|要求の承認と拒否に関するメッセージ。| |config|設定ファイルの処理に関するメッセージ。| |resolver|名前解決に関するメッセージ。再帰的に問い合わせへの応答も含む。| |xfer-in|他サーバーから自ホストへのゾーン転送に関するメッセージ。| |xfer-out|自ホストから他サーバーへのゾーン転送に関するメッセージ。| |notify|非同期びゾーン更新通知に関するメッセージ。| |client|クライアントからの要求に関するメッセージ。| |unmatched|どのview にもマッチしなかったメッセージ。| |network|ネットワークに関するメッセージ。| |upadate|動的更新に関するメッセージ。| |queries|問い合わせのログ。| |dnssec|DNSSECとTSIGの処理に関するメッセージ。| |lame-servers|名前解決を試みようとして発見した、間違った設定のサーバーに関するメッセージ。| * トラブルシューティング [#s5220fc2] ** view internal: query failed (SERVFAIL) 対応 [#q790b8af] - jnl ファイルとの不整合らしい。~ 以下のコマンドでjnlファイルを適用すると解決! rndc freeze rndc thaw ** Dynamic DNS, Unable to add forward map from 対応 [#v3bacfb3] -/var/named を含むこれ配下のアクセス権を確認する -named 権限が必要 ** permission の設定をしていても(設定済みでも) jnl(ジャーナル)の作成に失敗する [#m51e6e7c] - SELinux が原因。以下のコマンドを実行 setsebool -P named_write_master_zones 1 * nsupdate [#i88c507c] sudo nsupdate > server hogehoge.unyaunya.com - 追加(正引き) update add www.unyaunya.com 3600 IN A 192.168.1.101 update add www.example.com 3600 CNAME test.example.com - 追加(逆引き) update add 10.10.168.192.in-addr.arpa. 3600 IN PTR www.unyaunya.com. - 削除 -- 正引き update delete www.unyaunya.com In A 192.168.1.101 -- 逆引き update delete 2.0.168.192.in-addr.arpa. IN PTR - 反映 send - nsupdate console の終了 quit - 備考 -- send を送信した時点で即時反映される。~ ただし、zone ファイルは jnl ファイルを経由して~ 少しあとに更新される。 * ubuntu, 18.04以降, DNS, cache, キャッシュ, nslookup, 削除 [#hdaa72e8] -なんとまぁLinuxでもDNSの応答がキャッシュされるようになった模様 -ubuntu 18.04 以降 -ubuntu 18.04 -クリア方法は以下 sudo systemd-resolve --flush-caches -ubuntu 22.04 resolvectl flush-caches * ipv6 [#x3c46e77] ** 参考サイト [#eb2ca816] - [[@IT:IPv6対応DNSサーバの実現 (1/2):https://www.atmarkit.co.jp/ait/articles/0401/14/news090.html]]