OS X 10.6.5 (.4부터)로 업데이트 한 후 VPN이 연결되어있을 때 응용 프로그램이 네트워크 환경 설정의 서비스 순서에 따라 올바른 순서로 호스트 이름을 찾지 않는 것 같습니다.
현재 설정은 AirPort 서비스 앞의 Cisco IPSec VPN 서비스입니다. DNS 서버는 VPN 연결 (확인)에 대해 자동으로 설정되며 AirPort 서비스 DNS는 내 라우터 (192.168.1.1, 이는 OpenDNS 서버를 가리킴)를 가리 킵니다.
VPN이 연결되면 DNS 조회가 VPN DNS 서버를 먼저 통과하고 싶지만, 모든 응용 프로그램 (Firefox, Thunderbird, ssh)이 AirPort DNS 서버 (OpenDNS)를 먼저 사용하는 것으로 보입니다.
이것은 업데이트 직전에 잘 작동했습니다.
도움을 주셔서 감사합니다.
** 편집 **
내가 건너 온 이 게시물 및 허용 대답의 명령을 실행했습니다. 그래도 도움이되지 않는 것 같습니다.
조금 더 검색 한 후 scutil --dns 명령을 사용했습니다.
명령 출력은 다음과 같습니다. 리졸버 # 2가 먼저 나오고 리졸버 # 1에 검색 도메인이 있다는 것을 제외하고는 모든 것이 올바르게 보입니다 (foobar.com이 아니라 실제 VPN 도메인 임). 나는 이것이 버그 (또는 그것이 무엇이든)라고 생각합니다. 수동으로 지정하지 않았으며 AirPort 연결을위한 DNS 탭에 없습니다. VPN 연결이 끊어지면 해당 검색 도메인이없고 리졸버 # 2가 없어진 것입니다.
resolver #1
search domain[0] : foobar.com
nameserver[0] : 192.168.1.1
order : 200000
resolver #2
domain : foobar.com
nameserver[0] : 172.30.50.100
nameserver[1] : 172.30.50.80
order : 100200
resolver #3
domain : local
options : mdns
timeout : 2
order : 300000
resolver #4
domain : 254.169.in-addr.arpa
options : mdns
timeout : 2
order : 300200
resolver #5
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300400
resolver #6
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300600
resolver #7
domain : a.e.f.ip6.arpa
options : mdns
timeout : 2
order : 300800
resolver #8
domain : b.e.f.ip6.arpa
options : mdns
timeout : 2
order : 301000
** 편집 **
글쎄, 누군가 내 질문에 대답 할 수있을 때까지 아래에 언급 된 해결 방법에 도움이되는 스크립트를 작성했습니다. VPN을 연결 한 후에 실행해야하고 연결을 끊은 후에 다시 실행해야합니다 (자동으로 실행하는 방법을 찾지 못했습니다). 몇 가지 참고 사항 :
내 계정은 네트워크 환경 설정이 잠금 해제 된 관리자로 실행되므로이 스크립트가 어떻게 공정하게 진행 될지 잘 모르겠습니다.
스크립트에서 vpn_srvc_name을 VPN 서비스 이름으로 설정해야합니다.
이 작업을 수행하는 더 쉬운 방법이있을 것이라고 확신하므로 언제든지 의견을 게시하십시오.
스크립트 :
#!/bin/bash
function get_pri_srvc_id ()
{
cat <<EOF | scutil | \
grep 'PrimaryService' | \
awk -F': ' '{print $2}'
show State:/Network/Global/IPv4
EOF
}
function get_srvc_name ()
{
cat <<EOF | scutil | \
grep 'UserDefinedName' | \
awk -F': ' '{print $2}'
show Setup:/Network/Service/$1
EOF
}
function get_srvc_ids ()
{
cat <<EOF | scutil | \
sed -nEe '
/ServiceOrder/ {
:ids
n
/[0-9]+ :/ {
s/ *[0-9]+ : ([0-9A-Z-]+) */\1/p
b ids
}
}'
show Setup:/Network/Global/IPv4
EOF
}
function get_srvc_id_by_name ()
{
local srvc_ids=$(get_srvc_ids)
for srvc_id in $srvc_ids
do
local srvc_name=$(get_srvc_name "$srvc_id")
if [[ "$srvc_name" == "$1" ]]
then
echo $srvc_id
return
fi
done
}
function get_dns_ips ()
{
local srvc_id=$(get_srvc_id_by_name "$1")
cat <<EOF | scutil | \
sed -nEe '
/ServerAddresses/ {
:ips
n
/[0-9]+ :/ {
s/ *[0-9]+ : ([0-9.]+) */\1/p
b ips
}
}'
show $2:/Network/Service/$srvc_id/DNS
EOF
}
function set_dns_ips ()
{
networksetup -setdnsservers "$@"
}
vpn_srvc_name='NAME OF VPN SERVICE'
ip_file='/tmp/setup_dns_ips'
pri_srvc_id=$(get_pri_srvc_id)
pri_srvc_name=$(get_srvc_name "$pri_srvc_id")
if [[ ! -e "$ip_file" ]]
then
setup_dns_ips=$(get_dns_ips "$pri_srvc_name" "Setup")
state_dns_ips=$(get_dns_ips "$pri_srvc_name" "State")
vpn_ips=$(get_dns_ips "$vpn_srvc_name" "State")
set_dns_ips "$pri_srvc_name" $vpn_ips $setup_dns_ips $state_dns_ips
if [[ -z "$setup_dns_ips" ]]
then
setup_dns_ips="Empty"
fi
echo $setup_dns_ips >$ip_file
else
setup_dns_ips=$(cat $ip_file)
set_dns_ips "$pri_srvc_name" $setup_dns_ips
rm $ip_file
fi
** 편집 **
이것은 여전히 라이온에서도 문제가되는 것 같습니다. 제목을 업데이트하고 태그를 추가하고 있습니다.
** 편집 **
분명히 Lion은 AirPort 서비스 이름을 Wi-Fi로 변경하는 등 일부 무선 변경 사항을 가져 왔습니다. 무선 연결을 통해 VPN에 연결 한 경우 제공 한 해결 방법 스크립트에 문제가 발생할 수 있습니다. Lion은 어떤 이유로 AirPort라는 서비스를 후드 아래에 유지합니다. 문제를 해결하려면 Wi-Fi 서비스의 이름을 AirPort 이외의 이름으로 바꿔야합니다. Wi-Fi 이름을 유지하려면 먼저 다른 이름으로 바꾸고 Wi-Fi로 다시 이름을 바꿔야합니다.
networksetup -setdnsservers "$@"
. 나의 Mac Pro에는 두 개의 이더넷 연결 ( "이더넷 1"및 "이더넷 2"가 기본 이름 임)이 있으므로 인용해야합니다. 편집 : 왜해야