@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...)

Поискал в сети решения, но они не помогли. Например, это.
  • Вопрос задан
  • 9840 просмотров
Решения вопроса 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 зоопарк" оказалось проще настроить по старинке.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы