3 votes

Impossible d'envoyer un ping à l'hôte local après avoir migré vers un nouveau Mac

Après avoir migré vers un nouveau MacBook Pro, je ne peux plus faire de ping. localhost .

J'ai déjà essayé de changer mon /etc/hosts alors qu'il l'était déjà auparavant.

$ host localhost
localhost has address 127.0.0.1
localhost has IPv6 address ::1

$ ping localhost.
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.098 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.081 ms

Pinging localhost. fonctionne d'une manière ou d'une autre, mais je ne comprends pas pourquoi.

Si je redémarre le système, le problème n'est pas résolu. localhost encore, mais si je ping localhost. puis ping localhost commence à fonctionner. Je ne sais pas si cela peut aider quelqu'un qui a le même problème.

Quel est le problème ?

$ ping localhost
ping: cannot resolve localhost: Unknown host
$ ping localhost.
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.072 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.077 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.073 ms
^C
--- localhost ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.072/0.076/0.084/0.005 ms
$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.082 ms
^C
--- localhost ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss

plus de résultats

MBPdeFrancisco:~ francisco$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: fe80:1::1
MBPdeFrancisco:~ francisco$ LC_ALL=C cat -vet /etc/hosts
##$
##$
# Host Database$
#$
# localhost is used to configure the loopback interface$
# when the system is booting. Do not change this entry.$
##$
127.0.0.1 localhostM-bM-^@M-($
255.255.255.255 broadcasthostM-bM-^@M-($
::1 localhostM-bM-^@M-($
fe80::1%lo0 localhost

MBPdeFrancisco:~ francisco$ cat /etc/resolv.conf
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
domain lan
nameserver 2001:8a0:ddce:7401:9e97:26ff:fedb:6214
nameserver 192.168.1.254

2voto

Gordon Davisson Points 30215

Votre fichier /etc/hosts est corrompu ; pour une raison quelconque, il a unicode LINE SEPARATOR personnages ajouté à plusieurs lignes (le " M-bM-^@M-( " dans LC_ALL=C cat -vet ), y compris l'une d'entre elles pour le programme localhost . Le résolveur de MacOS traitera ce caractère bizarre comme faisant partie du nom d'hôte, et donc, si vous parvenez à faire un ping à l'adresse localhost<LINE SEPARATOR> il se résoudra à 127.0.0.1 sans problème. En clair localhost ? Pas vraiment.

Je ne sais pas comment ces caractères bizarres ont pu être ajoutés ; avez-vous essayé d'éditer le fichier avec un éditeur sophistiqué qui a pensé que ce serait une bonne idée d'utiliser les derniers caractères de formatage à la mode, plutôt que de s'en tenir à ce qui fonctionne ? Si c'est le cas, n'utilisez pas cet éditeur pour des fichiers de configuration de type Unix (ou scripts, ou...). Je recommande BBEdit même si vous ne l'achetez pas, il vous permettra de faire les choses de base dans son mode démo gratuit.

Quant à la façon de le réparer... Tout d'abord, faites une copie de sauvegarde au cas où les choses tourneraient mal et seraient encore plus compliquées qu'elles ne le sont actuellement. Ensuite, exécutez la commande :

sudo perl -pi -e 's/[^[:ascii:]]//g' /etc/hosts

Cela devrait purge tous les caractères unicode bizarres du fichier. Ensuite, essayez l'option dscacheutil vous devriez obtenir quelque chose comme ceci :

$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: ::1
ipv6_address: fe80:1::1

name: localhost
ip_address: 127.0.0.1

P.s. Pour savoir pourquoi quelqu'un a pensé que le LINE SEPARATOR était une bonne idée, voir le toujours pertinent XKCD y Le discours de Jeff Atwood sur "Le grand schisme Newline" (en anglais) .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X