Windows 7/8 개발자 미리보기에서 VPN이 DNS를 변경하지 못하도록 방지


10

VPN 연결을 사용하는 고객이 있지만 존재하지 않는 DNS 서버로 내 DNS 설정을 자동으로 구성합니다. 즉, 대체를 시도 할 때까지 모든 DNS 확인 시간이 초과되어 모든 인터넷 트래픽이 실제로 느려집니다.

UAC를 활성화하지 않고 응용 프로그램이 DNS 설정을 무시하지 못하게 할 수있는 방법이 있습니까?

또는 'IP 주소 A에 대한 DNS 요청이 들어 오면 실제로 IP 주소 B를 사용하십시오'라는 일종의 로컬 라우팅을 설정할 수있는 방법이 있습니까?

Windows 8 Developer 미리보기를 사용하고 있지만 Windows 7과 동일하게 작동해야합니다.

감사

답변:


18

VPN 연결에 DNS 서버를 정적으로 할당하는 것 외에는 발생 을 막을 방법이 없다고 생각 합니다.

DNS 서버 쿼리 순서를 변경하려면 https://superuser.com/a/314379/120267에 따라 인터페이스 바인딩 순서를 변경할 수 있지만 VPN 연결에는 영향을 미치지 않는 것으로 보입니다 Windows 7에서의 개인 테스트; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bind인터페이스 바인딩 순서 설정에 관계없이 VPN 연결이 목록 의 맨 위에 지속적으로 추가되었음을 확인했습니다 .

그러나 VPN 연결이 설정된 후 DNS 변경을 재설정 할 수 있습니다.

정보 수집

명령 프롬프트 ( Start-> Run...-> cmd)를 열고 실행하십시오 netsh interface ipv4 show dnsservers. 다음과 유사한 출력이 표시됩니다.

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

VPN 의 인터페이스 이름 과 선택적으로 비 VPN 연결의 첫 번째 DNS 서버가 필요합니다 . 이 예에서는 각각 My VPN192.168.0.1 입니다.


모두 설정

옵션 1 : VPN DNS 비활성화

VPN의 DNS 서버가 전혀 필요 없다고 가정하면 명령 프롬프트에서 간단히 다음을 실행할 수 있습니다.

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

netsh interface ipv4 show dnsservers다시 실행 하면 VPN과 연결된 DNS 서버가 제거 된 것을 볼 수 있습니다. 비 VPN 연결의 DNS 서버는 호스트 이름을 확인하는 데 사용됩니다.


옵션 2 : 보충 VPN DNS

인트라넷 호스트 이름을 확인하기 위해 VPN의 DNS 서버가 필요한 경우 명령 프롬프트에서 다음을 실행할 수 있습니다.

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

이 경우 netsh interface ipv4 show dnsservers비 VPN 연결의 첫 번째 DNS 서버가 VPN의 DNS 서버 목록 맨 위에 추가되었음을 나타냅니다. 호스트 이름을 먼저 확인하는 데 사용되며 실패하면 VPN의 일반 DNS 서버 사용으로 대체됩니다.


당신은 영웅 선생님입니다. 광범위한 답변에 감사드립니다. 잘 작동하는 것 같습니다! 나는 netsh로 혼란을 시도했지만 이것을 멀리 관리하지 못했습니다 ...
Wiebe Tijsma

1

나는 비슷한 문제가 있었다. VPN 서버에 연결하면 로컬 LAN DNS가 가려 지도록 내 워크 스테이션 (원격 VPN 클라이언트) DNS가 무시됩니다. 대신 여기에 게시해야한다고 지적하기 전에 Stackoverflow 측면 에서 문제에 대해 자세히 설명했습니다 .

이 스레드를 읽은 후에는 OpenVPN 클라이언트 구성을 사용하여 재정의를 막을 수 없습니다. 내 솔루션은 OpenVPN 연결이 형성 될 때 실행되는 배치 파일을 OpenVPN 구성 디렉토리에 추가하는 것이 었습니다. OVPN 파일의 이름이 company.ovpn이면 connect에서 실행되는 파일의 이름을 company_up.bat로 지정해야합니다.

오늘 밤에 StackOverflow에서 내 질문에 게시 한 버전 이후로 파일을 보강했습니다. 이제 다음과 같이 보입니다 :

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1 : 진행하기 전에 몇 초 동안 대기하는 핵. OpenVPN 클라이언트의 최신 버전 (2.3)은 지연없이 실행되면 DNS를 무시하고 변경 사항을 라우팅합니다.

