Вопрос или проблема
Я пытаюсь настроить работу dnsmaq и OpenVPN вместе на DigitalOcean. Я хочу создать VPN, который перенаправляет запросы, оканчивающиеся на *.local, на дроплет, а остальные разрешаются через Google DNS.
Это мой /etc/dnsmasq.conf
:
address=/.local/10.8.0.1
resolv-file=/etc/resolv.dnsmasq
listen-address=127.0.0.1
listen-address=10.8.0.1
bind-interfaces
server=8.8.8.8
server=8.8.4.4
Это мой /etc/openvpn/server.conf
:
dev tun
proto udp
port 1194
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
В данный момент я подключен к VPN, и он работает. Я могу открыть любой сайт, кроме тех, которые заканчиваются на *.local (получаю ERR_NAME_NOT_RESOLVED).
Изменение:
Это мой файл /etc/resolv.conf
:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ ВРУЧНУЮ -- ВАШИ ИЗМЕНЕНИЯ БУДУТ ПЕРЕЗАПИСАНЫ
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888
nameserver 8.8.8.8
После установки dnsmasq он был nameserver 127.0.0.1
, но каждый раз, когда я перезапускаю сервер, он возвращается к тому, что выше.
После некоторого поиска я увидел, что не открыл порт DNS-сервера в брандмауэре. Это была проблема.
Ответ или решение
Настройка VPN-сервера с поддержкой разрешения внутренних доменных имен с использованием OpenVPN и Dnsmasq на DigitalOcean — это задача, которая требует внимательного подхода к конфигурации сетевых и DNS-сервисов. Рассмотрим ключевые элементы настройки и возможные улучшения для решения проблемы и повышения функциональности.
Фундаментальная настройка
1. Настройка dnsmasq
Ваш файл конфигурации /etc/dnsmasq.conf
содержит основные параметры, которые позволяют dnsmasq
обрабатывать запросы к DNS:
address=/.local/10.8.0.1
resolv-file=/etc/resolv.dnsmasq
listen-address=127.0.0.1
listen-address=10.8.0.1
bind-interfaces
server=8.8.8.8
server=8.8.4.4
- address=/.local/10.8.0.1: Указывает
dnsmasq
, что все запросы доменов, заканчивающихся на.local
, должны быть разрешены на IP 10.8.0.1, который является адресом внутри VPN. - resolv-file указывает на альтернативный файл, к которому
dnsmasq
обращается для получения информации о внешних DNS-серверах.
2. Настройка OpenVPN
Конфигурация вашего сервера /etc/openvpn/server.conf
отвечает за VPN-соединение:
dev tun
proto udp
port 1194
...
push "dhcp-option DNS 10.8.0.1"
...
- push "dhcp-option DNS 10.8.0.1": Этот параметр инструктирует клиентов использовать 10.8.0.1 в качестве DNS-сервера, что должно направлять запросы
.local
через вашdnsmasq
.
Проблема с разрешением имён
Неполадки с .local
указывают на то, что dnsmasq
не может корректно обрабатывать такие запросы. Обратите внимание на следующее:
- Открытие доступных портов в брандмауэре: Убедитесь, что порт 53 (TCP и UDP) открыт для вашего
dnsmasq
. - Проверка серверной конфигурации: Убедитесь, что
dnsmasq
запущен корректно и его процессы работают.
Конфликты с resolvconf
Файл /etc/resolv.conf
может постоянно перезаписываться, поскольку его обновляет служба resolvconf
. Чтобы утвердить постоянное использование локального dnsmasq
, настройте службу так, чтобы она делала следующее:
- Настраивайте
resolvconf
для использованияnameserver 127.0.0.1
через создание или редакцию скриптов в/etc/resolvconf/resolv.conf.d/
.
Заключение
Важно последовательно проверить все элементы: конфигурацию VPN, dnsmasq
, а также сетевые правила за пределами вашего сервера, такие как настройки межсетевого экрана. Эти компоненты помогут вам обеспечить корректное разрешение внутренних доменных имён в VPN-сети на DigitalOcean. Не забывайте проверять журналы системы для выявления любых потенциальных ошибок, которые могут указывать на дополнительные проблемы в конфигурации.