DNS/WINS両対応の簡易ネームサーバを自作しました。
http://www.soramimi.jp/bogons/index.html
そもそもやりたかったのは、Raspberry Piのように小さなマシンに名前を付けて管理することです。BINDの様な本格ネームサーバに登録しなくても、つないだだけで名前からIPアドレスを取得できるようにしたかったので、WINSサーバ機能も搭載しました。
ワンチップマイコン用のDNSクライアントは数年前に作ったことがあったので、単純なDNSサーバならそれほど難しくないことはわかっていました。もちろん、セキュリティを強固にするなど、安全策を講じればきりがありません。ネームサーバはインターネットの根幹にも関わる重要なサービスですから、不用意な実装はできません。今回はインターネットでの使用に耐えるようなものではなく、家庭内など狭いネットワークセグメントで使用することを想定したネームサーバとしました。
自己申告型(ブロードキャスト応答方式)のネームサーバを実現するのは、ちょっと前までは困難なことかと思っていましたが、Windowsがやっているんだからできるだろう、名前解決ごときに複雑なプロトコルを使うはずがないと思って、Wiresharkで観察してみたところ、普通のDNSとほとんど同じであることがわかりました。ポート番号の他、名前のエンコード方法に若干の違いがありますが、パケットのフォーマットの大枠は全く同じで、実装のほとんどをDNS機能と共通にすることができました。