Удаленная работа обычно предполагает установку VPN подключения к корпоративной сети. Для возможности использования внутренних DNS имен корпоративной сети, VPN-клиент при подключении изменяет используемый DNS сервер на корпоративный. Это может оказаться как желаемым эффектом, так и нет. Может быть корпоративный DNS сервер не может разрешить некоторые из необходимых адресов, или вам не хотелось бы оставлять в логах корпоративного сервера адреса посещаемых вами ресурсов. Рассмотрим, как можно получить доступ к корпоративным ресурсам по именам, не изменяя основной используемый DNS сервер.
В OS X возможно настроить несколько DNS клиентов. Также существует определенный механизм маршрутизации запросов, который определяет, какой из доступных DNS клиентов лучше всего подходит для обработки запроса. Если подходящего клиента не нашлось, то запрос обслуживает основной клиент, скорее всего DNS сервер вашего провайдера. Ответственность клиентов распределяется по доменным зонам. Настройка выполняется с помощью создания файла с именем как у домена в /etc/resolver/ (по умолчанию директория не существует). Например, для обработки запросов к *.example.com необходимо создать файл /etc/resolver/example.com. Содержимое файла аналогично /etc/resolv.conf, например:
nameserver 192.168.0.1
В качестве примера рассмотрим настройку OpenVPN через Tunnelblick. В конфигурацию OpenVPN клиента необходимо включить 2 скрипта для автоматического создания и удаления файла настроек DNS. Затем отключить “Set WINS/DNS” в интерфейсе Tunnelblick, чтобы игнорировать настройки DNS, присылаемые корпоративным сервером.
Содержимое скриптов:
connected.sh
[bash]
#!/bin/bash
if [ ! -d /etc/resolver ]
then
mkdir /etc/resolver
fi
tee /etc/resolver/example.com > /dev/null <<EOF
nameserver 10.254.0.1
EOF
[/bash]
post-disconnect.sh
[bash]
#!/bin/bash
rm /etc/resolver/example.com
[/bash]
Необходимо заметить, что если вы понижаете привилегии OpenVPN-клиента после соединения, то он не сможет создать файл в /etc/resolver. А давать права на запись своему пользователю в /etc/resolver/, думаю, небезопасно.