Nie wierzę, że istnieje sposób, aby temu zapobiec , oprócz statycznego przypisywania serwerów DNS do połączenia VPN.
Aby zmienić kolejność zapytań do serwerów DNS, należy zmienić kolejność wiązania interfejsu zgodnie z https://superuser.com/a/314379/120267 , ale nie ma to wpływu na połączenia VPN w moje osobiste testy w systemie Windows 7; Potwierdziłem, że moje połączenie VPN jest konsekwentnie dodawane na początku HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bind
listy, niezależnie od ustawień kolejności powiązań interfejsu.
Można jednak zresetować zmiany DNS po ustanowieniu połączenia VPN.
Zbieranie informacji
Otwórz wiersz polecenia ( Start
-> Run...
-> cmd
), a następnie uruchom netsh interface ipv4 show dnsservers
. Zobaczysz dane wyjściowe podobne do następujących:
Configuration for interface "My VPN"
Statically Configured DNS Servers: 11.22.33.44
55.66.77.88
...
Configuration for interface "Local Network Connection"
DNS servers configured through DHCP: 192.168.0.1
192.168.0.2
...
Potrzebujesz nazwy interfejsu dla VPN i opcjonalnie pierwszego serwera DNS połączenia innego niż VPN . W tym przykładzie są to odpowiednio My VPN i 192.168.0.1 .
Wszystko gotowe
Opcja 1: Wyłącz VPN DNS
Zakładając, że w ogóle nie potrzebujesz serwerów DNS VPN, możesz po prostu uruchomić następujące polecenie w wierszu polecenia:
netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no
Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no
Jeśli uruchomisz netsh interface ipv4 show dnsservers
ponownie, zobaczysz, że serwery DNS powiązane z VPN zostały usunięte; serwery DNS innego połączenia niż VPN będą używane do rozpoznawania nazw hostów.
Opcja 2: Uzupełnij VPN DNS
Jeśli potrzebujesz serwerów DNS swojej sieci VPN do rozpoznawania nazw hostów w intranecie, możesz uruchomić następujące polecenie w wierszu polecenia:
netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no
Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no
W takim przypadku netsh interface ipv4 show dnsservers
pokaże, że pierwszy serwer DNS połączenia innego niż VPN został dodany na początku listy serwerów DNS twojego VPN. Zostanie on użyty do najpierw rozpoznania nazw hostów, a jeśli się nie powiedzie, wróć do korzystania ze zwykłych serwerów DNS VPN.
Miałem podobny problem; połączenie z serwerem VPN zastąpiłoby DNS mojej stacji roboczej (zdalny klient VPN), więc lokalny DNS LAN byłby zasłonięty. Opisałem problem bardziej szczegółowo po stronie Stackoverflow, zanim wskazano mi, że powinienem go tutaj zamieścić.
Po przeczytaniu tego wątku widać, że nie można zapobiec zastąpieniu przy użyciu konfiguracji klienta OpenVPN. Moim rozwiązaniem było dodanie pliku wsadowego do katalogu konfiguracyjnego OpenVPN, który jest wykonywany po utworzeniu połączenia OpenVPN. Jeśli plik OVPN nosi nazwę company.ovpn, plik uruchamiany w programie connect musi mieć nazwę company_up.bat.
Poszerzyłem ten plik od czasu, gdy opublikowałem wcześniej wersję tego pliku w StackOverflow. Teraz wygląda to tak:
1: włamanie, aby poczekać kilka sekund przed kontynuowaniem. Najnowsza wersja (2.3) klienta OpenVPN zignorowałaby DNS i trasowała zmiany, gdyby została wykonana bez opóźnienia.
2: Ustaw DNS połączenia VPN tak, aby wskazywał na localhost. Mam resolver (używam SimpleDNS Plus ) działający na localhost, który przekazuje zapytania do domeny firmowej do firmowego serwera DNS przez VPN i wszystko inne do lokalnego serwera DNS LAN. Zauważ, że nie mogłem użyć lokalnego resolvera LAN do przesyłania zapytań dotyczących domeny firmowej do firmowego DNS przez VPN, ponieważ punkt końcowy VPN znajduje się na lokalnym hoście. Nazwa połączenia („Połączenie lokalne 4”) została określona w wierszu polecenia za pomocą polecenia „ipconfig / all”.
3: Firmowy serwer VPN jest skonfigurowany do kierowania całego ruchu wychodzącego przez VPN, jednocześnie ograniczając wychodzące (do Internetu) połączenia SSH. Spowodowało to konflikt z moim przepływem pracy i najpierw usuwam trasę „Maska sieci 0.0.0.0 0.0.0.0” ...
4: .. a następnie ponownie dodam trasę 0.0.0.0/0, aby wskazywała na lokalną bramę LAN, i ustawiłem jej metrykę (wagę) na 1000 jako catch-all dla całego ruchu, który nie byłby kierowany inaczej.
5: Bez „exit 0” OpenVPN wyrzuca ostrzeżenie o błędzie, że skrypt nie powiódł się (ze statusem wyjścia 1).
Mam nadzieję, że jest to przydatne dla kogoś ... działa dla mnie dość dobrze (nie trzeba ręcznie dostosowywać trasy ani DNS za każdym razem, gdy otwieram połączenie).
źródło
Przynajmniej nie ma łatwego sposobu na zrobienie tego.
Możesz dodać wpisy do pliku hosts (
C:\Windows\System32\drivers\etc\hosts
). Ten plik zawiera odwzorowania nazw hostów na adresy IP i jest preferowany nad żądaniami DNS.źródło
Czy możesz sprawdzić status pola wyboru „Użyj domyślnej bramy w sieci zdalnej”. Można to znaleźć, otwierając właściwości połączenia VPN i przejdź do karty Sieć i wybierz TCP / IP v4 lub TCP / IP V6, a następnie wybierz właściwości, a następnie zaawansowane. Może to być włączone, co może oznaczać, że cały ruch internetowy jest kierowany przez połączenie VPN. Nie zawsze można to wyłączyć i nadal robić to, co chcesz z VPN, ale można to wyłączyć, może to przyspieszyć dostęp do Internetu.
Jeśli to nie pomoże, jest tam karta DNS i możesz spróbować dodać tam swoje serwery DNS. Próbowałem tego, ale oczekiwałbym, że te ustawienia zastąpią ustawienia automatyczne.
źródło
Niestety netsh nie może usunąć serwerów DNS przypisanych przez dhcp. Można to jednak zrobić, usuwając parametr DhcpNameServer w
klucz rejestru.
źródło
Od 2017 roku jest to teraz możliwe, jeśli jest oparte na OpenVPN
Dodaj wiersz do pliku konfiguracyjnego klienta
i zignoruje wszystkie wypchnięte wiersze konfiguracji, które zaczynają się od cytowanego tekstu.
Trzy słowa kluczowe działania to
accept
ignore
reject
. Nie znalazłem przypadku użycia do odrzucenia.źródło
Po prostu usuwam tę opcję z konfiguracji VPN klienta
setenv opt block-outside-dns
To rozwiązało problem
źródło