logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-08-2024 18:42:50

anguille_sous_roche
Membre
Lieu : Paris
Distrib. : Bookworm
Noyau : 6.1.0-7-amd64
(G)UI : GNOME
Inscription : 16-02-2013

NetworkManager + dnsmasq se lie à la mauvaise interface

Bonjour,
Lorsque je configure un DNS sur localhost avec NetworkManager, en utilisant le plugin dnsmasq, dnsmasq se lie à la mauvaise interface.
Dans ma configuration Home.nmconnection, j'utilise le résolveur DNS dnscrypt-proxy qui écoute sur 127.0.2.1:53, mais je n'utilise ce résolveur qu'avec cette connexion.
Avant, lorsque j'utilisais NetworkManager sans dnsmasq, tout fonctionnait très bien  :


cat /etc/NetworkManager/system-connections/Home.nmconnection


[connection]
.....
[ipv4]
address1=192.168.1.10/24,192.168.1.1
dns=127.0.2.1;
ignore-auto-dns=true
method=manual
.....
 




Mais maintenant, j'ai besoin de dnsmasq pour une adresse wildcard /local.site/127.0.0.1.
j'ai donc fais :

cat /etc/NetworkManager/conf.d/00-use-dnsmasq.conf


# This enabled the dnsmasq plugin.
[main]
dns=dnsmasq
 



et

cat /etc/NetworkManager/dnsmasq.d/01-dnsmasq.conf



address=/local.host/127.0.0.1
 



Et maintenant, je ne peux plus utiliser Home.nmconnection avec dns=127.0.2.1 car dnsmasq (127.0.0.1) essaie de se connecter à dnscrypt-proxy (127.0.2.1) sur l'interface enp6s0 au lieu de l'interface lo.
NetworkManager lance dnsmasq avec /usr/sbin/dnsmasq --enable-dbus=org.freedesktop.NetworkManager.dnsmasq.

dbus-monitor --system "interface='org.freedesktop.NetworkManager.dnsmasq'"


method call time=1723051681.108218 sender=:1.571 -> destination=:1.573 serial=1778 path=/uk/org/thekelleys/dnsmasq; interface=org.freedesktop.NetworkManager.dnsmasq; member=SetServersEx
   array [
   ]
method call time=1723051681.206464 sender=:1.571 -> destination=:1.573 serial=1823 path=/uk/org/thekelleys/dnsmasq; interface=org.freedesktop.NetworkManager.dnsmasq; member=SetServersEx
   array [
      array [
         string "127.0.2.1@enp6s0"
      ]
      array [
         string "127.0.2.1@enp6s0"
         string "1.168.192.in-addr.arpa"
      ]
   ]
 


Je ne sais pas comment changer ce @enp6s0.
Je n'ai trouvé aucun moyen d'indiquer à NetworkManager l'interface à utiliser pour le DNS. Je peux ajouter server=127.0.2.1 à 01-dnsmasq.conf, mais dans ce cas, le résolveur DNS sera toujours 127.0.2.1, quel que soit le profil de connexion sélectionné, ce qui est très gênant.
Une idée ?

Dernière modification par anguille_sous_roche (08-08-2024 07:07:12)

Hors ligne

#2 10-08-2024 09:04:18

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : NetworkManager + dnsmasq se lie à la mauvaise interface

Salux,
As-tu essayé d'ajouter à 01-dnsmasq.conf

interface=lo

?


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

Hors ligne

#3 10-08-2024 13:23:12

anguille_sous_roche
Membre
Lieu : Paris
Distrib. : Bookworm
Noyau : 6.1.0-7-amd64
(G)UI : GNOME
Inscription : 16-02-2013

Re : NetworkManager + dnsmasq se lie à la mauvaise interface

Salut,
Merci d'avoir répondu.
Je viens d'essayer et ça donne le même résultat.  Dnsmasq continu d’envoyer les requêtes dns sur l’interface enp6s0 à 127.0.2.1.

Hors ligne

#4 10-08-2024 13:53:30

agp91
Membre
Distrib. : GNU Debian stable
(G)UI : xfce
Inscription : 12-02-2023

Re : NetworkManager + dnsmasq se lie à la mauvaise interface

Et en ajoutant

except-interface=enp6s0

?
[edit]Je m'embrouille et je n'ai pas quoi de tester sous la main... Je ne peu t'aider plus[/edit]

Dernière modification par agp91 (10-08-2024 14:38:56)


La liberté est gratuite et accessible à tous. Sinon ça n'en est pas.

Hors ligne

#5 10-08-2024 15:08:12

anguille_sous_roche
Membre
Lieu : Paris
Distrib. : Bookworm
Noyau : 6.1.0-7-amd64
(G)UI : GNOME
Inscription : 16-02-2013

Re : NetworkManager + dnsmasq se lie à la mauvaise interface

Je viens d'essayer avec except-interface=enp6s0 et toujours pareil.
J'ai essayé aussi avec address=/localhost/127.0.0.1 mais ça n'a rien changé.
Mais je pense pas que address= soit une bonne piste car address=/domaine/ip renverra toujours ip pour tous les noms d’hôte du domaine et ce n'est pas directement lié à mon problème.
Par exemple avec address=127.0.0.1 (donc pour tous les noms d'hôte) cela renverra 127.0.0.1

cat /etc/NetworkManager/dnsmasq.d/01-dnsmasq.conf
 


address=127.0.0.1
 



host debian-facile.org


debian-facile.org has address 127.0.0.1



Le vrai problème vient du fait que NetworkManager ne permet pas de spécifier l'interface à utiliser pour se connecter au DNS.

Par défaut (sans le plugin dnsmasq) NetworkManager est assez intelligent pour comprendre que 127.0.2.1 est sur localhost et réussira à se connecter au resolver DNS local.
Mais dès que dns=dnsmasq alors il part du principe que l'interface pour contacter le DNS est la même que celle de la connexion et envoie adresseDNS@enp6s0 sur dbus à dnsmasq.
Je ne pense pas que les option de configuration de dnsmasq aient pour objectif de gérer les erreurs de NetworkManager.

En désespoir de cause j'ai tenté un script dans /etc/NetworkManager/dispatcher.d/99-dnsmasq-dbus-fix


if [[ "$IP4_NAMESERVERS" == "127.0.2.1" ]] ; then
    gdbus call \
      --system \
      --dest=org.freedesktop.NetworkManager.dnsmasq \
      --object-path /uk/org/thekelleys/dnsmasq \
      --method org.freedesktop.NetworkManager.dnsmasq.SetServersEx \
      '[]'
   
    gdbus call \
      --system \
      --dest=org.freedesktop.NetworkManager.dnsmasq \
      --object-path /uk/org/thekelleys/dnsmasq \
      --method org.freedesktop.NetworkManager.dnsmasq.SetServersEx \
      '[["127.0.2.1@lo"], ["127.0.2.1@lo", "1.168.192.in-addr.arpa"]]'


fi
 



En gros ça renvoie les bonnes valeurs d'interface de DNS sur dbus à dnsmasq (juste après que NetworkManager ait envoyé les mauvaises valeurs) à chaque fois qu'un profil de connection avec pour DNS 127.0.2.1 est lancé.
Malheureusement, ce n'est qu'une rustine,  et ça ne résiste pas à une connection puis déconnexion à un VPN par exemple (dans ce cas le DNS revient à 127.0.2.1@enp6s0 lors de la déconnexion du VPN).

Hors ligne

Pied de page des forums