Mac OS X Mountain Lion - rozpoznawanie DNS używa niewłaściwej kolejności w sieci VPN za pośrednictwem połączenia telefonicznego


23

Używam MacBooka z systemem Mac OS X 10.8.2 i łączę się z siecią mojej firmy przez VPN. Wszystko działa świetnie podczas nawiązywania połączenia VPN przez sieć LAN lub WLAN. Jednak gdy używam połączenia telefonicznego (Huawei HSDPA USB Stick), nazwy hostów nie są poprawnie rozpoznawane w aplikacjach (np. Przeglądarce internetowej). Narzędzia wiersza polecenia, takie jak host namepoprawnie rozpoznają adres IP, ping namenie zostaną rozpoznane.

Używając scutil --dnsZrzuciłem konfigurację DNS podczas łączenia przez sieć WLAN a połączenie telefoniczne. Istnieje znacząca różnica w kolejności wyszukiwania:

connecting using WLAN:

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #3
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #4
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #5
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #6
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #7
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #8
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.1.1
  if_index : 4 (en0)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

Połączenie ppp0 to połączenie VPN. Jak widać, dwa serwery są połączone i odpowiadają poprawnie w wierszu poleceń i aplikacjach.

Connecting via UMTS:

resolver #1
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #3
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #4
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #5
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #6
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #7
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #8
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #9
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  flags    : Scoped
  reach    : Reachable,Transient Connection

resolver #2
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

Tym razem ppp1 to połączenie VPN, a ppp0 to połączenie UMTS. Z czasów odpowiedzi poleceń (przy użyciu nieistniejącej nazwy hosta foo.bar.local) wnioskuję, że pingużywa pierwszego łańcucha resolvera, gdzie podobnie jak hostkonfiguracja zapytania o zasięgu. pingpowrót „Unkown host” zajmuje 5 sekund, hostnatychmiast wraca. Zakładam, że ping działa z 5-sekundowym limitem czasu resolvera mdns.

Aby rozwiązać mój problem z uszkodzonymi zapytaniami DNS podczas wybierania numeru przez VPN przez modem, muszę zmienić kolejność resolverów. Do tej pory nie znalazłem sposobu na zrobienie tego.

Wszelkie pomysły są mile widziane.

Odpowiedzi:


7

Miałem ten sam problem na komputerze Mac i po jego naprawieniu zorientowałem się, że spowodował go FortiClient (klient VPN). Nawet gdy FortiClient został odłączony - jego DNS wciąż pojawiał się w scutil.

Rozwiązaniem było dla mnie:

scutil
> list ".*DNS"

Spowoduje to wyświetlenie listy wszystkich konfiguracji DNS, które będą wyglądały mniej więcej tak:

subKey [0] = State:/Network/Global/DNS <br>
subKey [1] = State:/Network/MulticastDNS<br>
subKey [2] = State:/Network/OpenVPN/DNS<br>
subKey [3] = State:/Network/OpenVPN/OldDNS<br>
subKey [4] = State:/Network/PrivateDNS<br>
subKey [5] = State:/Network/Service/forticlientsslvpn/DNS <br>

Aby sprawdzić, czy każdy z nich działa: (dopóki nie znajdziesz problematycznego)

> get key_name
> d.show

… I aby to naprawić uruchom:

> get key_name
> d.remove ServerAddresses
> set key_name

Tak to wyglądało na moim komputerze:

