web-dev-qa-db-ja.com

pdnsdサーバーの設定

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ごとに変更してください!

1
brad

私は自分自身に解決策を見つけたと思う:追加

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

  • Pdnsdをインストールする
  • /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
    
2
brad