设置 pdnsd 服务器

设置 pdnsd 服务器

我安装了 pdnsd:它可以正常工作。

我的问题是,它忽略了我在 pdnsd.conf 中标记为“resolvconf”的“服务器”部分中提供的 opendns 服务器:而是使用 dhcp 提供的服务器。

另一方面,如果我将服务器部分的名称更改为其他名称,则 pdnsd 会正确使用 opendns 服务器,但 resolvconf 会将 dhcp 提供的 dns 放在 resolv.conf 中,因此 pdnsd 会被绕过。

所以,我的问题是:当请求未缓存时,如何让 resolvconf 将 resolv.conf 设置为 127.0.0.1 并且 pdnsd 使用 opendns 服务器?

我发现的一个解决方法是在网络管理器中为连接设置“DHCP(仅地址)”,但这样做的问题是必须为每个不同的连接设置它:这意味着如果您使用笔记本电脑,您必须为您连接的每个 wifi 更改它!

答案1

我想我已经找到了解决方案:添加

supersede domain-name-servers 127.0.0.1;

/etc/dhcp/dhclient.conf完成这项工作。

因此,如果我编写一个简短的指南,让 pdnsd 在具有固定(例如,opendns)域名服务器的 ubuntu 中工作,而不管使用什么连接,也许对其他人有用。

  • /etc/NetworkManager/NetworkManager.conf通过编辑和注释掉来禁用 dnsmasq#dns=dnsmasq
  • 通过添加以下代码强制网络管理器为每个连接设置 DNS 为 127.0.0.1

    supersede domain-name-servers 127.0.0.1;
    

    /etc/dhcp/dhclient.conf

  • 安装 pdnsd
  • 编辑/etc/default/pdnsd并设置START_DAEMON=yes
  • 配置 pdnsd 以使用您喜欢的 DNS。例如,要使用 opendns,您的/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
    

相关内容