web-dev-qa-db-ja.com

dnsmasqを使用してマシンを名前でアドレス指定し、外部ホスト名を解決する

Dnsmasqの設定に問題があります。私がやりたいのは、ネットワーク上の任意のマシンの特定のホスト名を特定のIPアドレスに解決することだけです。具体的には、指定したホスト名のみを使用して、ネットワーク上のすべてのデバイスがネットワーク上の一部のマシンに到達できるようにしようとしています。一度は動作させたのに、DNSサーバーを再起動した後、LAN外のサーバーへのリクエストの転送が停止したので、何か重要なことが欠けているに違いないと思います。

これが私の設定です:(すべてのIPアドレスにはIPv4アドレスの最後の桁しかありません)

  • Apple AirportExtremeはDHCPとNATモードでセットアップされています(このルーターではNATだけではいけないので、NATを取得するためにDHCP範囲を設定していますに253-254し、それらのIPにいくつかの偽のMACアドレスを予約しました)私のネットワークでは、これは1のIPアドレスを持っています

  • Raspbianとdnsmasqを実行しているRaspberryPi。これにはIPアドレス4があり、ホスト名は「pi」です。

  • 3の「タワー」という名前のマシン

DnsmasqはDNSおよびDHCPサーバーとして設定されています。ネットワークに接続するすべてのマシンは、dnsmasqで指定した正しい範囲のIPアドレスを取得し、Raspberry Pi(IP 4)をDNSサーバーとして自動的に指定します。 Dnsmasqは、他のパブリックDNSサーバーに見つからない要求を転送するようにも設定されています。これは、完全なIPアドレスが編集されたDNSサーバー全体です。

/ etc/dnsmasq.conf:

# Dnsmasq.conf for Raspberry Pi    
# Full examples found here:  
# http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example  

# Set up your local domain here    
domain=hyrule.home

# Example: The option local=/localnet/ ensures that any domain name query which ends in .localnet will be answered if possible from /etc/hosts or DHCP, but never sent to an upstream server
# don't forward requests (andrewoberstar.com/blog/2012/12/30/raspberry-pi-as-server-dns-and-dhcp)
local=/hyrule.home/

#resolv-file=/etc/resolv.dnsmasq  
resolv-file=/etc/resolv.conf  
#min-port=4096   

## DNS SERVERS
#openNic california
server=173.230.156.28

#openNic Washington
server=23.226.230.72

#google public DNS
server=8.8.8.8
server=8.8.4.4

# Max cache size dnsmasq can give us
cache-size=10000

# Use the hosts file on this machine
expand-hosts

# ethernet - ip address mappings from /etc/ethers file
read-ethers

# Below are settings for dhcp. 
dhcp-range=XXX.XXX.X.10,XXX.XXX.X.200,12h
dhcp-option=3,XXX.XXX.X.1
dhcp-authoritative
log-queries

/ etc/resolve.conf:

domain hyrule.home 
#search hyrule.home
#nameserver 8.8.8.8

/ etc/hosts

127.0.0.1   localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0     ip6-localnet
ff00::0     ip6-mcastprefix
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters

127.0.1.1   raspberrypi
XXX.XXX.X.3 tower
XXX.XXX.X.4 pi

また、/ etc/ethersファイルには、それぞれのマシンのイーサネットインターフェイスのMACアドレスが含まれています。

Dnsmasqがリクエストをログに記録していて、すべてが正常に見え、すべてのリクエストが次のようになっていることがわかります。

Nov  2 17:29:21 raspberrypi dnsmasq[2067]: query[AAAA] time.Apple.com.hsd1.ca.comcast.net from 10.0.1.1
Nov  2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.Apple.com.hsd1.ca.comcast.net to 173.230.156.28
Nov  2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.Apple.com.hsd1.ca.comcast.net to 23.226.230.72
Nov  2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.Apple.com.hsd1.ca.comcast.net to 8.8.8.8
Nov  2 17:29:21 raspberrypi dnsmasq[2067]: forwarded time.Apple.com.hsd1.ca.comcast.net to 8.8.4.4
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: query[A] north-america.pool.ntp.org from 10.0.1.59
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 8.8.4.4
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 8.8.8.8
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 23.226.230.72
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded north-america.pool.ntp.org to 173.230.156.28
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: query[TXT] Push.Apple.com from 10.0.1.3
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded Push.Apple.com to 8.8.8.8
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded Push.Apple.com to 23.226.230.72
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded Push.Apple.com to 173.230.156.28
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded Push.Apple.com to 8.8.4.4
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: query[AAAA] time.Apple.com.hyrule.home from 10.0.1.14
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: config time.Apple.com.hyrule.home is NXDOMAIN-IPv6
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: query[A] time.Apple.com.hyrule.home from 10.0.1.14
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: config time.Apple.com.hyrule.home is NXDOMAIN-IPv4
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: query[AAAA] time.Apple.com from 10.0.1.14
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.Apple.com to 8.8.4.4
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.Apple.com to 8.8.8.8
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.Apple.com to 23.226.230.72
Nov  2 17:29:24 raspberrypi dnsmasq[2067]: forwarded time.Apple.com to 173.230.156.28

