ローカルホスト名の解決にDNSMasqを使用する


9

私は自分とルームメイトのためにホームイントラネットをセットアップしています。私の考えは、キッチンなどの引き出しよりもアクセスしやすい場所に、過去の公共料金の請求書などを保管できるようにすることです。とにかく、私は、Apache 2をRaspberry Pi上で実行しています。そのIPアドレス、私はPiで提供されているページにアクセスできます。アパートにサービスを提供するためのネットワークについて学ぶために、このプロジェクトをもっと行っているので、自分のネットワークがLANのホスト名解決を提供できればすばらしいと思いました。したがって、ブラウザに192.168.1.151PiのIPアドレスを指定するのではなく、PiのIPアドレスoberon(ホスト名)を指定して、Piが提供するWebページを表示できます。

自分が最初にこれをやりたいとは思っていなかったので、グーグルから始めました。この質問は、UnixとLinuxでも同様に非常に役立ちました。ホスト名を使用してLANからマシンにアクセスできるようにする方法。この時点で、検証済みの回答のすべてを試しました。hostsファイルを使用することを考えましたが、ルームメイトに自分のマシンを構成するように指示する必要があることを意味します。ルーター(NETGEAR WNR1000v2(別名N150))でPiのDHCPリースを予約しようとしましたが、予約は機能しましたが、ホスト名解決は機能しません。私はルーターにPiのIP そのホスト名を伝えましたが、LAN上のクライアントにこの情報を提供していません。

これら2つの方法が機能しないためdnsmasq、Pi にインストールすることにしました。設定は簡単に思えたので、新しいツールを教えていただければ幸いです。私はインストールし、それをうまく実行しています(それはらしい)。私がすることができますdignslookup(私は設定パイのニックネーム/etc/hostsoberonしてhomenet)、正しい結果を得ることができます。私のようなインターネット名に同じことを行うことができますyahoo.comし、私はGoogleのを設定しているため、正しい答えを得る8.8.8.88.8.4.4バックアップサーバとして/etc/dnsmasq.conf。これを見てください:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

SERVERis 127.0.0.1oberonは自分自身のIPアドレスを検索していることに注意してください。これは私が見ると予想していたものです。私がやれば出力は同じですdig oberon @localhost。この出力のため、私はそれdnsmasqがうまく機能していると思います。それを次のレベルに上げるために、LAN上のすべてのクライアントoberonがブラウザに入力して、oberonのインデックスページに移動できるようにしたいと考えています。このため、ルーターを構成する必要があることを知っています(これが完全にUnixおよびLinuxの領域から逸脱した場合は、謝罪してください)。

私はかなり慣れているNetgear WNR1000v2を持っています。PiにSSHで接続できるようにポート転送を構成しました。他の設定も試しました。このプロジェクトを始める前に、ISPからDNSサーバーを取得していましたが、今はそれらのDNSサーバーを主に使用するだけでなく192.168.1.151、最後のチェックとして使用したいと思っています。そこで、ルーターのDNS構成を次のように変更しました。

ルーターの新しいDNS構成。 最初の2つのエントリはISPから提供されたものだと言ったら信頼してください

したがって、この構成ではnslookup oberon、自分の(Windows)デスクトップで実行でき、の結果が得られると期待していました192.168.1.151。しかし、これは起こりません。これは何が起こるかです:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

dnsflushingWindowsマシンのリセットまたはネットワークアダプターは何も変更しません。

さて、ここで私はここで私の髪を引き裂いているのです。

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

明らかに、dnsmasq問題なく機能しています。192.168.1.151名前の解決にWindowsボックスを使用するように指示するとoberon、すべてが問題ありません(.lanドメインはの構成の一部だったdnsmasqので、そこに表示されるはずでした)。192.168.1.151DNSクエリを作成するときにルーターがWindowsマシンに使用するように指示するだけでいいのであれば、私はうまくいくはずです!

したがって、問題はルーターにあるように見えますが、DNSサーバーを変更して、192.168.1.151既に持っているようにDNSサーバーを変更する以外に何をすべきかを理解できません。誰か私をここで助けてもらえますか?必要な追加情報を提供できるよう努めます。


最初のDNSサーバーとしてpiを設定してみてください、それはそれで動作しますか?
terdon

1
これを行うには、ルーターが最適です。何らかの理由でルーターにPiの名前を提供できない場合は、Piでdnsmasqを実行し、DNSサーバーが機能するようにルーターにPiを提供させます。問題はルーターを適切に設定しているようです。
Gilles「SO-邪悪なことをやめなさい」

ルーターのDNS設定を更新した後、クライアントのDHCPリースを更新しますか?DNS構成はDHCPリースで送信されるため、新しい設定を取得するには新しいリースを取得する必要があります。代替ソリューションとして、mDNS / zeroconf / avahiを調べることもできます。
Patrick

