Я использую Tunnelblick 3.3beta21b в Mac OS X 10.8.2 (Mountain Lion) для подключения к виртуальной частной сети pfSense / OpenVPN. При подключении к VPN я могу получить доступ к машинам в нашем центре обработки данных. Это pfSense 2.0.1.
Машины в центре обработки данных работают под управлением Ubuntu 12.04 Precise. Когда я нахожусь на машине в центре обработки данных, я могу пинговать другие машины с короткими (не полностью определенными) именами хостов:
web1:~ $ ping web2
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
Файл resolv.conf на любом компьютере с Ubuntu в центре обработки данных выглядит так:
web1:~ $ cat /etc/resolv.conf
nameserver 10.10.160.2
nameserver 10.10.160.45
К сожалению, когда я дома подключаюсь через TunnelBlick / OpenVPN, короткие имена не работают с моего Mac:
mac:~ $ ping web2
ping: cannot resolve web2: Unknown host
Однако nslookup возвращает правильный IP-адрес для «web2», и если я пингуюсь с точкой в конце, он работает:
mac:~ $ ping web2.
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
При подключении через Tunnelblick файл resolv.conf моего Mac выглядит следующим образом. Обратите внимание, что Tunnelblick добавил строку «поиск»; его нет, когда я отключен от VPN:
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
search company.com
nameserver 10.10.160.45
nameserver 8.8.8.8
Как мне настроить Mac OS X, Pfsense / OpenVPN или Tunnelblick, чтобы я мог использовать короткие имена хостов с моего Mac?
При настройке OpenVPN в pfSense поле «DNS Default Domain» передается клиенту как «поисковый» домен. Если это поле не отмечено или оставлено пустым, OpenVPN передает "dhcp-option DOMAIN openvpn", что приводит к тому, что resolv.conf выглядит следующим образом, что не помогает:
search openvpn
nameserver 10.10.160.45
nameserver 8.8.8.8
Наше решение состояло в том, чтобы установить для «DNS Default Domain» просто точку: «.».
В результате файл resolv.conf будет выглядеть так: который работает!
search .
nameserver 10.10.160.45
nameserver 8.8.8.8
Теперь я могу пинговать с короткими именами хостов.
mac:~ $ ping web2
PING web2 (10.10.160.6) 56(84) bytes of data.
64 bytes from web2 (10.10.160.6): icmp_req=1 ttl=64 time=0.380 ms
Это простое решение, поскольку оно не требует перенастройки каждого клиента.
Я не пробовал, но может быть возможно перенастроить DNS-преобразователь Apple, чтобы не добавлять поисковые домены, заставляя его действовать, как мне кажется, больше как Ubuntu. Похоже, что что-то изменилось в Lion или Mountain Lion, в результате чего MAC OS X DNS не работает должным образом.
Кажется pfSense просто передает поле «DNS Default Domain» в OpenVPN., который добавляет его как параметр конфигурации push следующим образом:
dhcp-option DOMAIN company.com
Если DOMAIN не установлен, OpenVPN устанавливает для него значение «openvpn». Это не проблема pfSense.
IMO, было бы хорошо, если бы OpenVPN можно было настроить (или я мог бы узнать, как его настроить), чтобы не устанавливать DOMAIN принудительно. Теоретически это приведет к тому, что поисковый домен останется неустановленным в resolv.conf и позволит использовать короткие имена хостов.