суббота, 16 июня 2012 г.

Ubuntu 12.04 и внутренние DNS при использовании VPN

Допустим, для доступа в сеть предприятия вы используете VPN. В сети предприятия поддерживаются свои сервера доменных имён (DNS) для внутренних адресов, например, вида *.intranet или *.krutaya.firma, ну или ещё какие.

Так вот, Network Manager в Ubuntu 12.04 - это прекрасное и простое средство для управления подключениями, в том числе по VPN, т.е. как раз наш случай. Проблема в том, что в Ubuntu 12.04 в нём произвели значительные улучшения - подключили resolvconf и dnsmasq, которые, в принципе, работают неплохо. Но вот в этой связке Network Manager + resolvconf + dnsmasq + VPN случается проблема, которая не позволяет работать с локальными адресами. Об этой проблеме разработчикам известно, они работают над исправлением.

А что же делать пока проблема не решена?
Можно ручками указать dnsmasq, что для определённых доменов нужно использовать определённые DNS-сервера. Делается это так:
sudo apt-get install dnsmasq
echo "server=/intranet/10.2.3.4" | sudo tee /etc/dnsmasq.d/intranet.conf
sudo killall dnsmasq && sudo service dnsmasq restart
Пояснения: первым шагом мы устанавливаем полноценный dnsmasq, чтобы все запросы к DNS обрабатывались через него. Вторым добавляем конфигурационный файл для нашего сервера. В этой строчке intranet - это суффикс всех внутренних доменов (может содержать точки), которые должны резолвиться через внутренний DNS сервер, 10.2.3.4 - адрес этого сервера, а intranet.conf - название файла, в котором хранится эта настройка. Третьим шагом мы отключаем работающий в данный момент dnsmasq и запускаем его по новой, уже в виде сервиса и уже с новой конфигурацией.

Всё, с этого момента все адреса *.intranet будут резолвиться через сервер 10.2.3.4 (или какие вы там укажите значения).

Единственный минус в том, что работать это будет вне зависимости от состояния VPN-соединения, но это не большая проблема.

2 комментария:

  1. Вот с этим я и столкнулся в linux mint 13. Установил систему коллеге по работе и никак не шёл vpn. Позвонил в поддержку, сказали ip сервера их и всё пошло. Тоже выход и более простой.

    ОтветитьУдалить
    Ответы
    1. Видишь, какое дело. Внутренний сервер может быть настроен отвечать несколько иначе, чем любой публичный DNS. Ну например, на нём могут блокироваться какие-то адреса или ещё что-то, или он может вообще не отвечать на запросы об именах вне внутренней зоны. И поэтому может требоваться иметь именно два сервера.

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

      В общем, в ситуациИ, в которой столкнулся я было невозможно просто взять и прописать внутривпновский сервер как единственный постоянный сервер DNS.

      Конечно, если единственное и основное подключение к сети организовано через внутреннюю VPN сеть, то можно действительно просто вручную прописать внутренний DNS.

      Удалить