- - PR -
dns書き換えについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-16 15:36
dnsの書き換えモジュールの作成
$nsupdate >update add (ドメイン名) TTL IN A (IPアドレス)//追加 >send //update要求 >quit //終了 上記のようなことをC言語を使って実現させたいのですが、 どのようにやればいいのか分からないので、知恵を貸していただきたいと 思います。よろしくお願いします。 | ||||
|
投稿日時: 2003-12-16 16:03
ども。がると申します。
DNSのプログラムに何を使っているのかでかなり回答が異なると 思うので、何を使っているか、をかかれたほうがより有効回答が 増えると思います。 以下、BINDであることを想定して。 基本的には ・データファイルを書き換える ・namedに対してreloadを投げる の2点で片付くと思います。 データファイルに書き込むのは単純なファイル操作なので省略。 namedへのreloadの投げかけは、単純にsystem(3)とかを使うのが シンプルでよいのではないか、と。 ただ、このプログラム、非常に危険です。 よほど状況的に安全に作らないとクラックの対称になりやすいと 思うので、十分にお気をつけください。 | ||||
|
投稿日時: 2003-12-16 19:23
がるがるさんとは別の、以下の仮定で考えて見ました。
要求が次のようだとすると: ・bind9のnsupdateコマンドを呼び出したい、あるいはそれと同じ機能を組みたい。 ・プラットホームはLinuxかWindows 1. 「C言語から任意の実行ファイルを実行したいが手順がわからない」場合。 → Linuxならsystemか、forkとexecを使います。 WindowsならCreateProcessを使います。(bindはWindows用もあるため念のため) 2. 「nsupdateと同じ動作をするものを作成したい」場合。 → libbind (BIND resolver library) からこの機能(Dynamic DNS)を 使えるかもしれません。 3. 「nsupdateと同じ動作をするものを独自に作成したい」場合。 → これはないですよね? bind9のnsupdateについてはこちら: http://www.atmarkit.co.jp/flinux/rensai/bind907/bind907a.html bind9はこちら。 http://www.isc.org/products/BIND/bind9.html | ||||
|
投稿日時: 2003-12-16 19:30
nsupdate は実行後、独自コマンドの入力待ち状態になりますよね。
このコマンドは nsupdate への引数として直接実行する事は出来なかったはずです。 つまり nsupdate は、 fork & exec で実行できるが、その後の update 〜 quit までを nsupdate に渡すにはどうすればいいか、という 質問かなあ、と思いました。 時に、これって可能なんでしょうか??? [修正] スペルミス修正 [ メッセージ編集済み 編集者: でくのぼう 編集日時 2003-12-16 19:31 ] | ||||
|
投稿日時: 2003-12-16 20:24
systemの代わりならpopen(3)/pclose(3)を、 fork&execならさらにpipe(2),dup2(2)を使えばできるかと。 | ||||
|
投稿日時: 2003-12-16 20:28
なるほど可能なのですね。
勉強になります。 ![]() 何か作ってみようかな。 | ||||
|
投稿日時: 2003-12-16 20:31
「bind9のnsupdateコマンドを呼び出したい、あるいはそれと同じ機能を組みたい」です。
もう少し詳しく教えていただけないでしょうか? わたくし、プログラム等未熟なもので・・・。 すいません。 | ||||
|
投稿日時: 2003-12-16 20:37
であれば、ちいにぃさんの回答に対してもう少し詳しく答えた方が・・・。
少なくとも1〜3の選択肢まで用意して頂いているんですから。 |