私は様々なウェブサイト、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が変更されたときにaws
Route53レコードを更新するには、コマンドラインツールと次のスクリプト(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が更新され続けるように、ネットワーク上の複数のホストでこのスクリプトを実行します。