2011-07-19 16 views
5

私はDNSが通常オペレーティングシステムによって処理されることを知っていますが、私はDNSがターゲットシステムで壊れているという前提で作業しています(これはDNSの誤設定を診断するツールです)。したがって、私はDNSを実装して、わかっている良いDNSサーバーに対してシステムから戻ってくる結果をチェックする必要があります。C++ DNSライブラリはどこにありますか?

NSLookupツールまたはDigツールでこれを行うことができます.DNSサーバーアドレスを手動で指定しますが、これを実行するためのWindows API呼び出し(たとえばGetAddressByName)ではクエリするサーバーを指定できません代わりにシステムの設定されたターゲット。

DNSでRFCを探してみましたが、残念なことに彼らは私には泥だとはっきりしています.HTTP仕様は、これまでに作成された最も明快でよく書かれた仕様のように見せます。

私はまた、他の誰かがすでに何度も何度も何度もやり遂げたことを再考したくありません。

+0

質問が分かりません。 DNSが誤って設定されている可能性がありますが、代替APIが必要な理由ではありません。'gethostbyname()'と友人は、あなたの設定に何が*あるかを伝えます。 – EJP

+0

@EJP:Erm、いいえ、gethostbynameはルックアップだけを行います。設定が間違っていると、失敗します。関数に必要な特定のDNSサーバーを使用するようにプログラムで指示する方法はありません。 (DNSのグローバル設定を変更することなく、ローカルの問題を解決するためにグローバル状態を変更していない) –

答えて

0

Try the c-ares library私が理解するように、独自のDNSスタックを実装しています。私はそれをLinux上でうまく使いました。彼らはWindowsをサポートしていますが、自分で試したことはありません。これはC++ではなく、単純なC言語ですが、簡単にC++ラッパーを書くことができます。

これは、非同期であり、既存のイベントループと統合できるフックを提供するためのボーナスポイントを取得します。

0

djbdnsを使用することができDNSクライアントライブラリが含まれています

http://cr.yp.to/djbdns/dns.html

これは、システムのDNSリゾルバライブラリとは独立しており、右のUDPパケットを生成します。本当に巧妙になるには、dnscacheと組み合わせるか、dnstraceユーティリティを参照してルートサーバーから名前を解決し、実際に何が起こっているかを確認します。

もちろん、Windows上で動作させる必要があります。それほど難しくはありません。

0

私はlibunboundを提案します。これは(ldnsと一緒に)Unbound再帰リゾルバに含まれるスタンドアロンライブラリです。

DNSSECの検証もサポートされています。これは、DNSSECが引き続き導入される際に役立ちます。

、私は質問が古いであることを知っているが、私はここに私のために良い答えを見つけることができますhttp://unbound.net/

1

を参照してください。 私はposlibが非常に簡単なインターフェイスで最高のdnsライブラリとして見つかりました。

関連する問題