J'ai installé pdnsd: il fonctionne correctement.
Mon problème est qu'il ignore le serveur opendns que j'ai fourni dans la section "server" de pdnsd.conf intitulée "resolvconf": au lieu de cela, il utilise le serveur fourni par le dhcp.
D'un autre côté, si je change le nom de la section serveur en autre chose, alors pdnsd utilise correctement le serveur opendns mais resolvconf a mis le dns fourni par dhcp dans resolv.conf, donc pdnsd est contourné.
Donc, ma question est: comment puis-je avoir resolvconf défini resolv.conf sur 127.0.0.1 ET pdnsd utiliser le serveur opendns lorsque la demande n'est pas mise en cache?
Une solution de contournement que j'ai trouvée consiste à définir, dans le gestionnaire de réseau, "DHCP (adresse uniquement)" pour la connexion, mais le problème est qu'il doit être défini pour chaque connexion différente: cela signifie que si vous utilisez un ordinateur portable, vous devez changez-le pour chaque wifi auquel vous vous connectez!
Je pense avoir trouvé la solution: ajouter
supersede domain-name-servers 127.0.0.1;
à /etc/dhcp/dhclient.conf
Fait le travail.
Alors peut-être que cela peut être utile pour quelqu'un d'autre si j'écris mon petit guide pour faire fonctionner pdnsd dans ubuntu avec un serveur de nom de domaine fixe (disons, opendns), quelle que soit la connexion utilisée.
/etc/NetworkManager/NetworkManager.conf
et commentant #dns=dnsmasq
Forcer le gestionnaire de réseau à définir le DNS sur 127.0.0.1 pour chaque connexion en ajoutant
supersede domain-name-servers 127.0.0.1;
à /etc/dhcp/dhclient.conf
/etc/default/pdnsd
Et mettre START_DAEMON=yes
Configurez pdnsd pour utiliser vos DNS préférés. Par exemple, pour utiliser opendns votre /etc/pdnsd
devrait ressembler à
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";
}
Redémarrez pdnsd et la connexion réseau:
Sudo service pdnsd restart
Sudo invoke-rc.d network-manager restart