編集:パイをデフォルトのラズビアンにリセットすることにしたのは、多くの実験を行っていたため、他のものは削除したかったからです。変数。私は先に進んでロードしました minibian そしてdnsmasqをインストールしました。私はresolv.confを次のように編集しました(そのファイルが実際に何をしているかを指摘してくれた@Chuck Kollarsに感謝します)。

domain hyrule.home
search hyrule.home
nameserver XXX.XXX.X.4

そして、これらのネームサーバーにクエリを実行するようにdnsmasq.confを設定するだけです(デフォルトではhostsファイルを読み取ります)。

server=/localnet/192.168.0.1 <--- still have the feeling this isn't right
## DNS SERVERS
#openNic california
server=173.230.156.28

#openNic Washington
server=23.226.230.72

私のホストファイルでは、エイリアスを @ Chuck Kollars のように設定し、

<ipv4>   <subdomain>  <fqdn>

この時点ではまだ問題があったので、「tower」などにpingを実行すると、dnsmasqが「tower.hsdn.comcast.com」などを解決して外部ネームサーバーに転送しようとすることに気付きました。内部で解決されなかったためです。 comcastの部分は見覚えがあるように見えたので、私の airport Utility(5.6.1) の[インターネット]タブの[TCP/IP]で、同じアドレスが[ドメイン名]フィールドに入力されました(ゴーストのように)継承)なので、これもhyrule.homeに変更しましたが、すべて期待どおりに機能しました。

そのドメイン名がルーターに含まれている必要がある理由と、resolv.confファイルからドメイン名が尊重されなかった理由についてはまだ混乱しています...

2
BrDaHa

システムが誤動作する理由の詳細をすべて完全に理解することはできませんが、有益に確認できる次の提案があります。

1)Dnsmasqは、同じマシンで発信されたクエリに対してのみ/etc/resolv.confを使用します。他のすべてのマシンからのクエリはDnsmasqに直接送信されます。したがって、/ etc/resolve.confには通常、そのマシン上のアプリから発信されたリクエストをDnsmasqに取り込むために、ネームサーバー127.0.0.1へのポインターが含まれています。実際、Dnsmasqの起動時に/etc/resolv.confが上書きされることさえあります。 /etc/resolv.confに操作手順を入れることには十分注意してください。特に、「domain hyrule.home」が、一部のホストに対して行っていると思われることを行っているとは思いません。

2)ローカルのshortnameを処理する別の方法(私が行う方法)は、各ローカルマシンのshortnameとlongnameを/に明示的にboth入れることです。 etc/hosts(ソフトウェアメカニズムに依存するのではなく)、次のようなもの:

XXX.XXX.X.1   router router.hynet.home
XXX.XXX.X.3   tower tower.hynet.home
XXX.XXX.X.4   pi pi.hynet.home

3)「raspberrypi」を「localhost」と同等にする定義が何のためにあるのかよくわかりません。このような同等性は、間違ったシステムに対して誤ったタイミングで誤った応答を生成することがあり、その結果、一部のクエリが本来の場所ではなく、ラウンドファイルに移動することを恐れます。私のシステムはそのような定義なしで動作します。

4)さまざまなログを明確にするために、「localnet」の定義も必要な場合があります(「ip6-localnet」の定義に類似)。あなたはこれが/ etc/networksに行くことを期待するでしょう...そして実際それはうまくいくかもしれません。ただし、Dnsmasq自体は/ etc/hostsのみを参照するため、次のようなネットワーク用であっても、代わりに/ etc/hostsに定義を配置する必要がある場合があります。

XXX.XXX.X.0 localnet hynet.home
3
Chuck Kollars