web-dev-qa-db-ja.com

ダイナミックDNSで冗長ISPを管理する方法

フォールバックISPを追加して、中小企業のネットワークをもう少し堅牢にしようとしています。私が理解できないのは、インバウンド接続のDNSを管理する方法です。私のネットワークの簡略化されたビューは次のようになります。

+-------+    +-------+
| ISP 1 |    | ISP 2 |
+-------+    +-------+
    |           |
 +-----------------+
 | Dual WAN Router |
 +-----------------+
          |
    +----------+
    |  Server  |
    +----------+

ISPが1つしかないときは、心配するWAN IPアドレスが1つしかなく、動的IPが変更されるたびにDNSAレコードを更新するだけでした。私はDNSにAWS(Route 53)を使用しているので、現在のIPを取得するスクリプトを記述し、CLIツールを使用してそれに応じてDNSレコードを更新するのは非常に簡単です。

WAN IPアドレスが2つあるので、どうすればよいか正確にはわかりません。私には2つの主な問題があります:

  1. ISP 1をプライマリにしたい(接続が良好)が、1が利用できない場合はISP2にフォールバックしたい。私はVoIP、HTTP、SSHにサーバーを使用しています。 VoIPは、かなり高い可用性を備えている必要があります(したがって、冗長ISP)。しかし、このようなフェイルオーバーを実現する方法がわかりません。

  2. どうすれば両方のDNSレコードを最新の状態に保つことができますか? ISPが1つしかない場合は、Dig +short myip.opendns.com @resolver1.opendns.comのようなコマンドを使用して、サーバーからWAN IPを確実に判別できます。 2つのISPがあるので、サーバーから両方のIPを取得する方法を想像することはできません。

#1のアイデア

複数のAレコードを持つDNSラウンドロビンについて読んだことがありますが、どこでもそれが推奨されていないと述べています。別のオプションはBGPのようですが、私はそれを理解しておらず、実装するために必要なものがないような気がします( この投稿 適用されるようです)。

#1の別の解決策は、ドメインが指す単一のIPを持つロードバランサーを使用することです。次に、そのロードバランサーは、ヘルスチェックに基づいてトラフィックをルーティングするISPを選択します。問題は、これがプロトコルに依存しない必要があることです(つまり、VoIPトラフィックやHTTPなどとシームレスに連携します)。そのため、DNSレベルのソリューションは魅力的であるように思われました。

このAWSブログ投稿 に出くわしましたが、これは有望に見えましたが、ヘルスチェックと対応するさまざまなDNSレコードで動的IPを最新の状態に保つ方法を見つけようとしたときに頭が爆発しました。

この投稿 を読んだ後、私のレベルでこれを行う「正しい」方法はリンクバランサーのようです このように 、しかしその行で最も安いモデルは約$ 1,200です私が探していたより少し多いです。さらに、ISPから動的IPを取得しているときに、ドメインのネームサーバーをリンクバランサーにポイントする方法については、まだ少しあいまいです。

#2のアイデア

IPが変更されたときにデュアルWANルーターを webhookを呼び出す に構成できると思いますが、実装は少し複雑になります。

私が見逃している魔法の弾丸の解決策はありますか?

2
Dominic P

デュアルWANルーターの機能によって異なりますが、最も簡単な解決策は、ISP/WAN1がダウンしていることを検出した場合にのみルーターがISP/WAN2を使用するようにすることです。 。このようにして、サーバーとそのダイナミックDNSスクリプトをそのまま使用できます。WAN1に障害が発生した場合、同じレコードを更新してWAN2のパブリックIPに解決します。

もちろん、これは有効になるまで最大TTL秒かかりますが、300のように短いTTLを使用すると、パーセンテージでのダウンタイムが長すぎないはずです。

1
Esa Jokinen

AWS Route5 インバウンドDNS解決とインターネットフェイルオーバーのヘルスチェックを使用します。

ヘルスチェックを作成します。

enter image description here

enter image description here

サービスごとにパブリックDNSエントリを作成します。

enter image description here

ヘルスチェックをDNSエントリに関連付けます。

enter image description here

2
ewwhite