Pdnsdをインストールしました:正常に動作しています。
私の問題は、「resolvconf」というラベルの付いたpdnsd.confの「server」セクションで指定したopendnsサーバーを無視することです。代わりに、dhcpが提供するサーバーを使用します。
一方、サーバーセクションの名前を別の名前に変更すると、pdnsdはopendnsサーバーを正しく使用しますが、resolvconfはdhcpから提供されたdnsをresolv.confに入れるため、pdnsdはバイパスされます。
だから、私の質問は次のとおりです。resolvconfでresolv.confを127.0.0.1に設定し、リクエストがキャッシュされていないときにpdnsdがopendnsサーバーを使用するにはどうすればよいですか。
私が見つけた回避策の1つは、ネットワークマネージャーで接続に「DHCP(アドレスのみ)」を設定することですが、これに関する問題は、異なる接続ごとに設定する必要があることです:これは、ラップトップを使用する必要があることを意味します接続するすべてのWi-Fiごとに変更してください!
私は自分自身に解決策を見つけたと思う:追加
supersede domain-name-servers 127.0.0.1;
to /etc/dhcp/dhclient.conf
は仕事をします。
したがって、使用する接続に関係なく、固定(たとえば、opendns)ドメインネームサーバーを使用して、ubuntuでpdnsdを動作させる短いハウツーを書くと、他の誰かに役立つ可能性があります。
/etc/NetworkManager/NetworkManager.conf
を編集し、#dns=dnsmasq
をコメントアウトしてdnsmasqを無効にしますNetwork-managerを追加して、接続ごとにDNSを127.0.0.1に設定するように強制します
supersede domain-name-servers 127.0.0.1;
/etc/dhcp/dhclient.conf
へ
/etc/default/pdnsd
を編集してSTART_DAEMON=yes
を設定しますお気に入りのDNSを使用するようにpdnsdを構成します。たとえば、opendnを使用するには、/etc/pdnsd
は次のようになります。
global {
perm_cache=16536;
cache_dir="/var/cache/pdnsd";
max_ttl=604800;
run_as="pdnsd";
paranoid=on;
status_ctl=on;
neg_rrs_pol=on;
par_queries=1;
}
server {
label="opendns";
ip="208.67.222.222","208.67.220.220";
timeout=30;
interval=30;
uptest=ping;
ping_timeout=50;
purge_cache=off;
proxy_only=on;
}
source {
ttl=86400;
owner="localhost.";
file="/etc/hosts";
}
Pdnsdとネットワーク接続を再起動します。
Sudo service pdnsd restart
Sudo invoke-rc.d network-manager restart