Internetfreigabe gibt falsche DNS-Serveradresse aus

Ich verwende ein MacBook Pro mit OS X Mavericks 10.9.2. Es stellt über einen USB-3G-Dongle eine Verbindung zum Internet her, und ich möchte diese Internetverbindung über WLAN freigeben. Auf Geräten, die sich mit dem erstellten WLAN-Zugangspunkt verbinden, funktioniert die DNS-Suche jedoch nicht (obwohl ich 8.8.8.8 problemlos pingen kann). Wenn ich die Geräte statisch für die Verwendung von 8.8.8.8 konfiguriere, funktioniert alles, aber nicht jedes Gerät unterstützt das (oder nur, wenn Sie auch bereit sind, eine statische IP und ein Gateway zu konfigurieren).

Das Problem scheint zu sein, dass OS X bootp (den DHCP-Server) so konfiguriert, dass eine DNS-Serveradresse des MacBook selbst ausgegeben wird:

$ cat /etc/bootp.list
...
            <key>dhcp_domain_name_server</key>
            <array>
                <string>192.168.2.1</string>
            </array>
...

Dies ist tatsächlich die IP-Adresse der Maschine selbst:

$ 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
...

Und das erhalten Clients in der DHCP-Antwort:

$ 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

Nun, das wäre in Ordnung, wenn es tatsächlich wie hier beschrieben funktionieren würde , dh OS X führt namedselbst einen bind ( )-Server aus, der nur DNS-Anfragen und -Antworten an die Server des ISP weiterleitet.

Allerdings ... mit tcpdumpkann ich sehen, dass der Client eine Fehlerantwort von seinen DNS-Lookups erhält:

$ 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

Tatsächlich namedläuft kein Server und es scheint nicht einmal installiert zu sein:

$ ps aux | grep named
thomas           2175   0.0  0.0  2423368    188 s000  R+    3:14pm   0:00.00 grep named
$ which named
$

Nichts anderes hört auch auf UDP-Port 53, obwohl es auf 5353 eine Sache namens mDNSResponder gibt:

$ 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

Jetzt fallen mir zwei Möglichkeiten ein, dies zu beheben, die beide nicht sehr praktisch sind:

  1. Führen Sie einen DNS-Server auf UDP-Port 53 aus. Leider ist keiner installiert.
  2. Weisen Sie DHCP an, eine DNS-Serveradresse zu verteilen, die tatsächlich funktioniert, z. B. 8.8.8.8. Leider InternetSharingüberschreibt die Anwendung /etc/bootp.plistjedes Mal, wenn die Internetfreigabe aktiviert wird. Selbst wenn ich dort eine IP-Adresse hinzufügen würde und selbst wenn es funktionieren würde, würde es nicht für immer funktionieren.

Aber etwas sagt mir, dass dies sofort richtig funktionieren sollte (und normalerweise auch funktioniert) ... was vermisse ich?

Ich habe eine funktionierende Internetfreigabe auf meinem MacBook Mitte 2010 mit OS X 10.9.2. Ich habe keinen namedDienst am Laufen, aber ich habe einen 53 am Laufen. Hinweis: Ich habe den Hex-Wert aus dem lsof entferntmDNSRespo 42 _mdnsresponder 8u IPv4 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 9u IPv6 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 64u IPv4 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 65u IPv6 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 66u IPv4 0t0 TCP *:53 (LISTEN) mDNSRespo 42 _mdnsresponder 67u IPv6 0t0 TCP *:53 (LISTEN)
Interessant. Ich fange an zu glauben, dass einige Nicht-Apple-Software mit der Konfiguration herumspielen könnte.
Ja, nachdem ich mein System auf einen laufenden „benannten“ Dienst überprüft hatte, hatte ich schnell Google und verschiedene Softwareprojekte starteten einen DNS-Responder. Viel Glück beim Finden. Hast du übrigens die Zugriffsrechte auf der Festplatte repariert?
Habe gerade das Verifizieren-Ding im Festplatten-Dienstprogramm ausgeführt. Nichts was mir auffällt.
Was passiert, wenn Sie versuchen herauszufinden, was nameim Aktivitätsmonitor angezeigt wird?
Anscheinend soll Internet-Sharing in Mavericks eine DNS-Proxy-Fähigkeit im mDNSResponder-Prozess aktivieren (vorherige Versionen verwendeten BIND/named, aber das ist nicht in Mav installiert). Leider sehe ich nicht, wie der DNS-Proxy aktiviert werden soll oder was ihn stören könnte...

