簡単な答え

簡単な答え

DNSMASQ をインストールしましたが、53 ポートがビジー状態のため起動しませんでした。

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

問題は.../etc/hostsのホストをこれ経由で解決できるようにしたいということだ

つまり、nslookup somehostonlan localhost /etc/hosts ファイルから取得した特定の IP に解決されます。

しかし、これは起こりません。

なぜですか?ところで、キャッシュDNSサーバーとしては正常に動作しています。/etc/hostsファイルからホストを解決したいだけです。

答え1

インターネットを高速化するために、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

答え2

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

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

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

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

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

答え3

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.

答え4

dnsmasq は自動的にファイルを使用するはずです。これは、コマンド ライン オプションまたは構成オプション/etc/hostsによって無効にできます。どちらもデフォルト構成で設定されるとは考えられません。-hno-hosts

dnsmasq にホスト ファイルを強制的に再読み込みさせてみます (構成ファイルの変更には再起動が必要です)。どちらのコマンドでも機能するはずです。

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

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

関連情報