Linuxでいくつかのテストを行いたい。 IP:1.2.3.4(想定)のマシンに小さなWebサーバーを配置し、特定のURLに対してDNSクエリが作成された場合:kitty.myweb.comこのIPアドレスを返します。
シナリオ:
各コンピュータには、いくつかのエントリをキャッシュするローカルDNSリゾルバがあることを知っています。 URLを呼び出すと、最初にローカルDNSリゾルバーにクエリが送信されます。対応するエントリがない場合は、LANまたはインターネット上の外部DNSリゾルバーにクエリが送信されます。
私がやりたいのは、ローカルDNSリゾルバーにエントリ(kitty.myweb.com:1.2.3.4)を追加することです。これにより、上記の2つのシナリオでは、外部クエリを実行しなくてもDNS応答が1.2.3.4になります。
Linuxでこれを実行することは可能ですか?これを実行するCコードスニペットはありますか?
/ etc/hostsを使用してエントリを追加できる場合があります。これは実際にはDNSを使用していませんが、ほとんどのアプリケーションで使用されているLinuxのリゾルバーライブラリに影響します。追加:
1.2.3.4 kitty.myweb.com
別のオプションは、システムに単純なDNSサーバーをインストールすることです。私がよく使うのはdnsmasqです。一部のディストリビューションでは、デフォルトでキャッシングリゾルバーとしてインストールされます。この場合、構成を変更するだけで、次のものが含まれます。
address =/kitty.myweb.com/1.2.3.4
独自のDNSサーバーを実行している場合は、Linuxリゾルバライブラリで使用される/etc/resolv.confを操作する必要があるでしょう。リゾルバーライブラリがローカルDNSサーバーを参照するようにするには、resolv.confにエントリが必要です。
ネームサーバー127.0.0.1
ローカルホストに単一のDNSエントリを追加する最も簡単な方法は、それをhostsファイルに追加することです。そのファイルの場所はディストリビューションごとに異なる場合がありますが、従来の場所は/etc/hosts
であり、おおよそ次のようになります。
:: 1 localhost localhost.yourdomain.tld 127.0.0.1 localhost localhost.yourdomain.tld 1.2.3.4 kitty.myweb.com
これは自分のコンピュータにのみ影響を及ぼし、適切にスケーリングされないことに注意してください。言い換えれば、単純なテストでは問題ありません。多くのコンピューターでホストファイルを編集しようとしないでください。そのためには、適切なDNSエントリが必要です。