J'utilise un MacBook Pro avec OS X Mavericks 10.9.2. Il se connecte à Internet via un dongle USB 3G, et je veux partager cette connexion Internet via le wifi. Cependant, sur les appareils qui se connectent au point d'accès wifi créé, la recherche DNS ne fonctionne pas (bien que je puisse faire un ping à 8.8.8.8 très bien). Si je configure statiquement les appareils pour qu'ils utilisent 8.8.8.8, tout fonctionne, mais ce n'est pas le cas de tous les appareils (ou seulement si vous souhaitez également configurer une IP et une passerelle statiques).
Le problème semble être que OS X configure bootp (le serveur DHCP) pour distribuer une adresse de serveur DNS du MacBook lui-même :
$ cat /etc/bootp.list
...
<key>dhcp_domain_name_server</key>
<array>
<string>192.168.2.1</string>
</array>
...
Il s'agit en effet de l'adresse IP de la machine elle-même :
$ ifconfig
...
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 02:26:bb:66:19:64
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
...
Et c'est ce que les clients reçoivent dans la réponse DHCP :
$ sudo tcpdump -vv
15:26:07.265635 IP (tos 0x0, ttl 255, id 9846, offset 0, flags [none], proto UDP (17), length 328)
192.168.2.1.bootps > 192.168.2.2.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x4e0988af, Flags [none] (0x0000)
Your-IP 192.168.2.2
Server-IP 192.168.2.1
Client-Ethernet-Address 10:bf:48:cc:49:7d (oui Unknown)
sname "ip-77-24-232-37.web.vodafone.de"
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: ACK
Server-ID Option 54, length 4: 192.168.2.1
Lease-Time Option 51, length 4: 85536
Subnet-Mask Option 1, length 4: 255.255.255.0
Default-Gateway Option 3, length 4: 192.168.2.1
Domain-Name-Server Option 6, length 4: 192.168.2.1
Cela ne poserait pas de problème si cela fonctionnait réellement comme l'a fait la Commission européenne. écrit ici c'est-à-dire qu'OS X exécute un bind ( named
), qui se contente de transmettre les demandes et les réponses DNS aux serveurs du fournisseur d'accès.
Cependant... utiliser tcpdump
Je vois que le client reçoit une réponse d'erreur de ses recherches DNS :
$ sudo tcpdump
15:23:33.181447 IP 192.168.2.2.57291 > 192.168.2.1.domain: 32713+ A? google.com. (28)
15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36
En effet, aucun named
est en cours d'exécution, et il ne semble même pas être installé :
$ ps aux | grep named
thomas 2175 0.0 0.0 2423368 188 s000 R+ 3:14pm 0:00.00 grep named
$ which named
$
Rien d'autre n'écoute sur le port UDP 53 non plus, bien qu'il y ait une chose appelée mDNSResponder sur 5353 :
$ sudo lsof -i -P | grep 53
mDNSRespo 47 _mdnsresponder 8u IPv4 0x4dcb7c0f075daa1d 0t0 UDP *:5353
mDNSRespo 47 _mdnsresponder 9u IPv6 0x4dcb7c0f075da835 0t0 UDP *:5353
natpmpd 1664 root 4u IPv4 0x4dcb7c0f064b6f15 0t0 UDP 192.168.2.1:5351
Je vois maintenant deux façons de résoudre ce problème, mais aucune n'est très pratique :
- Exécutez un serveur DNS sur le port UDP 53. Malheureusement, aucun n'est installé.
- Demander à DHCP de distribuer une adresse de serveur DNS qui fonctionne réellement, comme 8.8.8.8. Malheureusement, l'adresse
InternetSharing
l'application écrase/etc/bootp.plist
chaque fois que le partage d'internet est activé, donc même si j'ajoutais une adresse IP à cet endroit et même si cela fonctionnait, cela ne fonctionnerait pas éternellement.
Mais quelque chose me dit que cela devrait (et c'est généralement le cas) fonctionner correctement dès la sortie de la boîte... Qu'est-ce qui m'échappe ?