OS X 10.6.5 (से .4) में अपडेट करने के बाद, जब मेरा वीपीएन कनेक्ट होता है, तो एप्लिकेशन सही क्रम में होस्ट नामों को (नेटवर्क वरीयता में सेवा आदेश के अनुसार) नहीं दिखता है।
मेरा वर्तमान सेटअप एक AirPort सेवा के सामने एक सिस्को IPSec वीपीएन सेवा है। DNS सर्वर वीपीएन कनेक्शन (जो ठीक है) के लिए स्वचालित रूप से सेटअप हैं, और एयरपोर्ट सेवा डीएनएस मेरे राउटर (192.168.1.1, जो ओपनडएनएस सर्वर को इंगित किया गया है) की ओर इशारा कर रहा है।
जब मेरा वीपीएन जुड़ा होता है, तो मैं पहले डीएनएस देखने के लिए वीपीएन डीएनएस सर्वरों के माध्यम से जाना चाहूंगा, लेकिन मेरे सभी एप्लिकेशन (फ़ायरफ़ॉक्स, थंडरबर्ड, एसएचएस) मेरे एयरपोर्ट डीएनएस सर्वर का उपयोग पहले करते हैं (ओपनडीएनएस)।
यह अपडेट से ठीक पहले काम कर रहा था।
किसी भी मदद के लिए धन्यवाद।
** संपादित करें **
मैं इस पोस्ट पर आया , और स्वीकृत उत्तर में आदेशों को चलाया। हालांकि यह मदद करने के लिए प्रतीत नहीं हुआ।
थोड़ी और खोज करने के बाद, मैं इस आदेश पर आया: स्कूटिल - डीएनएस
कमांड से आउटपुट नीचे है। सब कुछ सही लगता है, सिवाय इसके कि मुझे लगता है कि रिज़ॉल्वर # 2 पहले आना चाहिए, और रिज़ॉल्वर # 1 में एक खोज डोमेन है (यह स्पष्ट रूप से foobar.com नहीं है, लेकिन असली वीपीएन डोमेन है)। मुझे लगता है कि यह बग (या जो कुछ भी है) झूठ था। मैंने इसे मैन्युअल रूप से निर्दिष्ट नहीं किया है, और यह मेरे AirPort कनेक्शन के लिए DNS टैब पर नहीं है। जब वीपीएन काट दिया जाता है, तो वह खोज डोमेन नहीं होता है, और रिज़ॉल्वर # 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_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
** संपादित करें **
ऐसा लगता है कि यह शेर के रूप में भी एक मुद्दा है। मैं शीर्षक को अपडेट कर रहा हूं और एक टैग जोड़ रहा हूं।
** संपादित करें **
जाहिर तौर पर लायन ने कुछ वायरलेस बदलाव भी लाए, जिनमें एयरपोर्ट सेवा का नाम बदलकर वाई-फाई करना शामिल है। अगर मैं किसी वायरलेस कनेक्शन पर अपने वीपीएन से जुड़ता हूं तो यह मेरे द्वारा दिए गए वर्कअराउंड स्क्रिप्ट के साथ समस्या पैदा कर सकता है। शेर (किसी कारण से) हुड के नीचे AirPort नाम की सेवा रखता है। इसे ठीक करने के लिए, आपको AirPort के अलावा अपनी Wi-Fi सेवा का नाम बदलने की आवश्यकता है। यदि आप वाई-फाई का नाम रखना चाहते हैं, तो आपको इसे पहले कुछ अलग करना होगा, फिर इसका नाम बदलकर वाई-फाई करना होगा।
networksetup -setdnsservers "$@"
। मेरे मैक प्रो में दो ईथरनेट कनेक्शन ("ईथरनेट 1" और "ईथरनेट 2" डिफ़ॉल्ट नाम हैं) और इसलिए उन्हें उद्धृत किया जाना है। EDIT: ऐसा क्यों करना है