> get State:/Network/Service/forticlientsslvpn/DNS 
> d.show
<dictionary> {
  ServerAddresses : <array> {
    0 : 192.168.30.6
    1 : 192.168.30.15
  }
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> d.remove ServerAddresses
> d.show
<dictionary> {
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> set State:/Network/Service/forticlientsslvpn/DNS
> exit

3

Spróbuj zmienić kolejność wpisów DNS w panelu Preferencje sieci:

  1. Otwórz Preferencje systemoweSieć .

  2. Wybierz usługę sieciową z listy po lewej stronie.

  3. Odblokuj panel preferencji za pomocą blokady w lewym dolnym rogu.

  4. Kliknij Zaawansowane… i wybierz kartę DNS .

  5. Zmień kolejność serwerów DNS, przeciągając je w górę / w dół.


2
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy będziesz mieć wystarczającą reputację, będziesz mógł komentować każdy post .
grg

To dziwny komentarz. W plakacie nie wspomniano, czy próbował tego w swoim pytaniu, i może to być odpowiednie i proste rozwiązanie jego problemu. Trudno powiedzieć bez użycia tej samej konfiguracji.
db

2
Jak to jest sformułowane, jest napisane jako prośba o wyjaśnienia - odpowiedzi należy pisać jako odpowiedzi; komentarze są najbardziej odpowiednim miejscem do żądania wyjaśnień. Ta odpowiedź znalazła się w kolejce przeglądu po niskiej jakości i moim zdaniem komentarz giełdowy wydawał się najbardziej odpowiedni. Rzeczywiście, przeredagowanie tego jako odpowiedzi (i dodanie szczegółów, takich jak zrzuty ekranu i odpowiednio sformatowana lista instrukcji) sprawiłyby, że jest to pełna i uzasadniona odpowiedź.
grg

To jest niedorzeczne. Jesteś Rainmanem czy co? Była to odpowiedź wyrażona w sposób pasywny i skromny (ponieważ jest tak oczywiste, że osoba zadająca pytanie - która wydawała się dość wykwalifikowana - prawdopodobnie próbowała, ale zapomniała o tym wspomnieć w pytaniu). A gdybyś sam wypróbował moje sugestie, zauważyłbyś, że najprawdopodobniej nie więcej kroków poza tymi zawartymi (Preferencje systemowe -> Sieć) nie jest konieczne dla kogoś tak biegłego jak OP.
db

Jak powiedziałem, to po prostu moja opinia. Nawiasem mówiąc, nie byłem tym, który cię ocenił. Zredagowałem twoją odpowiedź, aby podać więcej szczegółów na temat kroków. Jeśli uważasz, że była nieodpowiednia, możesz cofnąć edycję.
grg

2

Znalazłem obejście: Twój VPN DNS będzie nadal ignorowany i będzie używany tylko DNS-3G 3G, ale samo dodanie DNS VPN do listy pod interfejsem 3G rozwiązuje problem… Główny problem polega na tym, że menedżer łączności 3G zastępuje konfigurację za każdym razem klikasz połącz i potrzebujesz menedżera łączności, aby włączyć Radio w kluczu 3G… więc zmieszałem oba rozwiązania w jednym:

  1. Połącz się z VPN i zapisz DNS (mam 2 na liście). Możesz to sprawdzić w Preferencjach sieciowych → Zaawansowane → zakładka DNS. Odłącz VPN. Musisz połączyć się z VPN, ponieważ DNS jest przydzielany dynamicznie po połączeniu…

  2. Połącz się z 3G i zrób to samo: napisz DNS na papierze. Następnie odłącz 3G.

  3. Przejdź do Preferencji sieciowych → kliknij interfejs 3G → Zaawansowane → Karta DNS, a pod tabelą DNS (która zwykle będzie pusta, gdy nie będziesz podłączony) kliknij „+”. Dodaj wszystkie serwery DNS (najpierw 3G, a następnie VPN później). Kliknij OK i Zastosuj.

  4. Odtąd , aby połączyć się z 3G, wystarczy podłączyć USB i poczekać, aż uzyskasz zasięg 3G (musisz otworzyć menedżera łączności 3G), ale nie używaj dostarczonego menedżera połączeń do połączenia. A jeśli łączy się automatycznie, przejdź do preferencji i usuń zaznaczenie tego tiku. Trzeba, że menedżer tylko włączyć radia na na USB Dongle, nic innego.

    Jeśli klikniesz „Połącz” w menedżerze 3G, zastąpi on konfigurację w interfejsie 3G i musisz powtórzyć krok 3.

  5. Przejdź do Sieć → Preferencje i kliknij interfejs 3G. Następnie kliknij Połącz. Połączy się z 3G za pomocą skonfigurowanych serwerów DNS (zamiast dynamicznie odbieranych), które obejmują zarówno „publiczny” DNS, jak i VPN DNS.

  6. Połącz się z siecią VPN. Będzie działać zgodnie z oczekiwaniami.

Pamiętaj tylko, że:

  • Jeśli twoja VPN VPN ulegnie zmianie, musisz ją zmienić ręcznie. Można to łatwo sprawdzić w opcji Sieć → Interfejs VPN w zakładce Zaawansowane → DNS, ponieważ Twój VPN DNS jest nadal dynamicznie przypisywany do interfejsu (chociaż ignorowany przez OS X).

  • Jeśli Twój DNS 3G zmieni się (mało prawdopodobne), musisz go również zmienić ręcznie. Jeśli coś pójdzie nie tak i nie możesz się poruszać, musisz przejść przez menedżera łączności 3G, kliknąć „Połącz” i zobaczyć, które DNS są dynamicznie przypisywane… Będzie to wymagać powrotu do kroku 3 i ponownej konfiguracji.


2

Przez długi czas miałem ten sam problem, ale teraz miałem czas, aby znaleźć rozwiązanie, które będzie dla mnie odpowiednie. Nie zmieniłem kolejności serwera DNS, ale używam serwera DNS za VPN na stałe.

  1. Połącz przez dial-up.

  2. Połącz połączenie VPN i skopiuj adresy IP serwera DNS i domenę wyszukiwania z Połączenia VPN → Zaawansowane → DNS.

  3. Rozłącz połączenie VPN.

  4. Ping <name>lub <hostname>serwera VPN i zanotuj adres IP.

  5. Odłącz połączenie dial-up.

  6. Zduplikuj połączenie telefoniczne (np. Nadaj mu nazwę „3G dla VPN”).

  7. Wprowadź adresy IP i domenę wyszukiwania na karcie DNS połączenia telefonicznego. Będą przechowywane i używane na stałe.

  8. Połącz przez nowe połączenie dial-up.

  9. Teraz nie masz dostępu do serwerów nazw (ponieważ są one chronione przez VPN) - musisz edytować adres serwera połączenia VPN. Zastąp hosta adresem IP.

  10. Połącz przez połączenie VPN i powinieneś być w stanie z niego korzystać.

Uwaga: Ogólnie nazwy hostów się nie zmieniają, ale adresy IP mogą. Jeśli więc kiedyś nie zadziała, wykonaj ponownie czynności…


Cześć Alexander, brzmiało to obiecująco. Nie miałem jednak szczęścia, chociaż kolejność resolvera dns wyglądała całkiem nieźle. Muszę sprawdzić ponownie za pomocą naszego działu IT.
user1248552

1

to, co powiedziałeś, dało mi podpowiedź, więc dodałem ip dns w połączeniu VPN do listy dns w głównym połączeniu (nic szczególnego, tylko za pomocą interfejsu graficznego dla preferencji sieci.) Nie jestem pewien, czy to, co ty Radzenie sobie jest inne, ale zadziałało ze mną


1

Dzieje się tak nadal w 10.13.0

Otworzyłem raport o błędach w Apple. Nie jest normalne, że „ping nazwa_hosta” działa, ale „nazwa hosta hosta” lub „nazwa hosta nslookup” kończy się niepowodzeniem w przypadku VPN dzielonych tuneli (opartych na Cisco IPSec lub IKEv2).

Ponadto, jak niektórzy zauważyli, połączenia Cisco IPsec, a także połączenia IKEv2, nie mogą być traktowane priorytetowo za pomocą „Ustaw zlecenie usługi”, w przeciwieństwie do L2TP / IPsec, które mogą.

Kolejną kwestią, którą chciałbym poruszyć, jest to, że VPN Cisco IPSec lub IKEv2 z tunelem podzielonym nie wyświetlają żadnych serwerów DNS ani domen wyszukiwania w swoich ustawieniach zaawansowanych, nawet jeśli te informacje są wyświetlane z „scutil --dns”. VPN L2TP / IPsec pokazuje te informacje w porządku.

Coś musi dać, a Apple musi wyjaśnić / naprawić.


Uważam, że taka jest sytuacja w przypadku systemu macOS pod koniec 2017 r. Podzielony DNS skonfigurowany w domenie nie jest honorowany. I uruchomić scutil --dnskomendy wyżej i wydaje się, że DNS z sieci VPN jest zawsze ostatni, i nie są wykorzystywane do domeny internetowej, nawet jeśli zostanie prawidłowo ustawione.
mcdado,

0

Nie działa w Lion / Mountain Lion z powodu błędu, który powoduje, że lokalny serwer DNS jest zawsze używany zamiast serwera DNS w sieci zdalnej, nawet jeśli Split DNS jest poprawnie skonfigurowany w routerze VPN.

Jeśli jednak używasz routera Cisco ASA IPSEC, możesz wymusić używanie zdalnych serwerów DNS przy każdym ustanowieniu połączenia VPN:

Jeśli używasz Cisco ASDM, przejdź do Konfiguracja> Dostęp do sieci (klienta)> Zasady grupy> (Twoja grupa VPN dla OSX / iPhone'ów)> Zaawansowane> Podział tunelowania

Ustaw: Nazwy DNS (odznacz „dziedzicz” i zdefiniuj wewnętrzne nazwy domen dns, np. Myoffice.local) Wyślij wszystkie wyszukiwania DNS przez tunel: Ustaw na TAK (jest to ważne ustawienie)

Zapisz go i nie zapomnij przechowywać w pamięci flash do wykorzystania w przyszłości.

Jeśli używasz wiersza polecenia IOS, ustaw:

group-policy <your-tunnel-group-name> attributes
 split-dns value myoffice.local
 split-tunnel-all-dns enable`

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.