独自の動的DNSレコードホスティングを実行する

独自の動的DNSレコードホスティングを実行する

私は様々なウェブサイト、SSHサーバー、EメールをホストするDebianサーバーを自宅で運営する予定です。

動的IPアドレスがありますが、静的IPに対して追加料金を支払うことはありません。

独自のネームサーバーを実行し、次のようにno-ipなどを使用して登録されたドメインに自動更新ネームサーバーアドレスを設定すると、DNSの問題を解決できると思います。

登録機関から:

john-hunt.com (and my other domains) nameservers = johnns1.noip.com & johnns2.noip.com

johnns1.noip.com, johnns2.noip.com -> my dynamic IP

これにより、ドメイン内のネームサーバーは常に自分の自宅のコンピュータを指すようになります。

実際にDNSレコードを提供するために、自宅のコンピュータでBINDなどを実行します。

私の本当の問題は、IPアドレスが変更されたときに更新を受け入れて適用するようにBIND(またはtinydnsなど)を設定する方法がわからないことです。これを防ぐ方法を見つけることができます(johnns1.noip.comをポーリングしてpingして自分のIPアドレスを取得し、ゾーンファイルをgrepingして5分ごとに再ロードします。)しかし、それほど安定していません。

誰でもこれの経験がありますか? no-ipの改善されたサービスを見てみましたが、ホスティング履歴についてはドメイン(複数)で25ドルを請求します。

答え1

私は過去10年間以上私に効果的であった次のことをします。次のサービスに動的DNS名を設定しました。動的DNS(今年まで無料)または他の同様のプロバイダ。これは絶えず変化する私のIPがいつもsam.dyndns.orgのような静的名前に根ざしているようにする足場を提供します。

次に、バインディングはこの静的名前を指すCNAMEを生成します。チャジャン、永久名ができました。

答え2

BINDはDDNSをサポートしていますが、BINDを実行しているコンピュータサーバー以外のコンピュータサーバーから更新を提供できるように、更新がDNSプロトコル自体を介して処理されるように見えるため、認証キーを生成する必要があるため、設定は少し面倒です。確かにセキュリティ認証メカニズムが必要です。

もともとこのルートに直接行く予定でしたが、最終的にAmazonのRoute53サービスで私のドメインをホストするようになりました。動的IPに使用可能なレコードを更新するAPIがあります。エントリに低TTLを設定し、マイコンピュータにcronjobを設定して現在のIPアドレスを見つけ、自分のIPが変更されたときにRoute53レコードを更新します。

この記事を書く時点で、費用は月額0.90ドルであるため、無料ではありませんが、サービスに組み込まれた冗長性とフェイルオーバーを考慮すると、私のユースケースにはかなり合理的に見えます。ゾーンに実際に入力したエントリの数に関係なく、ゾーンごとにコストが計算されるため、残りのDNSエントリもここにあります。

IPが変更されたときにawsRoute53レコードを更新するには、コマンドラインツールと次のスクリプト(cronで毎時間実行)を使用します。

#!/bin/sh

function updateDNS
{
        TARGET_ZONEID="$1"
        TARGET_FQDN="$2"
        IP="$3"
        CUR_IP="$4"
        TYPE="$5"

        if [ "$IP" != "$CUR_IP" ]; then
                echo '{ "Comment": "DDNS update", "Changes":[ { "Action":"UPSERT", "ResourceRecordSet":{ "ResourceRecords": [ { "Value":"'"$IP"'" } ], "Name": "'"$TARGET_FQDN"'", "Type": "'"$TYPE"'", "TTL": 60} } ] }' |
                        aws route53 change-resource-record-sets --hosted-zone-id "$TARGET_ZONEID" --change-batch file:///dev/stdin > /dev/null
        fi
}

TARGET_ZONEID="ABC123"
TARGET_FQDN="homeip.example.com."
IP=`dig +short myip.opendns.com @resolver1.opendns.com`
CUR_IP=`dig +short "$TARGET_FQDN"`
TYPE="A"

updateDNS "$TARGET_ZONEID" "$TARGET_FQDN" "$IP" "$CUR_IP" "$TYPE"
# Can add more updateDNS calls to do other hosts, AAAA records, etc.

ホストのいずれかがダウンしてもIPが更新され続けるように、ネットワーク上の複数のホストでこのスクリプトを実行します。

関連情報