環境
私のLAN設定は非常に基本的です。
- ISPモデムとインターネットに接続されたルーター
- 私の開発コンピュータはルータに直接接続されています。
ルーターはDHCPを提供しますが、独自のDNSサーバーを実行しません。実際、私の一般的なホームネットワーク設定(LAN)のどこにもホストされているDNSサーバーはありません。ルータは、DHCP リース情報の一部として ISP の DNS サーバを送信するように設定されます。
開発PCにVirtualBoxシステムを設定し、ここにDebian Squeeze(6.0.4)をインストールしました。 VirtualBoxネットワークモードはBridged Adapter
私のLANのスタンドアロンサーバーをシミュレートします。物理サーバーではなくVirtualBoxサーバーであることは重要ではありませんが、完全性のために言及しています。
質問
各ネットワークタスクは、実行前にLAN IPでDNSリバースルックアップを実行し、サーバーは長時間遅延します。遅いネットワーク操作のいくつかの例:
- 私の開発PCからサーバーへのSSH接続
- Glassfish サーバーの管理ポートに接続する
netstat -l
(netstat -nl
とても速い)Starting MTA: exim4
開始を完了するのに時間がかかる
その中には、開発コンピュータのIPを追加したり、/etc/hosts
DNSリバースルックアップを避けるためにコマンド固有のオプションを追加するなどの回避策があります。明らかに/etc/hosts
DHCPと一致しないので、使用法はこれまでにのみ可能です。
しかし、私は何かを見逃しているという考えを消すことはできません。私はありますか?本物LANのどこかにDNSサーバーを設定する必要がありますか?これは私のニーズに比べて膨大で役に立たない努力のように見え、私のようなDHCP環境には他のオプションがないとは信じられません。
この問題についてオンラインでたくさん検索しましたが、正しいクエリがない可能性がありますが、解決策が見つかりませんでした...
BillThorの答えに基づいたアップデート1
ホストの使用(digは同じ結果を提供します):
# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa. IN PTR
;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143 IN PTR stackoverflow.com.
Received 74 bytes from 192.168.1.1#53 in 15 ms
real 0m0.020s
user 0m0.008s
sys 0m0.000s
# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached
real 0m10.004s
user 0m0.004s
sys 0m0.000s
私の/etc/resolv.conf(インストール中に自動的に生成されます)
nameserver 192.168.1.1
パブリックIPの場合、ホストと発掘の両方が非常に迅速に返されますが、LAN IPの場合はタイムアウトするのに10秒かかります。現在のタイムアウト値は10秒のようです。
アップデート2
dev-pc
/etc/hosts ファイルから:
$ time getent hosts 192.168.1.50
192.168.1.50 dev-pc
real 0m0.001s
user 0m0.000s
sys 0m0.000s
dev-pc
/etc/hosts ファイルに見つかりません:
$ time getent hosts 192.168.1.50
real 0m10.012s
user 0m0.004s
sys 0m0.000s
リバースDNS検索を試みるすべてのプログラムの準備プログラムオプションまたはパラメータを見つける必要性がますます大きくなっているようです。私のLANでDNSサーバーとして機能できるシステム(仮想かどうかにかかわらず)は常に実行されていないからです。残念ながら、ルーターのファームウェアにはDNSサーバーは含まれていません。
答え1
192.168.1.1 このルータの IP アドレスですか?
nameserver 192.168.1.1
ルーターが「ISP の DNS サーバーを送信」するのではなく、自分を DNS サーバーとして宣伝していることを示します。
どのブランドとモデルのルーターをお持ちですか? Webインターフェイスにログメッセージが表示されますか?
あなたのルーターが要求をISPのネームサーバーに転送しているかどうか疑問に思います。ただし、ISPのネームサーバーは、自分のIPシステム名を知りたくないため、要求を削除しています192.168.1.50
。
提案:
- ルーターの設定をもう一度確認してください。あなたの要求に答える必要がありますプライベートネットワーク。ルータのWebインターフェイスに静的ホストエントリを追加できますか?
- インストールを試みるあふれネットワーク内のすべてのシステムで。
- ルーターに使用するように指示Google パブリック DNS(
8.8.8.8
および8.8.4.4
/またはオープンDNS
答え2
ホームネットワークにローカルDNS(およびDHCP)サーバーを設定したくない場合は、可能であれば、逆方向DNS検索を実行しないようにサービスに指示できます。
たとえば、SSHD のリバース DNS ルックアップをディセーブルにするには、ファイルに以下を追加しますsshd_config
(またはデプロイに応じて類似)。
UseDNS no
Exim構成からこの行を削除できます。起動速度に影響を与えるかどうかはわかりませんが、クライアント接続時にDNSリバースルックアップが防止されます。
host_lookup = *
Glassfishプロセスを開始するユーザーのためにこの環境変数をエクスポートできるようです。
export AS_NO_REVERSE_DNS=true
答え3
失敗したDNS検索はすぐに失敗します。しかし、私は通常、ホストファイルを読み込み、そのエントリの順方向および逆方向のルックアップを提供するdnsmasqを実行します。また、アップストリームDNSサーバーの負荷を軽減するためにDNSキャッシュサーバーとしても機能します。
host
または、dig
コマンドを使用してどの検索が遅いかを確認できます。実行されていないDNSサーバーにリダイレクトされると、DNSが失敗するのにかなりの時間がかかります。タイムアウトと再試行を調整することで、/etc/resolv.conf
エラーの発生速度を上げることができます。
編集:リゾルバーの応答をテストするには、を試してください。これにより、ファイルとDNStime getent hosts 192.168.1.50
から検索が返されます。コマンド/etc/hosts
はDNSのみを確認します。この操作が返されますが数秒かかる場合は、ファイルがリスト内の前の項目に移動される順序を変更する必要があるかもしれません。host
dig
hosts
/etc/nsswitch.conf
dnsmasq
名前検索にDNSのみに依存するプログラムがある場合は、そのプログラムをデフォルトのDNSネームサーバーに設定すると問題が解決します。/etc/resolve.conf
Eximは基本的な照会にパーサーを使用する必要があります。/etc/hosts
ルーターでDHCPサーバーを無効にできない場合は、DHCPに使用できるファイルが必要ですdnsmasq
。 dnsmasq
処理する DHCP 要求に名前が与えられると、自動的に登録されます。
wins
編集2:常に実行しているコンピュータがない場合は、Sambaをインストールしてnsswitch設定で使用することをお勧めします。高速化が必要なので、dns
ホストエントリの前に置くと機能します。
avahi
リンクローカルネットワークで自動検出を有効にするユーティリティのインストールも検討できます。 IPv6側で動作しますが、IPv4アドレスを公開しません。ホストのデフォルトドメインは「.local」です。あなたの場合に合わないかもしれませんが、上書きすることができます。また、クエリはwins
nsswitch設定mdns
の初期に実行するのが不適切である可能性があるよりも速いようですdns
。
答え4
フローティングIPから固定IPに変更した後も同じ問題が発生しました。私のネットワークは次のように構成されています。固定 - IPv6がなく、メールサーバーが計画されていません。
以下を実行して問題を解決しました。
1:dpkg-reconfigure exim4-configの実行
2: DNS ルックアップに問題がある場合 -> DNS ルックアップを最小に設定 (電話接続)
このクエリが機能しないというエラーが発生し、/ etc / hostsを編集することを提案しました。しかし、/etc/hostsについて私がした唯一のことは、ip6-allnodes行とip6-allrouters行をコメントアウトしただけでした。
もう一度始めるのは早くなければなりません(少なくとも私にとっては)。