回答:


2

あなたの問題は、それらのDNSサーバーの使用方法の誤解にあります。クエリするDNSサーバーを選択するためにWindowsが使用する方法の正確な詳細はわかりませんが、プライマリ>セカンダリ>ターシャリ/ always /に賭けています。そして、それがラウンドロビンでなくても、3回のうち2回、役に立たないサーバーに対してクエリを実行することになります。

何が起こるかは、プライマリサーバーが照会されることです。1秒か2秒になる可能性があるタイムアウトが発生した場合、次のサーバーが照会されます。DNSは「コンセンサス」システムではありません。リモートサーバーの1つが照会されると、インターネットDNSサーバーとしての観点から、ホスト名が正式に存在しないという結果が最終的に検出されます。

プライマリDNSサーバーとして独自のLAN DNSが必要です。他のユーザーは適切なバックアップサーバーを作成しますが、完全に削除することを検討します。

また、リバースDNS(IPから名前のルックアップ)は「hostname.lan」に解決されますが、フォワード解決テストではホスト名のみを使用します。また、hostname.lanの前方解決がどこかに設定されている必要があります。ホストには多くの「名前からアドレスへ」の前方参照が存在する可能性がありますが、IPから名前への逆参照があり、そのIPレコードに一致する名前があることが期待されます。これは常に重要であるとは限らず、ログファイルが時々駄々をこねるだけですが、いくつかのことは他のものよりもこれに敏感です。

また、すべてが機能するようになったら、配置したhostsファイルの本体を削除することを忘れないでください(これがdnsmasqに関連しているかどうかはわかりませんが、決して使用していません。ISC-BIND名を使用して、似ていますがより複雑な設定をしています。あなたが使用しているように他のサーバーへの転送を設定することができるサーバー、または完全に名前解決を行う非転送DNSサーバーとしてそれを使用することができます-これは私が設定したものです)。

言うまでもなく、最初にこのセットアップを行うのは一人ではないだろうと推測したように、ほぼすべての合理的に開発された企業LANと非常に多くの過剰に開発されたホームLANには、この種のセットアップがあります。


1
助けてくれてありがとう!DNSがコンセンサスシステムではないことについてあなたが言っていることを理解しているので、PiをルーターのプライマリDNSサーバーに設定しました。次に、WindowsマシンのDHCPリースを更新しました。ただし、nslookup oberonそれでも機能しません。元の投稿のテキストで触れなかった1つのことは、nslookup失敗した場合、使用されたサーバーはfe80IPv6アドレスであるということです。これは予約済みのリンクローカルアドレスです。しかし、それがDNSにとって何を意味するのかはわかりません。私のWindowsボックスはそれ自体をクエリしていますか?dnsflushこの動作は変更されません。
c.anna 2013年

そして、その価値のために、LANホスト名解決は私のiOSデバイスでも機能しません。私はWindowsについてより多くの内省的能力を持っているので、まだそれらについて言及していませんが、私の問題が本当にWindowsから厳密に発生している場合、これらのデバイスに同じ問題があるとは思わないでしょう。
c.anna 2013年

また、.lanドメインに関する懸念を和らげるために、dnsmasq単純なホスト名を自動的に拡張して追加するように設定しました.lan。実行nslookup oberon.lan 192.168.1.151すると期待される結果が返されますName: oberon.lan Address: 192.168.1.151
c.anna

仕事や何かに「ウィンドウズ主義」があるのだろうか、トップレベルドメイン( 'oberon。')の直下にホストに名前を付けるのはちょっと変だ、oberon.lanはもっと理にかなっている。注意すべきことの1つは、ドメインサフィックスと「検索ドメイン」がしばしば名前を追加してそれを解決することです。たとえば、「oberon」は解決され、lanが検索ドメインにある場合は「oberon.lan」として検出されます。ただし、上記のクエリはこれが事実であることを示していないようです、発掘は特にホスト名の終了期間を持っていますが、テストするときはそれをよく知ってください!
iain 2013年

プライマリDNSを修正した後、ウィンドウを再DHCPする必要があります(アダプタをリセットするとそれが実行されます)。次にipconfig /all、正しいDNSサーバーが使用されていることを確認します。それが正しい場合は、FlushDNを実行する必要があります。しかし、私は他に何も考えられません、それはうまくいくはずです。
sourcejedi

1

少し遅いかもしれませんが、私のワイヤレスアダプターでipv6を無効にするとうまくいきました。


賛成票:常に良いアイデアです。システムがそこに裸でそれを必要としない限り。これまでのところ(2017年9月)、このカテゴリに該当するホームユーザー機器はほとんどありません。
SDsolar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.