기본적으로 Google 퍼블릭 DNS 서버를 사용하고 실패 할 경우 인트라넷 서버로 대체하고 싶습니다.
이것이 가능한가? ... 랩톱을 다른 네트워크로 옮길 때 깨지지 않는 설정을 찾고 있습니다.
이 wifi 네트워크 연결과 관련된 솔루션을 찾은 경우 허용됩니다 (이 경우에만 트릭을 수행하고 다른 사람에게는 기본값을 사용).
기본적으로 Google 퍼블릭 DNS 서버를 사용하고 실패 할 경우 인트라넷 서버로 대체하고 싶습니다.
이것이 가능한가? ... 랩톱을 다른 네트워크로 옮길 때 깨지지 않는 설정을 찾고 있습니다.
이 wifi 네트워크 연결과 관련된 솔루션을 찾은 경우 허용됩니다 (이 경우에만 트릭을 수행하고 다른 사람에게는 기본값을 사용).
답변:
ipconfig getpacket
DHCP가 권장하는 DNS 서버를 찾는 데 사용할 수 있습니다 .
$ ipconfig getpacket en0
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...
따라서 Wi-Fi
어댑터를 사용하고 있고 해당 장치가 이라고 가정하면 다음을 수행 en0
할 수 있습니다.
#!/bin/bash
default_servers=$( ipconfig getpacket en0 | \
perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
networksetup -setdnsservers Wi-Fi 127.0.0.1 $default_servers
예, 목록 상단에 Google DNS 서버를 추가하고 자체 (인트라넷 서버) 서버를 따라갈 수 있습니다.
네트워크 관리자가 일괄 처리 로이 작업을 수행하는 방법을 찾고 있다면 명령 줄 에서이 작업을 수행하는 방법도 있습니다.
networksetup listallnetworkservices
# look for the correct network device here, probably "Wi-Fi"
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
"Wi-Fi"를 올바른 네트워크 장치로 교체하십시오. 대신 다음을 사용할 수 있습니다.
device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
나는 똑같이하려고합니다. 캐싱 DNS 서버를 로컬 에서 수동으로 실행하고 가입 할 때 인트라넷을 배우게합니다.
dns 서버가 재귀 호출을하기 전에 인트라넷과 인터넷 호스트 이름 을 구분할 수도 있다는 점에 흥분합니다 .
짧은 TTL이 필요하거나 인터페이스가 변경 될 때마다 dns 캐시를 플러시하는 것을 고려할 수 있도록 후크를 작성해야한다고 걱정합니다.
성공하면 다시보고하겠습니다 ...
DNS 서버 의 Wikipedia 비교를 살펴본 후 Dnsmasq가 내 목록의 맨 위에옵니다.
에 brew
대한 포럼을 가지고 있으며 dnsmasq
, 심지어 services
하위 인터페이스를 위해 작성된 것입니다 brew
... 잘 생각하지 않고 구성을 해결해야합니다.
$ brew install dnsmasq # [libidn] internation domain names
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# To have launchd start dnsmasq now and restart at startup:
$ sudo brew services start dnsmasq
( brew
또한 bind
있지만 최소 상태는 매력적입니다. 네트워크 구성을 수행 할 때 지우지 않아도됩니다).
dnsmasq
인트라넷 설정을 사용할 수 있도록 구성하십시오 . (진짜 도전)