メンバー: 山本 和彦, 日比野 啓
カテゴリー: Underpinning
- 背景:DNSを取り巻く環境は常に変化しており、DNSプロトコルの検証に利用できる独自のDNSフルリゾルバが望まれている。
- 目的: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
- DNS検索コマンドdugの紹介, IIJ エンジニアブログ, 2024
進捗
2024FY3Qの進捗
bowline
の可用性の改善: 反復検索において、すべての NS に対してフォールバックを行ない、解決できる場合を増やした。その際、権威サーバへの攻撃とならないようにするために、反復検索内のクエリ回数を制限した- 不具合修正: テストで発見された次の問題を修正した。応答用のエラーコード読み替え、NSEC/NSEC3 レコードのキャッシュ、応答 AD flag の対応
2024FY2Qの進捗
bowline
の通信安定性の改善: 中間のNATが頻繁にポートを変更する環境でも、リゾルバと安定した通信を可能としたbowline
の運用機能の改善: 提供するメトリックス情報を強化したbowline
の安定性の改善: STM(Software Transactional Memory) のトランザクションを用いてクライアント向けのセッション状態の決定性を向上したことにより、リソース管理を明確化した. また、ランダムテストにより、セッション状態管理用 STMトランザクションの頑健性を向上したdug
のリリースと紹介記事:dug
を紹介するIIJエンジニアブログを書いた。それに合わせて、dug
を複数回リリースした
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で使用