5 votes

Openconnect dans network-manager ne met pas à jour resolv.conf

Je viens de mettre à jour d'ubuntu 19.10 à ubuntu 20.04. Maintenant, mon resolve.conf n'est plus mis à jour lorsque je me connecte au vpn avec le truc openconnect dans le gestionnaire réseau.

Cela fonctionne correctement :

sudo openconnect -u user https://server

Je vois que le resolv.conf est modifié. Donc c'est un problème du client.

dans /etc/NetworkManager/NetworkManager.conf j'ai mis dns=none pour utiliser le resolv.conf

/etc/resolv.conf est un fichier et n'est pas un lien symbolique vers /run/systemd/resolve/resolv.conf. J'ai vérifié si /run/systemd/resolve/resolv.conf était mis à jour par quoi que ce soit, mais cela ne se met pas à jour non plus.

Voici ce qui est affiché dans syslog :

NetworkManager[62862]:   [1590658767.3686] vpn-connection[,"vpn",0]: Connexion VPN : (ConnectInteractive) réponse reçue
NetworkManager[62862]:   [1590658767.3714] vpn-connection[,"vpn",0]: Plugin VPN : état changé : démarrage (3)
openconnect[63139]: Connecté à somehostip:443
openconnect[63139]: Négociation SSL avec somehostip
openconnect[63139]: Échec de vérification du certificat serveur : signataire non trouvé
openconnect[63139]: Connecté à HTTPS sur somehostip
openconnect[63139]: Réponse CONNECT reçue : HTTP/1.1 200 OK
openconnect[63139]: CSTP connecté. DPD 30, Keepalive 20
openconnect[63139]: Connecté en tant que 10.0.0.2 + ipv6addresswashere, utilisant SSL, avec DTLS en cours
openconnect[63139]: Connexion DTLS établie (utilisation de GnuTLS). Suite de chiffrement (DTLS0.9)-(DHE-CUSTOM)-(AES-256-CBC)-(SHA1).
openconnect[63139]: SIOCSIFMTU : Opération non permise
NetworkManager[62862]:   [1590658768.5289] vpn-connection[,"vpn",0]: Connexion VPN : (Obtention de la configuration IP) réponse reçue.
NetworkManager[62862]:   [1590658768.5320] vpn-connection[,"vpn",14:(vpn0)]: Connexion VPN : (Obtention de la configuration IP4) réponse reçue
NetworkManager[62862]:   [1590658768.5362] vpn-connection[,"vpn",14:(vpn0)]: Connexion VPN : (Obtention de la configuration IP6) réponse reçue
NetworkManager[62862]:   [1590658768.5373] vpn-connection[,"vpn",14:(vpn0)]: Données : Passerelle VPN : somehostip
NetworkManager[62862]:   [1590658768.5374] vpn-connection[,"vpn",14:(vpn0)]: Données : Périphérique Tunnel : "vpn0"
NetworkManager[62862]:   [1590658768.5374] vpn-connection[,"vpn",14:(vpn0)]: Données : Configuration IPv4 :
NetworkManager[62862]:   [1590658768.5375] vpn-connection[,"vpn",14:(vpn0)]: Données :   Adresse Interne : 10.0.0.2
NetworkManager[62862]:   [1590658768.5375] vpn-connection[,"vpn",14:(vpn0)]: Données :   Préfixe Interne : 19
NetworkManager[62862]:   [1590658768.5375] vpn-connection[,"vpn",14:(vpn0)]: Données :   Adresse Point-à-Point Interne : 10.0.0.55
NetworkManager[62862]:   [1590658768.5375] vpn-connection[,"vpn",14:(vpn0)]: Données :   Route Statique : 0.0.0.0/0   Prochain Saut : 0.0.0.0
NetworkManager[62862]:   [1590658768.5376] vpn-connection[,"vpn",14:(vpn0)]: Données :   Route Statique : 10.0.0.0/19   Prochain Saut : 0.0.0.0
NetworkManager[62862]:   [1590658768.5376] vpn-connection[,"vpn",14:(vpn0)]: Données :   Domaine DNS : 'xxx.com'  
NetworkManager[62862]:   [1590658768.5376] vpn-connection[,"vpn",14:(vpn0)]: Données : Configuration IPv6 :
NetworkManager[62862]:   [1590658768.5377] vpn-connection[,"vpn",14:(vpn0)]: Données :   Adresse Interne : ipv6addresswashere
NetworkManager[62862]:   [1590658768.5377] vpn-connection[,"vpn",14:(vpn0)]: Données :   Préfixe Interne : 64
NetworkManager[62862]:   [1590658768.5378] vpn-connection[,"vpn",14:(vpn0)]: Données :   Adresse Point-à-Point Interne : ipv6addresswashere
NetworkManager[62862]:   [1590658768.5378] vpn-connection[,"vpn",14:(vpn0)]: Données :   Route Statique : ::/0   Prochain Saut : ::
NetworkManager[62862]:   [1590658768.5378] vpn-connection[,"vpn",14:(vpn0)]: Données :   Route Statique : ipv6addresswashere   Prochain Saut : ::
NetworkManager[62862]:   [1590658768.5378] vpn-connection[,"vpn",14:(vpn0)]: Données :   Domaine DNS : 'xxx.com'  
NetworkManager[62862]:   [1590658768.5380] vpn-connection[,"vpn",14:(vpn0)]: Plugin VPN : état changé : démarré (4)
NetworkManager[62862]:   [1590658768.5534] vpn-connection[,"vpn",14:(vpn0)]: Connexion VPN : (Obtention de la configuration IP) terminée
NetworkManager[62862]:   [1590658768.5548] périphérique (vpn0): changement d'état : non géré -> non disponible (raison 'connexion-supp') , state interf.-système: 'externe')
NetworkManager[62862]:   [1590658768.5600] périphérique (vpn0): changement d'état : non disponible -> déconnecté (raison 'connexion-supp') , state interf.-système: 'externe')
NetworkManager[62862]:   [1590658768.5615] périphérique (vpn0): Activation: démarrage de la connexion 'vpn0' (xxx)
NetworkManager[62862]:   [1590658768.5616] manager: L'état de NetworkManager est maintenant CONNECTÉ_SITE
NetworkManager[62862]:   [1590658768.5629] manager: L'état de NetworkManager est maintenant CONNECTÉ_LOCAL
NetworkManager[62862]:   [1590658768.5632] manager: L'état de NetworkManager est maintenant CONNECTÉ_SITE
NetworkManager[62862]:   [1590658768.5633] policy: définir 'vpn' (vpn0) par défaut pour le routage et le DNS IPv4

