@Cuder

Как решить проблему с DNS при подключении OpenVPN в Fedora 21?

Мигрировав с Ubuntu на Fedora, я столкнулся с проблемой удаленного соединения со своей корпоративной сетью. После установки Fedora, в NetworkManager создал новое подключение OpenVPN на основе готового конфигурационного файла. Делал все так же, как в Ubuntu, где все успешно работало. VPN-соединение установилось. А вот с разрешением доменных имен происходят какие-то непонятные чудеса. Очевидно, что достучаться до удаленных офисных серверов (в том числе до самого DNS сервиса, который прописан во вкладке IPv4 настроек OpenVPN соединения) я могу: пинг проходит по IP-адресам. А вот зайти на частные сайты уже не получается: браузер выводит DNS_PROBE_FINISHED_NXDOMAIN, команда ping говорит "unknown host", причем команда nslookup выводит IP-адрес (хотя я не уверен, что всегда правильно). Если зайти на сайт через его IP, браузер изменит в адресной строке этот IP на домен и снова выведет DNS_PROBE_FINISHED_NXDOMAIN. Успешно переход осуществляется только на те сайты, к которым не привязаны доменные имена или некоторые сервисы с адресами вида https://service/.
После подключения VPN в файл /etc/resolv.conf добавляется следующее примечание:

ЗАМЕЧАНИЕ: преобразователь имён glibc не поддерживает более трёх серверов имён. Нижеперечисленные серверы имён могут быть не распознаны... (NOTE: the glibc resolver does not support more than 3 nameservers. The nameservers listed below may not be recognized...)

Поискал в сети решения, но они не помогли. Например, это.
  • Вопрос задан
  • 10383 просмотра
Решения вопроса 1
@mureevms
Если пинг проходит, то достучаться-таки можете.
Зачем руками указываете DNS, они разве не приходят от сервера?
Передаете ли параметры с OVPN сервера о имени домена?
push "dhcp-option DOMAIN domain.local"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@younghacker
Для поиска проблемы я бы поступал следующим образом:

Посмотрите со стороны клиента куда уходят запросы к DNS
В одном окне терминала (на стороне OpenVPN клиента) запустите:
# tcpdump -i any port 53

В другом окне терминала (на стороне OpenVPN клиента) выполните два запроса:
первый запрос с автовыбором NS сервера
$ nslookup домен

второй запрос адресный прямо на сервер
$ nslookup домен XXX.XXX.XXX.XXX
где XXX.XXX.XXX.XXX адрес NS сервера который через VPN.
Посмотрите какие сервера перебирает первый запрос
и через какой интерфейс и куда улетает второй.
И если проходимость есть (маршрутизация работает верно, firewall пропускает, dns сервер отвечает) то для второго запроса должны получить правильный ответ: IP адрес.

Если же ответа нет то посмотрите не закрыт ли Firewall как на клиенте так и на сервере
# iptables -nvL

Включите более подробные логи для OpenVPN на клиенте и на сервере и проанализируйте их
log /var/log/openvpn.vpn-client1.log
verb 5
mute 20


DNS прописывать руками нет нужды. Вам верно сказали, что со стороны сервера его нужно затолкнуть на клиента
push "dhcp-option DOMAIN domain.local"


Но вы сначала определитесь будете ресолвить все имена с того сервера который вам даёт VPN или только те что внутри домена.

Посмотрите запускается или нет dnsmasq из NetworkManager
# cat /etc/NetworkManager/NetworkManager.conf 
[main]
plugins=ifcfg-rh
#dns=dnsmasq
dns=none


Не забывайте про SELinux. Временно отключите:
# setenforce 0

По своему опыту скажу, что в Fedora20, на которой я сижу в данный момент, я отказался от использования OpenVPN, iptables и dnsmasq через Network Manager по причине неадекватного поведения. Мой "VPN зоопарк" оказалось проще настроить по старинке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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