Mac OS X에서 터미널 (또는 스크립트)에서 DNS 서버 변경 VPN에서 올바르게 작동하지 않기 때문에 이것이

Mac OS X의 터미널에서 DNS 서버를 어떻게 변경합니까? [DNS가 VPN에서 올바르게 작동하지 않기 때문에 이것이 필요합니다. 때로는 기본 연결에 DNS를 사용하고 때로는 VPN에 지정된 DNS를 사용하고있을 수도 있습니다.]



답변

scutil터미널에서 대화식으로 사용할 수 있습니다 . sudo scutil적절한 위치에서 DNS 서버를 교체하여 다음 명령을 실행 하고 실행 하십시오 .

> 열다
> d.init
d. 서버 주소 추가 * 8.8.8.8 9.9.9.9
> 상태 설정 : / Network / Service / PRIMARY_SERVICE_ID / DNS
> 종료

DNS 서버 를 사용 8.8.8.8하고 9.9.9.9사용 하는 대신 .

유일한 문제는 다시 부팅해도 지속되지 않는다는 것 입니다. 영구적으로 변경하려면 ncutil 이 필요 합니다 . /etc/resolv.conf최신 버전의 OS X에서 편집 이 충분하지 않은 이유 는 이제 configd가 데이터베이스를 사용하여 다른 응용 프로그램에서 읽은 현재 설정 정보를 저장하기 때문입니다. 일부 응용 프로그램 /etc/resolv.conf 모든 응용 프로그램에 해당되는 것은 아니지만 여전히 읽을 수 있습니다 (예 : 호스트).


답변

당신은 사용할 수 있습니다 networksetup:

sudo networksetup -setdnsservers <networkservice> DNS1, DNS2, DNS3

예 (공항 연결이 Google의 DNS 서버를 사용하도록 함)

sudo networksetup -setdnsservers AirPort 8.8.8.8 8.8.4.4

를 실행하여 네트워크 서비스 이름을 찾을 수 있습니다 networksetup -listallnetworkservices. 아마도 ‘Wi-Fi’일 것입니다.

이것은 시스템 환경 설정의 네트워크 환경 설정 패널에서 전체를 편집하는 것과 동일하므로 재부팅 할 때까지 지속됩니다.

Snow Leopard에서 DNS 서버에 대한 쿼리가 변경 될 때 발생하는 DNS 문제가 발생했을 수 있습니다 (질문 84144 참조).


답변

Chealion의 게시물에 답변 할 충분한 포인트가 없지만 추가하기 위해 인터페이스를 나열하는 것으로 시작합니다.

networksetup -listallnetworkservices

변경하려는 인터페이스가 있으면 아래에서 수행 할 수 있습니다 (Wi-Fi를 사용하고 있지만 다른 인터페이스를 수행 할 수 있음)

sudo networksetup -setdnsservers Wi-Fi empty
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
sudo killall -HUP mDNSResponder

위의 첫 번째 줄은 DNS 설정을 비운 다음 사용하려는 DNS 서버와 함께 DNS 캐시를 따르고 DNS 캐시를 미세하게 지 웁니다.

DNS 변경을 확인하려면이 작업을 전후에 또는 간단하게 수행 할 수 있습니다

scutil --dns | grep 'nameserver\[[0-9]*\]'

답변

resolv.conf는 더 이상 OSX에서 작동하지 않습니다. 해당 파일의 맨 위에 다음과 같은 통지가 있습니다.

#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#

또한 networksetup -listallnetworkservices모든 VPN 인터페이스를 나열하지는 않습니다.

scutil을 사용하여 올바른 인터페이스를 대상으로하는 방법은 다음과 같습니다. 1. commands.txt대화 형 scutil 도구에 대한 명령을 사용하여 파일 을 만듭니다 . 예를 들어 필자의 경우 펄스 보안 인터페이스의 내용 :

get State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
d.add ServerAddresses * 8.8.8.8 9.9.9.9
set State:/Network/Service/net.pulsesecure.pulse.nc.main/DNS
  1. 파이프 된 명령으로 scutil을 실행하십시오. (sudo for set)
sudo scutil < commands.txt

답변

/etc/resolv.conf를 편집하여 수행 할 수 있어야합니다 (재부팅 후 resolv.conf가 재설정됨을 기억 하십시오). http://developer.apple.com/mac/library/documentation/Darwin/Reference/ ManPages / man5 / resolver.5.html