dnsmasqを(再)起動するたび/etc/resolv.conf
にnameserver 127.0.0.1 ...
。
ただし、マシンがローカルDNSサービスを使用する必要はありません。 (なぜかと聞かないでください。全体的な環境がこんな感じです...)
実際にdnsmasqにアクセスするのをどのように妨げますか/etc/resolv.conf
?
削除resolvconf
もchattr +i /etc/resolv.conf
オプションではありません。
答え1
dnsmasq自体は、設定ファイルが存在し、dnsmasq -d -C <yourconfig>
表示される内容から手動で起動した場合、resolv.confを変更しません。
この動作は、Debian や Ubuntu システムなどのディストリビューションの systemd デバイスで発生します。
dnsmasqを停止してこれら2行を編集してコメントアウトしますsudo systemctl stop dnsmasq
。それ以外の場合は、変更された /etc/resolv.conf が復元されないためです。/etc/systemd/system/multi-user.target.wants/dnsmasq.service
#ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf
#ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf
実装するsudo systemctl daemon-reload
後で dnsmasq を起動でき、/etc/resolv.conf ファイルは dnsmasq によって変更されません。
答え2
dnsmasq
他のresolv.conf
ファイルを使用できるため、/etc/resolv.conf
127.0.0.1を指すと、dnsmasq
実際には別のファイルを使用しresolv.conf
て/etc/resolv.conf
同じままです。
ファイルに次の行を追加しますdnsmasq.conf
。
resolv-file=/etc/dnsmasq.d/dnsmasq-resolv.conf
/etc/dnsmasq.d/dnsmasq-resolv.conf
次に、次のようにファイルを作成します。
nameserver 208.67.222.222
nameserver 208.67.220.220
答え3
systemctl disable resolvconf.service
systemctl stop resolvconf.service
rm -f /etc/resolv.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf # or any other IP you want to use as DNS server
systemctl restart dnsmasq.service # just for testing
cat /etc/resolv.conf # just to verify
コンピュータはDHCPを介してDNSサーバーアドレスを取得できませんが、問題は解決します。
答え4
私は同じ問題に直面しました。 Debian Bullseyeでresolvconfがインストールされている場合(私の記憶が正しい場合はデフォルトでは)、dnsmasqはこのように動作します。ファイルを編集し、次の行のコメントを削除する必要があります/etc/default/dsnmasq
。
# If the resolvconf package is installed, dnsmasq will tell resolvconf
# to use dnsmasq under 127.0.0.1 as the system's default resolver.
# Uncommenting this line inhibits this behaviour.
#DNSMASQ_EXCEPT="lo"
入力する
# If the resolvconf package is installed, dnsmasq will tell resolvconf
# to use dnsmasq under 127.0.0.1 as the system's default resolver.
# Uncommenting this line inhibits this behaviour.
DNSMASQ_EXCEPT="lo"
これは私にとって効果的です。