メンバー: 山本 和彦, 日比野 啓

カテゴリー: Underpinning

タグ: dns, full resolver, Haskell

  1. 背景:DNSを取り巻く環境は常に変化しており、DNSプロトコルの検証に利用できる独自のDNSフルリゾルバが望まれている。
  2. 目的:IIJ独自のDNSフルリゾルバを実装する。

概要

Haskellで bowline というフルリゾルバを開発している。bowline は、DNS over UDP、TCP、TLS、QUIC、HTTP/2 および HTTP/3 をサポートしている。

成果

  • ソフトウェア: dnsext ライブラリ、フルリゾルバ bowline とコマンドツール dug が含まれる
  • DNSフルリゾルバの実装への DNSSEC の組み込み – DNSSEC と反復検索, IIJ エンジニアブログ, 2024
  • DNSフルリゾルバの実装への DNSSEC の組み込み – NSEC/NSEC3 による否定応答の証明, IIJ エンジニアブログ, 2024

進捗

2024FY1Qの進捗

  • bowline の改善: 評価中に発見した問題を解決し、またCheckDisabledフラグ、キャッシュの削除など新たな要望に対応した
  • dug の改善: TLS、QUIC、HTTP/2、HTTP/3でセッションの再開と0-RTTができるようになった。また、QUIC や TLS のハンドシェークモードなどの情報を出力の最後に表示するように変更した。NSEC/NSEC3 の検証情報出力を強化した

2023FY4Qの進捗

  • パイプラインのテスト: dug コマンドに対して、DNS over TLS/QUIC/H2/H3のパイプライン機能を組み込んだことにより、フルリゾルバ bowline のパイプライン機能がテストできるようになった
  • ローカルゾーンデータ対応: ゾーンデータの解釈によって、ローカルゾーンおよび、ルートヒント、トラストアンカーが定義できるようになった。
  • 脆弱性対策: 入力サイズおよび検証回数の制限によって、KeyTrap攻撃に対する計算量を低減できるようになった

2023FY3Qの進捗

  • 下位ライブラリTLS、HTTP/2、QUICの安全性の向上
  • 入れ子反復検索キャッシュと否定キャッシュの条件緩和による応答入れ子反復検索キャッシュと否定キャッシュの条件緩和による応答性能の向上

2023FY2Qの進捗

  • キャッシュサーバのテスト運用に向けた機能強化
    • トランスポート層の拡充 (TLS、QUIC、HTTP2、HTTP3)
    • DNSTAPを使ったロギング機能の実装
    • サーバー管理のためのWeb APIの実装
    • 監視のための Prometheus へ対応
    • 否定応答の DNSSEC 検証機能 (NSEC/NSEC3) の組み込み
  • 反復検索およびDNSSEC の問題の修正
    • 必要のない DS クエリを発行しないよう修正
    • RRセット正規化の問題の修正 (TTL復元、正規順序)

2023FY1Qの進捗

  • 開発中のフルリゾルバ実装への DNSSEC 検証機能の組み込み
    • 反復検索時の委任情報の暗号鍵の署名(DS)検証機能
    • 結果レコードの署名(RRSIG)検証機能
    • 親子ゾーン同居ケースのフォールバック機能(“.” と “arpa.” 等)
    • 検証結果(成功、失敗、検証無し)のログ出力
  • デモを目標とした機能強化
    • SVCBからトランスポート(QUIC、TLS、H2、H3)を選択し、それを使って名前解決
    • フルリゾルバの動作(反復検索)の可視化
    • DNSSECの結果をカラーで表示
    • Open Houseで使用

PAGE TOP