Antworten (3)

Der Artikel , auf den Sie verweisen, war in der Tat korrekt, als er veröffentlicht wurde, und so funktioniert er vor Mavericks. Unter Mountain Lion wird „named“ gestartet, wenn die Internetfreigabe mit /etc/com.apple.named.proxy.conf als Konfigurationsdatei aktiv ist. Dies ist alles unter Mountain Lion beobachtbar - ich habe es überprüft.

Die Auflösung von Domänennamen basiert jedoch nicht nur auf DNS unter OS X wie in anderen Betriebssystemen, sondern auf Verzeichnisdiensten, die DNS-Lookups aus Flatfiles, NIS, NetInfo, LDAP, ZeroConfig/Bonjour ermöglichen. .. und DNS -- und es ist mDNSResponder, der für die Auflösung dieser Namenswechsel verwendet wird. (Laut seiner Manpage mDNSResponder is also the system-wide Unicast DNS Resolver. Es macht (oder sollte) die DNS-Auflösung für Ihre Internet Shared Clients unter Mavericks. (Es war seltsam, dass sie namedunter Mt Lion gestartet wurden, anstatt damals mDNSResponder zu verwenden.)

Wenn die Internetfreigabe aktiviert ist, ist entweder der benannte (vor Mavericks) oder der mDNSResponder (Mavericks) der „DNS-Server“, der die Namensauflösung für die Internetfreigabe durchführen sollte, und der korrekterweise 192.168.2.1 zum DNS-Server für die NAPT-Clients des Internets macht Teilen. Die direkte und einfache Antwort auf Ihre Fragen lautet also, dass die "falsche DNS-Serveradresse" nicht weitergegeben wird.

Dies hat nachweislich funktioniert, als ich die Internetfreigabe eingerichtet habe, um meine WLAN-Verbindung über Ethernet zu teilen. Es wurde beobachtet, dass Clients, die von Internet Sharing bedient werden und DNS-Anforderungen an 192.168.2.1 gesendet haben, dort Abfragen von einem Browser und bei der Ausgabe von dig @192.168.2.1 apple.com; Ich habe dies in Aktion mit tcpdump zur Überprüfung beobachtet. Alles "funktioniert einfach", wie Sie es erwarten würden.

Ich stelle fest, dass ich in dieser Konfiguration vom Hosting-Mac aus auch in der Lage bin , mich telnet 192.168.2.1 53mit mDNSResponder zu verbinden. Ich stelle auch fest, dass ich den Serviceauftrag für die konfigurierten Netzwerke so eingestellt habe, dass WiFi Vorrang vor dem Ethernet hat.

Wenn Sie dies jedoch umgekehrt ausführen und die Ethernet-Verbindung über WLAN freigeben, ist anfangs das gleiche Problem aufgetreten, das Sie gesehen haben. Ich habe nämlich gesehen, dass die UDP-DNS-Anforderung gesendet wurde, aber keine Antwort zurück, genau wie Sie es beobachtet haben. Ping ging durch bis 8.8.8.8 und die Auflösung gegen 8.8.8.8 mit dig funktionierte auch gut. Ich war bereit, dies als Fehler aufzuschreiben, aber ich hatte später die Gelegenheit, mein MacBook Pro neu zu starten und versuchte es erneut, wobei ich diesmal auch sicherstellte, dass Ethernet Vorrang vor WiFi in der Service-Reihenfolge der Netzwerkeinstellungen hatte. Diesmal hat es "einfach funktioniert" und ich konnte das Problem nicht reproduzieren. Problem durch Neustart und Überprüfung der Servicereihenfolge gelöst.

Außerdem habe ich bestätigt, dass ich:

  • Geben Sie eine dig @192.168.2.1 apple.comvon einem Client (zugewiesen 192.168.2.3) von Internet Sharing aus und erhalten Sie eine erfolgreiche Antwort. Ich habe auch die UDP-Abfrage und -Antwort mit tcpdump beobachtet:

01:01:05.620240 IP 192.168.2.3.58817 > 192.168.2.1.domain: 34923+ A? apple.com. (27) 01:01:06.051566 IP 192.168.2.1.domain > 192.168.2.3.58817: 34923 3/0/0 A 17.149.160.49, A 17.172.224.47, A 17.178.96.59 (75)

  • Vom Hosting-Mac konnte telnet 192.168.2.1 53eine Verbindung hergestellt und empfangen werden.

Internet Sharing war schon immer ein bisschen zerbrechlich. Ich habe oft seltsames Verhalten gesehen und festgestellt, dass es am besten ist, neu zu starten, bevor Sie versuchen, Internet Sharing auszuführen oder zumindest in den Netzwerkeinstellungen für die betreffenden Schnittstellen "[den] Dienst deaktivieren" und sie dann wieder zu aktivieren. (Stellen Sie sicher, dass Sie auch „Anwenden“, wenn Sie solche Änderungen vornehmen.) Zusätzlich kann der Serviceauftrag (der die Standard-Gateways steuert) ebenfalls Auswirkungen haben (wie zu erwarten wäre). Sie sollten auch sicherstellen, dass Sie die verwenden Apple liefert Location "Automatic" (oder ein vernünftiges Faksimile) Denken Sie beim Debuggen auch daran, dass jede Netzwerkschnittstelle ihr eigenes Gateway und ihren bevorzugten DNS-Server haben kann, den sie verwenden können, seit etwa Leopard oder so.

Daher würde ich drei Dinge vorschlagen: (1) einen Neustart und bestätigen Sie die Priorität Ihrer Netzwerkdienstreihenfolge und/oder (2) eine Neuinstallation von Mavericks, um zu sehen, ob dies Ihre Probleme löst, sowie (3) überprüfen Sie, ob Sie Internet bekommen können Teilen funktioniert, wo Ethernet über WLAN verteilt wird und umgekehrt. Wenn Sie (3) nicht zum Laufen bringen können, müssen Sie sich etwas ansehen, das auf Ihrem Mac speziell falsch konfiguriert ist, und das schlägt erneut eine Neuinstallation vor.

Wenn Sie es für Ethernet -> WiFi und WiFi -> Ethernet zum Laufen bringen können, deutet dies auf etwas mit dem USB-Dongle hin - und möglicherweise muss die Servicereihenfolge so angepasst werden, dass eine höhere Priorität erforderlich ist.

Stellen Sie auch sicher, dass Sie keine Firewall-Regeln haben oder Little Snitch oder etwas anderes ausführen, das stören könnte.

Internet Sharing scheint auch einige Debugging-Optionen zu haben, wenn Sie Probleme haben

$ /usr/libexec/InternetSharing --help

Diese und ihre Protokolldatei können zusammen mit der Protokolldatei für mDNSResponder auch nützlich sein, wenn Sie weiterhin Probleme haben.

Aber als Antwort auf die Frage: Es wird nicht die falsche DNS-Serveradresse in DHCP ausgegeben, da 192.168.2.1 der "richtige" DNS-Server für die Internetfreigabe ist, der basierend auf seiner Funktionsweise zu verteilen ist. Und mDNSResponder sollte DNS auf dem Host handhaben, auf dem Internet Sharing unter Mavericks ausgeführt wird. Nein `namedist erforderlich.

Ich bin auf das gleiche Problem gestoßen und kann nicht herausfinden, wie ich es zum Laufen bringen kann. Ich habe schließlich meinen DNS-Server auf 8.8.8.8 eingestellt.

Das Problem scheint an der Stelle zu liegen, an der Sie Ihre Suche eingegrenzt haben. obwohl es nicht darum geht, dass die Clients die falsche DNS-Serveradresse erhalten, sondern eher darum, dass die Clients 192.168.2.1 nicht als ihren DNS-Server verwenden können. Es ist unklar, wie Sie die DNS-Server auf dem System eingerichtet haben, das die Internetfreigabe durchführt, aber das Problem liegt wahrscheinlich in diesem Bereich. Damit ist die dchp_domain_name_serverIP-Adresse in bootpd.plistkorrekt (zumindest normalerweise).

Ich würde empfehlen, einige einfache Überprüfungen durchzuführen:

Öffnen Sie Systemeinstellungen > Freigabe und überprüfen Sie dann Folgendes:

  1. Teilen Sie Ihre Verbindung von: Wi-Fi
  2. An Computer mit: Wi-Fi, Ethernet

Wenn Sie Ethernet aktivieren, erhalten Sie möglicherweise einen Dialog:

Wenn Sie diesen Port aktivieren, beendet Ihr Internetdienstanbieter möglicherweise Ihren Dienst, um zu verhindern, dass Sie sein Netzwerk stören.

In einigen Fällen (z. B. wenn Sie ein Kabelmodem verwenden) können Sie unbeabsichtigt die Netzwerkeinstellungen Ihres ISP beeinflussen und gegen die Bedingungen Ihres Servicevertrags verstoßen.

Ich bin mir nicht ganz sicher, was das bedeutet (obwohl ich mich von meinem ISP verletzt fühle).

Systemeinstellungen > Netzwerkeinstellungen > Ethernet/WLAN :

  1. IPv4 konfigurieren – DHCP verwenden
  2. Dann unterAdvanced...
  3. Konfigurieren Sie IPv6 – automatisch

Registerkarte DNS > DNS-Server :

(Normally this would be set to your Router IP from the previous TCP/IP Tab:
Router: ... (3G USB Dongle IP Address)

/etc/bootpd.list

  1. Beenden Sie die Internetfreigabe.
  2. Öffnen Sie /tmp/bootpd.plist
  3. Suchen Sie diesen Schlüssel:

<key>reply_threshold_seconds</key> <integer>4</integer>

  1. Ändern Sie den Wert 4 in 0
  2. Starten Sie die Internetfreigabe.

*Wie Sie wissen, werden die Einstellungen gelöscht, wenn die Internetfreigabe beendet wird. Eine mögliche Lösung dafür wäre das Erstellen eines Cron-Jobs oder Launchagenten, der Ihre Einstellungen immer beibehält. Es gibt auch einige Optionen für bootpd , die über Terminal ausgeführt werden können, die Sie möglicherweise nicht kennen.

Andere Anmerkungen :

  • Überprüfen Sie, ob die Geräte/Computer unter 192.168.2.2 usw. 192.168.2.1 nicht blockieren
  • Wenn die interne Firewall von OS X aktiviert ist, leitet OS X möglicherweise Anfragen aus dem Internet an Geräte/Computer weiter, die die Internetfreigabe verwenden, aber leitet die Antworten möglicherweise nicht an sie weiter (DNS).
  • Konfigurieren Sie Geräte/Computer so, dass sie eine statische IP und andere DNS-Server als 192.168.2.1 verwenden (dies ist jedoch möglicherweise keine optimale Lösung, wie Sie gesagt haben). Außerdem funktioniert das Festlegen statischer IPs unter bestimmten Umständen möglicherweise nicht (DHCP wird im Allgemeinen für die Internetfreigabe empfohlen und ist standardmäßig eingestellt).
  • Einige 3G-USB-Dongles/Router haben eine Einstellung AP Isolation, die für die Internetfreigabe deaktiviert werden sollte.

Ich weiß, dass Sie kein n00b sind und wahrscheinlich schon viele dieser Dinge überprüft haben, aber es könnte nur eine Kleinigkeit sein, die Sie vielleicht auf dem Weg übersehen haben. Wenn keines dieser einfachen Dinge die Lösung des Problems zu beeinträchtigen scheint, gibt es außerdem spezifischere Befehle, die ich in Erwartung des Ergebnisses bereitstellen könnte.

Diese Zeile in Ihrem tcpdumpist die Antwort:

15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36

Dies bedeutet, dass Ihre Firewalloder eine andere Software, die dieselbe Rolle spielt, oder Ihre manuelle Konfiguration /etc/pf.confIhre DNS-Anforderung daran gehindert hat, Ihren MBP zu erreichen.

Deaktivieren Sie nacheinander alle Filterfunktionen, um herauszufinden, welche blockiert. Sobald Sie es gefunden haben, konfigurieren Sie es richtig.