2 : VPN 연결의 DNS가 로컬 호스트를 가리 키도록 설정합니다. VPN을 통해 회사 도메인으로 회사 DNS 서버로 쿼리를 전달하는 로컬 호스트에서 실행중인 확인자 ( SimpleDNS Plus 사용 )가 있으며 다른 모든 것은 로컬 LAN DNS 서버로 전달됩니다. VPN 끝 점이 로컬 호스트에 있으므로 로컬 LAN 확인자를 사용하여 VPN을 통해 회사 도메인에 대한 쿼리를 회사 DNS에 전달할 수 없습니다. 연결 이름 ( "Local Area Connection 4")은 "ipconfig / all"을 통해 명령 프롬프트에서 결정되었습니다.

3 : 회사 VPN 서버는 모든 아웃 바운드 트래픽을 VPN을 통해 라우팅 하는 동시에 아웃 바운드 (인터넷으로) SSH 연결을 제한 하도록 구성되어 있습니다. 이것은 내 워크 플로와 충돌하여 먼저 "0.0.0.0 netmask 0.0.0.0"경로를 삭제하고 있습니다 ...

4 : .. 그런 다음 0.0.0.0/0 경로를 다시 추가하여 로컬 LAN 게이트웨이를 가리키고 달리 라우팅되지 않은 모든 트래픽에 대해 메트릭 (무게)을 1000으로 설정합니다.

5 : "exit 0"이 없으면 OpenVPN은 스크립트에 대한 오류 경고를 종료합니다 (종료 상태 1).

잘만되면 이것은 누군가에게 유용합니다. 그것은 나를 위해 합리적으로 잘 작동하고 있습니다 (연결을 열 때마다 경로 나 DNS를 수동으로 조정할 필요가 없습니다).


0

UAC를 활성화하지 않고 응용 프로그램이 DNS 설정을 무시하지 못하게 할 수있는 방법이 있습니까?

최소한 그렇게 쉬운 방법은 없습니다.

또는 'IP 주소 A에 대한 DNS 요청이 들어 오면 실제로 IP 주소 B를 사용하십시오'라는 일종의 로컬 라우팅을 설정할 수있는 방법이 있습니까?

호스트 파일 ( C:\Windows\System32\drivers\etc\hosts) 에 항목을 추가 할 수 있습니다 . 이 파일에는 호스트 이름에서 IP 주소로의 매핑이 포함되어 있으며 DNS 요청보다 선호됩니다.


잘 호스트 파일에 대해 알고 있지만 이것은 불행히도 작동하지 않는 모든 IP 주소를 기반으로합니다 ...
Wiebe Tijsma

오, 이제 질문이 왔습니다. 그리고 한 IP에서 다른 IP로 요청을 리디렉션 할 수 없습니다.
Michael

0

'원격 네트워크에서 기본 게이트웨이 사용'확인란의 상태를 확인할 수 있습니다. VPN 연결 속성을 열고 네트워킹 탭으로 이동하여 TCP / IP v4 또는 TCP / IP V6을 선택한 다음 속성을 선택한 다음 고급을 선택하면됩니다. 이 기능은 모든 인터넷 트래픽이 VPN 연결을 통해 라우팅 될 수 있음을 의미 할 수 있습니다. 항상이 기능을 비활성화하고 VPN으로 원하는 작업을 수행 할 수는 없지만 비활성화 할 수 있으므로 인터넷 액세스 속도가 빨라질 수 있습니다.

그래도 도움이되지 않으면 DNS 탭이 있고 여기에 DNS 서버를 추가 할 수 있습니다. 나는 이것을 시도했지만 이러한 설정이 자동 설정보다 우선합니다.


확인되지 않았으므로 VPN을 통해 모든 인터넷 트래픽을 라우팅하지 않습니다 (이름이 최종적으로 확인 될 때 ​​연결 속도가 빠름). DNS 설정을 변경하려고했지만 불행히도 연결을 다시 시작하면 유효하지 않은 DNS 설정으로 자동 변경됩니다. (
Wiebe Tijsma

DNS 변경을 중지 할 수없는 경우 방화벽을 사용하여이 주소에 대한 DNS 요청을 차단하여 더 빨리 실패 할 수 있습니까?
sgmoore

0

불행히도 netsh는 dhcp가 할당 한 DNS 서버를 삭제할 수 없습니다. 그러나이 작업은 DhcpNameServer 매개 변수를 지워서 수행 할 수 있습니다.

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

레지스트리 키.


0

2017 년 현재 OpenVPN 기반이라면 가능합니다

클라이언트 구성 파일에 행을 추가하십시오.

풀 필터는 "dhcp-option DNS"를 무시합니다.

인용 된 텍스트로 시작하는 모든 푸시 구성 줄은 무시합니다.

세 가지 작업 키워드는 accept ignore reject입니다. 거부에 대한 유스 케이스를 발견하지 못했습니다.


0

클라이언트 VPN 구성에서이 옵션을 간단히 제거합니다.

setenv opt block-outside-dns

문제가 해결되었습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.