Nach der Aktualisierung auf OS X 10.6.5 (von .4) scheinen Anwendungen die Hostnamen nicht in der richtigen Reihenfolge (gemäß der Dienstreihenfolge in den Netzwerkeinstellungen) nachzuschlagen, wenn mein VPN verbunden ist.
Mein aktuelles Setup ist ein Cisco IPSec VPN-Dienst vor einem AirPort-Dienst. Die DNS-Server werden automatisch für die VPN-Verbindung eingerichtet (was in Ordnung ist), und der AirPort-Dienst-DNS verweist auf meinen Router (192.168.1.1, der auf OpenDNS-Server verweist).
Wenn mein VPN verbunden ist, möchte ich, dass DNS-Lookups zuerst die VPN-DNS-Server durchlaufen, aber alle meine Anwendungen (Firefox, Thunderbird, ssh) scheinen zuerst meinen AirPort-DNS-Server (OpenDNS) zu verwenden.
Dies funktionierte einwandfrei vor dem Update.
Danke für jede Hilfe.
** bearbeiten **
Ich bin auf diesen Beitrag gestoßen und habe die Befehle in der akzeptierten Antwort ausgeführt. Es schien jedoch nicht zu helfen.
Nachdem ich ein bisschen weiter gesucht hatte, stieß ich auf diesen Befehl: scutil --dns
Die Ausgabe des Befehls ist unten. Alles sieht korrekt aus, außer ich denke, Resolver Nr. 2 sollte an erster Stelle stehen, und es gibt eine Suchdomäne in Resolver Nr. 1 (es ist offensichtlich nicht foobar.com, sondern die echte VPN-Domäne). Ich denke, das war der Bug (oder was auch immer es ist) liegt. Ich habe es nicht manuell angegeben und es befindet sich nicht auf der Registerkarte DNS für meine AirPort-Verbindung. Wenn die VPN-Verbindung getrennt ist, ist diese Suchdomäne nicht vorhanden, und der Resolver Nr. 2 ist nicht mehr vorhanden, wie es sein sollte.
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
** bearbeiten **
Nun, bis jemand in der Lage ist, meine Frage zu beantworten, habe ich ein Skript geschrieben, um die unten erwähnte Problemumgehung zu unterstützen. Es sollte ausgeführt werden, nachdem Sie Ihr VPN verbunden haben, und erneut ausgeführt werden, nachdem Sie die Verbindung getrennt haben (ich habe keine Möglichkeit gefunden, es automatisch auszuführen). Ein paar Anmerkungen:
Mein Konto wird als Administrator mit freigeschalteten Netzwerkeinstellungen ausgeführt, daher bin ich mir nicht sicher, wie dieses Skript für alles andere als geeignet ist.
Sie müssen vpn_srvc_name im Skript auf Ihren vpn-Dienstnamen setzen.
Ich bin sicher, es gibt wahrscheinlich einen einfacheren Weg, also zögern Sie nicht, Ihre Anmerkungen zu posten.
Das Drehbuch:
#!/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
** bearbeiten **
Es sieht so aus, als wäre dies auch in Lion noch ein Problem. Ich aktualisiere den Titel und füge ein Tag hinzu.
** bearbeiten **
Anscheinend hat Lion auch einige drahtlose Änderungen vorgenommen, darunter die Umbenennung des AirPort-Dienstes in Wi-Fi. Dies kann zu Problemen mit dem von mir bereitgestellten Problemumgehungsskript führen, wenn eine Verbindung zu ihrem VPN über eine drahtlose Verbindung hergestellt wird. Lion behält (aus irgendeinem Grund) den Dienst namens AirPort unter der Haube. Um dies zu beheben, müssen Sie Ihren Wi-Fi-Dienst in einen anderen Dienst als AirPort umbenennen. Wenn Sie den WLAN-Namen beibehalten möchten, müssen Sie ihn zuerst in einen anderen Namen und dann wieder in WLAN umbenennen.
networksetup -setdnsservers "$@"
. Mein Mac Pro verfügt über zwei Ethernet-Verbindungen ("Ethernet 1" und "Ethernet 2" sind die Standardnamen) und müssen daher in Anführungszeichen gesetzt werden. BEARBEITEN: warum dies zu tunAntworten:
In meinem Fall wurden FQDN-Anforderungen nicht an die richtige interne Adresse aufgelöst. Stattdessen zeigten sie auf die externe Adresse.
Ich verbinde mich über IPsec mit meinem Cisco ASA. Während die Reihenfolge in der Netzwerkverbindung korrekt eingerichtet ist, folgen die DNS-Anforderungen seit der Aktualisierung auf 10.6.5 nicht der Reihenfolge.
Um dies zu umgehen, habe ich den DNS-Server für mein VPN manuell der Flughafenverbindung zugewiesen (da ich drahtlos bin). Nachdem ich mit der VPN-Verbindung fertig bin, entferne ich die manuell hinzugefügte DNS-Adresse.
quelle
Öffnen Sie Internet Connect (in Applications), um zu verhindern, dass OS X 10.8 eine Standardroute zu Ihrer VPN-Verbindung erstellt. Wählen Sie im Menü "Verbinden" die Option "Optionen" und deaktivieren Sie die Option "Gesamten Datenverkehr über eine VPN-Verbindung senden". Klicken Sie auf OK und Sie sind fertig.
Lesen Sie den Rest des Hinweises, um eine benutzerdefinierte Route zum Subnetz auf der anderen Seite der VPN-Verbindung zu erstellen.
Erstellen Sie als root / etc / ppp / ip-up und geben Sie den folgenden Code ein:
Anmerkungen:
chmod u+x /etc/ppp/ip-up
.gefunden hier
quelle