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
答え4
dnsmasq は自動的にファイルを使用するはずです。これは、コマンド ライン オプションまたは構成オプション/etc/hosts
によって無効にできます。どちらもデフォルト構成で設定されるとは考えられません。-h
no-hosts
dnsmasq にホスト ファイルを強制的に再読み込みさせてみます (構成ファイルの変更には再起動が必要です)。どちらのコマンドでも機能するはずです。
service dnsmasq reload
kill -HUP $(pidof dnsmasq)
指定されているシステムで作業している場合は、それを上書きするオプションをno-hosts
使用できるはずです。通常、これは、形式で追加のファイルを読み取るために使用されます。これは、DNS に提供してほしいが、ファイルには含めたくない追加のホスト データを指定するために使用できます。これは、追加のホスト データが代替ファイルで提供される間、パッケージ マネージャーと関連ツールで管理できるようにするために使用できます。addn-hosts
/etc/hosts
/etc/hosts
/etc/hosts