地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【CoreDNS】フォワード先のフォールバック

forward プラグインのおさらい

forward プラグインは、CoreDNS が受け取った問い合わせを外部 DNS サーバーに転送します。典型的な設定は以下のようになります。

.:53 {
    forward . 8.8.8.8 1.1.1.1
    cache 30
}
  • 8.8.8.8(Google Public DNS)、1.1.1.1(Cloudflare DNS)を指定
  • CoreDNS はこれらの上流サーバーに問い合わせを転送
  • 応答をキャッシュして再利用

このとき複数のフォワード先を指定すると、CoreDNS は内部的にロードバランシングやフォールバックを行います。

フォールバックの仕組み

CoreDNS の forward プラグインは以下の動作をします。

  • ロードバランス
    • 複数のフォワード先がある場合、問い合わせを順番またはランダムに分散して送信。
  • フォールバック

すべてのサーバーが失敗した場合はエラーを返す。つまり、一時的に上流 DNS がダウンしても別のサーバーに自動で切り替わるため、可用性を高められます。

実際の設定例

複数フォワード先の設定

.:53 {
    forward . 8.8.8.8 1.1.1.1 9.9.9.9
    policy sequential
    cache 30
}

policy sequential を指定すると、順番に試行してフォールバック動作を明示的に利用できる。デフォルトは random で、ランダムにサーバーを選びつつ障害時にフォールバックする。