dnsmasqの再起動時にresolv.confが上書きされ続け、dnsmasqが壊れる


9

私はDebian Jessieを実行していますが、dnsmasqをキャッシュDNSサーバーとして構成しようとしています。私はガイドを使用して以下を考え出しました/etc/dnsmasq.conf

listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll

やることはsudo service dnsmasq restart失敗し、それは始まりません、私に言います

Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.

わかりました、ガイドからの直接設定が失敗したのはちょっと奇妙なことです。機能するno-pollかどうかを確認するために、オプションを削除します。今回は問題なく開始されますが、DNS解決は明らかに失敗しています。関連ファイル:

/etc/resolv.conf

nameserver 127.0.0.1

/etc/resolv.dnsmasq

nameserver 8.8.8.8

/var/run/dnsmasq/resolv.conf

nameserver 127.0.0.1

3番目のファイルは、dnsmasqのライブresolv.confファイルのようです。これは、dnsmasqがすでに実行されているときにネームサーバー行を追加すると、DNS解決がすぐに機能し始めるためです。だから、それは私のを無視したように見え/etc/resolv.dnsmasqます。私も自分のネームサーバの行を追加しようとした/etc/resolv.confと削除resolv-fileにラインを/etc/dnsmasq.conf、それはあなたがやっ時に上記の見るものにすぐにoverwrittedますsudo service dnsmasq restart

dnsmasqで何が起こっているのですか?dnsmasqをキャッシュDNSサーバーとして構成しますか?


1
静的サーバーだけが必要な場合server=8.8.8.8は、dnsmasq構成を設定しませんか?
tripleee 2015年

no-poll基本的には無視するように言っていると思いresolv-fileます。起動時に、どちらのファイルが新しいかを/etc/resolv.conf取得します。そのため、それはあなたのケースになります(何かが変更されるとファイルが書き換えられるため)。
tripleee 2015年

複数のDNSサーバーを念頭に置いている場合、正しい方法がどうなるかはまだわかりませんが、あなたの発言が私の問題を解決したことを嬉しく思います。
nullUser 2015年

回答:


11

ローカルループバックインターフェイスがファイルで明示的に指定されていない場合、ローカルリゾルバーを上書きするためdnsmasqに使用resolvconfする起動スクリプトにバグがあるようです。except/etc/defaults/dnsmasq

簡単に言えば、追加できるのは...

DNSMASQ_EXCEPT=lo

/etc/defaults/dnsmasq問題を解決します。

詳細については、この質問を参照してください...

/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp


これは私の命を救った。ありがとうございました。
Ryan Bobrowski、

3

bigjoshは正しい-dnsmasqの更新があったことを除いて、最後に/etc/default/dnsmasqハッシュ解除できるオプションがあります:

IGNORE_RESOLVCONF=yes

これは、Ubuntu 16.04での複雑なセットアップでどのように機能するかです。
イコン

1
bigjoshの方法は私のために働いた。たとえ/etc/defaults/dnsmasq持っていたIGNORE_RESOLVECONF=yes、それはそれはしませんでしたこの問題を、解決するためにコメントを解除するための命令で。
andho

2

使わない

resolv-file=/etc/resolv.dnsmasq

次のように、dnsサーバーをdnsmasq.confに配置します

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

そして、dnsmasq.confに追加します

no-resolv

1

キャッシュのみのDNSサーバーだけが必要で、dnsmasqでできることは他にない場合は、どちらlwresdunboundをインストールするか、キャッシュのみのDNSサーバーを提供する標準のデフォルト構成を使用することをお勧めします。次に、/etc/resolv.conf「nameserver 127.0.0.1」を使用するように設定するだけで完了です。

これらの2つのパッケージは、/etc/resolv.confdnsmasqのように何が含まれているかをいじらないため、よりクリーンなソリューションであることがわかります。通常はresolvconfパッケージを削除することもできるので、何もいじることはありません/etc/resolv.conf

ちなみに、dnsmasqはかなり複雑になり、あまりにも多くのベルとホイッスルがあり、ほとんどの人にとってもはや痛みを引き起こしています。私の本のKISSに違反しています。


残念ながら、一部のパッケージはdnsmasq-basenetwork-managerおよびlibvirt-bin(KVMを実行している場合)などに依存しているため、常に完全に取り除くことができるとは限りません。その場合は、削除/usr/sbin/dnsmaqしてハードリンクにする/bin/trueことで、常に成功し(initスクリプトをだますため)chattr +i /usr/sbin/dnsmasq、更新をロックします。私はいくつかのラップトップでこれをしなければなりませんでした。
ミリ

+1はphilandstuff.com/2013/11/07/dnsmasq-resolvconf.htmlにも記載されています。投稿とバグレポートから5年経っても、本当に嫌な動作と痛みを引き起こし続けています...
user2480144
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.