J'ai regardé dans un ancien syslog d'avant la mise à niveau et il y a des lignes dedans comme :

NetworkManager[1245]:   [1590386910.5867] vpn-connection[,"vpn",14:(vpn0)]: Données :   DNS Interne : 10.0.0.1
NetworkManager[1245]:   [1590386910.5867] vpn-connection[,"vpn",14:(vpn0)]: Données :   DNS Interne : 10.0.0.2

Donc ceux-ci manquent maintenant. Quelqu'un a une idée de comment résoudre ce problème ?

J'ai essayé avec dns=auto pour utiliser systemd-resolve mais j'ai le même problème. systemd-resolve --status ne signale aucun serveur DNS pour la connexion vpn, ainsi que sur /run/systemd/resolve/resolv.conf.

Remarque : J'ai anonymisé toutes les adresses IP et les noms d'hôtes, etc.

5voto

salman Points 358

J'ai trouvé la solution. En gros, si le serveur de noms de domaine envoie des serveurs DNS IPv6 pour chercher des adresses IPv4, les choses ne se passent pas bien. Openconnect mettra des adresses IPv6 dans INTERNAL_IP4_DNS et le "network-manager-openconnect" ne s'y attend pas, traite toute la variable (et en gros tous les serveurs DNS) comme des déchets et continue. J'ai compilé ma propre version de network-manager-openconnect à partir du master qui a une correction pour cela, et cela fonctionne bien.

Je ne sais pas pourquoi j'ai ce problème après la mise à niveau. Peut-être quelque chose a-t-il changé dans openconnect ? Ou peut-être que le jour de ma mise à niveau, l'administrateur réseau de mon entreprise a ajouté un serveur DNS ipv6 ? (Je pense que c'est peu probable...)

Si vous utilisez network-manager-openconnect 1.2.6 ou 1.2.7-dev (ou peut-être même une version inférieure, qui ne contient pas la correction), vous pouvez compiler votre propre version à partir du master comme suit:

sudo apt-get build-dep network-manager-openconnect
mkdir ~/network-manager-openconnect_build
cd ~/network-manager-openconnect_build
git clone https://gitlab.gnome.org/GNOME/NetworkManager-openconnect.git
cd NetworkManager-openconnect
./autogen.sh
make
sudo mv /usr/lib/NetworkManager/nm-openconnect-service-openconnect-helper /usr/lib/NetworkManager/nm-openconnect-service-openconnect-helper_bak
sudo cp src/nm-openconnect-service-openconnect-helper /usr/lib/NetworkManager/nm-openconnect-service-openconnect-helper

Remarque : J'ai seulement copié le fichier d'aide. En théorie, cela pourrait causer des problèmes d'incompatibilité. Je n'ai eu aucun problème avec ça. Mais si vous en avez, vous pouvez essayer de copier également le fichier principal depuis src.

Si vous le souhaitez, vous pouvez utiliser ce qui suit pour avoir des journaux supplémentaires pour le module vpn afin de voir dans le syslog si openconnect a reçu des données dns :

sudo nmcli general logging level KEEP domains VPN_PLUGIN:TRACE

Si vous voyez que INTERNAL_IP4_DNS est défini avec à la fois des adresses ipv4 et ipv6, et que vous utilisez la version du network manager openconnect mentionnée ci-dessus, vous êtes affecté par ce bug.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X