C/C++ でカスタムのシンプルな DNS サーバーを構築する方法

特にまともなセキュリティが必要な場合は、「単純な」キャッシュ DNS サーバーなどというものはありません。最近の DNS 攻撃は、再帰 DNS サーバーのキャッシュ機能が特に脆弱であることを示しています。

独自のローカル キャッシュが実際に必要かどうかを再評価します。そうでない場合は、おそらく既存の DNS プロキシ コード (「dnsmasq」など) を変更した方がよいでしょう。

独自のものを作成したい場合は、ldns などの優れたライブラリがあります。 基礎となる DNS パケットへのアクセスを提供できます。

ldns を使用しています libevent と一緒に自分自身 以前の質問で言及したファジング DNS サーバーを実装します。


BSD ライセンスの下で、就職の面接用の基本的な DNS サーバーを作成しました。

誰かが役に立つかもしれません:

https://github.com/tomasorti/dns-server


DNS のフリー ソフトウェア実装が多数あります。ソースコードを見ることができます。例:

  • http://cr.yp.to/djbdns.html
  • http://www.isc.org/products/BIND/

本 DNS and BIND が役立つかもしれません。もちろん、DNS を指定する RFC もあります。http://rfc-editor.org/ を参照してください。