私は 2 つの DNS サーバー (BIND9) (プライマリ、セカンダリ) と 1 つのドメインを持っています。動的 IP を持つ Web サーバーがあります。そのため、IP が変更されると、DNS サーバーでドメイン ゾーン IP cot が変更されるため、ドメイン経由でサイトにアクセスできなくなります。
質問は、パブリック IP アドレスを使用して、サーバーから x 回ごとにゾーンを更新するにはどうすればよいかということです。Linux (Debian 9) 用のアップデータ スクリプトを提供してくれる人はいますか?
ありがとう
答え1
nsupdate
ツールをスクリプト化するか、互換性のあるサードパーティ クライアントを使用することによって、RFC 2136「DNS UPDATE」を使用できます。
共有秘密鍵 (TSIG)
更新を認証するための秘密キーを生成します。
$ tsig-keygen -r /dev/urandom | tee tsig-key.private key "tsig-key" { algorithm hmac-sha256; secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4="; };
このキーはサーバーとクライアントのみが知っており、他の誰にも知られません。
印刷されたテキストを にコピーします
named.conf
。(異なるホストに対して複数のキーを持つことができ、各キーにはフィールドに一意の名前を付けることができますkey "…"
。)ゾーン構成で動的更新を有効にします。
zone … { … update-policy { /* grant <key_name> <policy> <record_types> */ grant "tsig-key" name myserver.example.com ANY; }; };
様々な異なるポリシーを使用できます。例えば
zonesub
、全体ゾーンであり、subdomain dyn.example.com
明らかな意味を持っています。更新を実行します。
$ nsupdate -k tsig-key.private > zone example.com > del myserver.example.com > add myserver.example.com 3600 A 100.64.1.1 > send
自動更新が可能なさまざまなクライアントがあります。
公開鍵/秘密鍵 (SIG(0))
キーペアを生成します:
$ dnssec-keygen -r /dev/urandom -T KEY -n USER myclient.example.com $ ls K* Kmyclient.example.com.+005+07399.key Kmyclient.example.com.+005+07399.private
ファイル
*.key
には公開キーが含まれているので、それを DNS ゾーンに追加します。ファイル
*.private
には秘密鍵が含まれているので、それをクライアントコンピュータにコピーします。(実際には、両方ファイルをクライアント コンピュータに送信します。update-policy { }
TSIG とまったく同じ方法で設定します。更新も同様に を使って実行します
nsupdate -k <filename>.private
。
(注:TSIGキー名は任意ですが、SIG(0)キーはDNSに保存されるため、常にホスト名/サブドメインのような名前が付けられます。キー名はではないただし、更新するホスト名と一致する必要があります。
ケルベロス (GSS-TSIG)
少し範囲外ですが、BIND9 もこれをサポートしています (主に Active Directory での使用)。