web-dev-qa-db-fra.com

Chaque fois que je change de réseau, le cache DNS a une mauvaise adresse IP. Comment réparer automatiquement à chaque fois?

Le site Web des employés de mon entreprise peut être consulté:

  • du monde extérieur via son adresse IP 1.2.3.4 ou son nom employees.corp.com
  • depuis le réseau de l'entreprise via son adresse IP 192.168.1.2 ou son nom employees.corp.com

Problème: après un trajet domicile-travail, l'accès au site Web employees.corp.com depuis l'entreprise échoue souvent.

  • Lorsque cela échoue, si je lance ping employees.corp.com, il indique 64 bytes from w91284.telco.com (1.2.3.4): icmp_seq=1 ttl=255 time=2.08 ms.
  • Je suis la seule personne avec ce problème. Tous les autres employés parcourent employees.corp.com tout le temps, à l'intérieur et à l'extérieur, sans problème. Je suis également le seul à utiliser Linux (Ubuntu 2018.04 installé à partir de zéro mais j'ai eu le même problème avec 2016.04).

J'ai trouvé deux solutions pour que cela se produise:

  • Solution de contournement A: modifiez l'URL pour remplacer employees.corp.com par 192.168.1.2
  • Solution de contournement B: Exécuter Sudo service network-manager restart

Ces deux solutions de contournement résolvent le problème momentanément, mais aucune n’est satisfaisante, car elles perdent du temps chaque jour. Quelle serait une solution permanente?

Désactiver ou raccourcir le cache DNS ralentirait l'accès à l'ensemble d'Internet, donc je préférerais qu'il soit limité à ce domaine particulier. Je suis également ouvert à des solutions complètement différentes.

3
Nicolas Raoul

Ce script systemd redémarre Network Manager lors de la reprise de la suspension.

#!/bin/sh

MYNAME=$0

restart_network() {
    /usr/bin/logger $MYNAME 'restart_network BEGIN'
    systemctl restart NetworkManager.service
    /usr/bin/logger $MYNAME 'restart_network END'
}

/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
    hibernate|suspend|pre*)
      ;;
    resume|thaw|post*)
      restart_network;;
esac

Vous devez créer ce script, appelé network-reset, avec les pouvoirs de Sudo, puis l'enregistrer dans le répertoire /lib/systemd/system-sleep. Puis marquez-le comme exécutable en utilisant:

chmod a+x /lib/systemd/system-sleep/network-reset

Les commandes logger ci-dessus vous permettent d’auditer les résultats en exécutant journalctl ou en cherchant dans /var/log/syslog.

3
WinEunuuchs2Unix

J'étais principalement satisfait de la solution WinEunuuchs2Unix, mais il échouait encore parfois pour une raison quelconque. Je devais donc redémarrer le réseau très souvent, souvent 4 fois au cours de la même séance au bureau de mon entreprise.

J'ai finalement fini par configurer ma connexion WiFi pour qu'elle utilise toujours les deux adresses DNS:

enter image description here

La connexion est parfois plus lente, mais au moins, je peux me connecter de manière fiable au site Web de l'entreprise.

0
Nicolas Raoul