OS X 10.6.5'e (.4'ten) güncelledikten sonra, VPN'im bağlandığında uygulamalar ana bilgisayar adlarını doğru sırada (Ağ Tercihlerindeki hizmet sırasına göre) arıyor gibi görünmüyor.
Şu anki kurulumum bir AirPort hizmetinin önündeki Cisco IPSec VPN hizmetidir. DNS sunucuları VPN bağlantısı için otomatik olarak ayarlanır (bu sorun yoktur) ve AirPort hizmeti DNS yönlendiricimi (192.168.1.1, OpenDNS sunucularına işaret eder) işaret eder.
VPN'im bağlandığında, DNS aramalarının önce VPN DNS sunucularından geçmesini istiyorum, ancak tüm uygulamalarım (Firefox, Thunderbird, ssh) önce AirPort DNS sunucumu (OpenDNS) kullanıyor gibi görünüyor.
Bu güncelleme öncesinde gayet iyi çalışıyordu.
Herhangi bir yardım için teşekkürler.
** düzenle **
Ben rastladım bu yazı ve kabul cevap komutları koştu. Yine de yardımcı olmadı.
Biraz daha aradıktan sonra şu komutla karşılaştım: scutil --dns
Komutun çıktısı aşağıdadır. Her şey doğru görünüyor, ancak # 2 numaralı çözümleyicinin önce gelmesi gerektiğini düşünüyoruz ve 1 numaralı çözümleyicide bir arama alanı var (açıkçası foobar.com değil, gerçek VPN alanı). Bence bu hata (ya da her neyse) yatıyor. Manuel olarak belirtmedim ve AirPort bağlantımın DNS sekmesinde değil. VPN bağlantısı kesildiğinde, bu arama alanı orada değildir ve # 2 numaralı çözümleyici olması gerektiği gibi gider.
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
** düzenle **
Birisi sorumu yanıtlayabilene kadar, aşağıda belirtilen geçici çözüme yardımcı olacak bir senaryo yazdım. VPN'inizi bağladıktan sonra çalıştırılmalı ve bağlantıyı kestikten sonra tekrar çalıştırılmalıdır (otomatik olarak çalıştırmanın bir yolunu bulamadım). Birkaç not:
Hesabım Ağ Tercihleri kilidi açık bir Yönetici olarak çalıştırılıyor, bu yüzden bu komut dosyasının nasıl bir şeyle adil olacağından emin değilim.
Komut dosyasında vpn_srvc_name değerini, tahmin ettiğiniz gibi vpn hizmet adına ayarlamanız gerekir.
Eminim bunu yapmanın daha kolay bir yolu vardır, bu yüzden açıklamalarınızı göndermekten çekinmeyin.
Senaryo:
#!/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
** düzenle **
Görünüşe göre bu hala Lion'da bir sorun. Başlığı güncelliyor ve bir etiket ekliyorum.
** düzenle **
Görünüşe göre Lion, AirPort hizmetini Wi-Fi olarak yeniden adlandırmak da dahil olmak üzere bazı kablosuz değişiklikler getirdi. Bu, kablosuz bir bağlantı üzerinden VPN'lerine bağlanırsa sağladığım geçici komut dosyasıyla ilgili sorunlara neden olabilir. Lion (bir nedenden dolayı) AirPort adlı hizmeti kaputun altında tutar. Düzeltmek için Wi-Fi hizmetinizi AirPort dışında bir adla yeniden adlandırmanız gerekir. Wi-Fi adını korumak istiyorsanız, önce farklı bir adla, ardından tekrar Wi-Fi olarak yeniden adlandırmalısınız.
networksetup -setdnsservers "$@"
. Mac Pro'mda iki Ethernet bağlantısı var ("Ethernet 1" ve "Ethernet 2" varsayılan adlardır) ve bu nedenle tırnak içine alınmaları gerekir. EDIT: neden bunu