NetworkManagerのdnsmasqが/ etc / hostsを使用するように設定します


22

DNSMASQをインストールしましたが、53ポートがビジーであったため開始しませんでした。

ubuntuにはすでにdnsmasqパッケージがあり、動作していることがわかりました。

今の問題は...私はそれを通して/ etc / hostsのホストを解決できるようにしたいだけです

すなわち:nslookup somehostonlan localhost / etc / hostsファイルから取得された特定のIPに解決されます。

しかし、これは起こっていません。

どうして?ところで、キャッシングDNSサーバーとしては問題なく動作しています。/ etc / hostsファイルからホストを解決したいだけです

回答:


22

インターネットを高速化するために、ubuntu 12.04はNetworkManagerにプラグインを追加して、dnsエントリをキャッシュするローカルDNSサーバーであるdnsmasqを起動しました。問題は、プラグインが--no-hosts文字列をハードコーディングしていることです。

したがって、1つの解決策は、NetworkManager構成ファイルでプラグインをロードする行をコメント化して、NetworkManagerを再起動することです。

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

別の解決策は、dnsmasqをラップして、不要な引数を除外することです。

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

バグに影響があるとマークしください。

システムファイルにパッチを当てない別のソリューション

cat /etc/NetworkManager/dnsmasq.d/hosts.conf 

addn-hosts=/etc/hosts

7

このバグは今でも私に影響を及ぼしました(Ubuntu 14.04)。

最後に、この行「addn-hosts = / etc / hosts」をNewworkmanagerパッケージのdnsmasq構成ファイルに追加するだけの解決策を見つけました。

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

アイデアは、追加のホストファイルとして/ etc / hostsを追加することです。

解決策を見つけられたとしても、バイナリファイル/ usr / sbin / NetworkManagerのハードコードされたオプション「--no-hosts」は私を失望させます。


7

2015年8月現在、他の回答は時代遅れです。

簡単な答え

  1. 作成します/etc/NetworkManager/dnsmasq.d/hosts.conf
  2. そのような行を入れてくださいaddress=/whatever/1.2.3.4ドキュメントを参照してください (を探してください--address)。ワイルドカードが可能ですaddress/.whatever./1.2.3.4
  3. 殺すdnsmasqバグ)。
  4. 再起動します$ service network-manager restart

1

dnsmasqは自動的に/etc/hostsファイルを使用する必要があります。これは、-hコマンドラインオプションまたはno-hosts構成オプションによって無効にできます。どちらもデフォルト構成に設定されるとは思わないでしょう。

dnsmasqにそのhostsファイルの再ロードを強制してみてください。(構成ファイルを変更するには、再起動が必要です)。これらのコマンドのいずれかが機能するはずです。

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

no-hosts指定したシステムで作業している場合は、addn-hostsオプションを使用してオーバーライドできます。通常、これは追加のファイルを/etc/hosts形式で読み取るために使用されます。これは、DNSに提供したいが/etc/hostsファイルには含めたくない追加のホストデータを指定するために使用できます。これを使用して、パッケージマネージャーおよび関連ツールが管理できるようにし、/etc/hosts追加のホストデータを代替ファイルで提供できます。


/etc/dnsmasq.confにはすべてのオプションがコメント化されています。リロードが
役に立た

私は何をしたのか分かりません。それは今働いているようです
-bakytn

3
あなたが実際に答えを知らないのに、なぜあなたはこれに答えますか?「デフォルト構成で設定されることを期待しない」という事実は、実際にはNetworkMangerのdnsmasqに設定され、ハードコーディングされているため、そうではありません。
ジャスティン・ブサー

dnsmasqのは、構成ファイル内の負荷変動への順序で再起動する必要があります
txwikinger

@txwikinger シグナルをdnsmasq受信すると、多くのオプションファイルが再読み込みされますHUP。これには/etc/hosts/etc/ethersファイルの両方が含まれます。再起動時間は十分に速いため、クライアントが応答しないことはまれです。
BillThor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.