OS X> 10.6.5 Порядков поиска DNS с VPN

После обновления к OS X 10.6.5 (от.4), приложения, кажется, не ищут имена хостов в правильном порядке (согласно сервисному порядку в Сетевых Предпочтениях), когда моя VPN соединена.

Моя текущая установка является Cisco IPSec сервис VPN перед услугами AirPort. Серверы DNS являются автоматически установкой для соединения VPN (который в порядке), и услуги AirPort DNS указывают на мой маршрутизатор (192.168.1.1, на который указывают серверы OpenDNS).

Когда моя VPN соединена, я хотел бы за поиски DNS пройти серверы DNS VPN сначала, но все мои приложения (Firefox, Thunderbird, ssh), кажется, используют мой сервер Аэропорта DNS, первый (OpenDNS).

Это работало просто великолепно перед обновлением.

Спасибо за любую справку.

** редактирование **

Я столкнулся с этим сообщением и выполнил команды в принятом ответе. Это, казалось, не помогло все же.

После поиска немного больше, я столкнулся с этой командой: scutil - DNS

Вывод от команды ниже. Все выглядит корректным, кроме я думаю, что сопоставитель № 2 должен быть на первом месте, и существует область поиска в сопоставителе № 1 (это - очевидно, не foobar.com, но реальный домен VPN). Я думаю, что это, была ошибка (или независимо от того, что это), находится. Я вручную не указывал его, и это не находится на вкладке 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 и работали снова после разъединения (я не нашел способ выполнить его автоматически). Несколько примечаний:

  1. Моя учетная запись выполняется как Администратор с Сетевыми разблокированными Предпочтениями, таким образом, я не уверен, как этот сценарий был бы ярмарка на чем-либо, но.

  2. Необходимо установить vpn_srvc_name в сценарии к Вашему, Вы предположили это, vpn сервисное название.

  3. Я уверен, что существует, вероятно, более легкий способ сделать это, поэтому не стесняйтесь отправлять свои комментарии.

Сценарий:

#!/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 к Wi-Fi. Это может вызвать проблемы со сценарием обходного решения, который я предоставил, если Вы соединяетесь с их VPN по беспроводному соединению. Лев (по некоторым причинам) сохраняет сервис под названием AirPort под капотом. Для фиксации его необходимо переименовать сервис Wi-Fi к чему-то помимо AirPort. Если требуется сохранить имя Wi-Fi, необходимо переименовать его к чему-то другому сначала, затем переименовать его назад к Wi-Fi.

13
задан 20.03.2017, 12:17

1 ответ

В моем случае запросы FQDN не решали к корректному внутреннему адресу. Вместо этого они указывали на внешний адрес.

Я соединяюсь со своим Cisco ASA через IPsec. В то время как порядок является установкой правильно в сетевом соединении, запросы DNS не выполняют приказ начиная с обновления к 10.6.5.

Для работы вокруг этого я вручную присвоил сервер DNS для своей VPN в Трансфер в аэропорт (так как я - беспроводная связь). После того, как я буду сделан с подключением VPN, я удаляю вручную добавленный адрес DNS.

1
ответ дан 07.12.2019, 11:43

Теги

Похожие вопросы