Назад | Перейти на главную страницу

Разрешение DNS происходит непоследовательно через OpenVPN

Вот моя конфигурация сервера OpenVPN:

port 1194
proto udp

dev tun

ca ca.crt
cert server.crt
key server.key
dh dh4096.pem

topology subnet

server 10.224.127.0 255.255.255.0 # AKA 10.224.127.0/24

ifconfig-pool-persist ipp.txt

push "route 10.0.0.0 255.0.0.0"
push "dhcp-option DNS 10.0.9.102"
push "dhcp-option DNS 10.0.8.186"
push "dhcp-option DOMAIN dc1.lam.myname.net aws.myname.net myname.local"

keepalive 10 120

comp-lzo

max-clients 10

user nobody
group nobody

persist-key
persist-tun

status openvpn-status.log

verb 3

cipher AES-256-CBC
auth SHA256
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 TLS-DHE-RSA-WITH-AES-256-CBC-SHA256 TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 TLS-DHE-RSA-WITH-AES-256-CBC-SHA TLS-DHE-RSA-WITH_AES-128-CBC-SHA

client-cert-not-required
username-as-common-name
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login

Я в основном хочу сделать следующее:

Так что это «в основном» работает, с некоторыми оговорками. Разрешение DNS работает только в течение нескольких секунд после того, как VPN-сервер подключается к сети, а затем перестает работать. Я могу без проблем маршрутизировать TCP-пакеты независимо от того, работает DNS или нет.

Почему DNS работает только в течение первых нескольких секунд моего подключения? Что я делаю не так?

Клиенты, которые я планирую использовать, - это Linux и OSX. Как я могу передать им разрешение DNS?

Поскольку опция DNS push OpenVPN работает только с Windows, я предполагаю, что это ОС, под которой работают ваши VPN-клиенты.

Вероятно, что (как упомянул @ HåkanLindqvist) некоторая часть программного обеспечения изменяет ваши настройки DNS. Это обычная особенность программного обеспечения, связанного с безопасностью (например, антивируса), поскольку поддельный DNS-сервер может использоваться для т. фишинговые атаки. Вам нужно будет найти это приложение самостоятельно и, если возможно, запустить сценарий из OpenVPN, который отключит функцию защиты DNS при подключении.

Кроме того, если вы используете PAM, вам необходимо предоставить учетные данные из пользовательского пространства, поэтому OpenVPN нельзя запускать как службу Windows. Вы используете графический интерфейс OpenVPN или только командную строку? Вы начинаете с повышенных привилегий?

Если вы хотите использовать DNS-адреса, предоставленные сервером, под клиентом UNIX, вам понадобится сценарий, который будет запускаться из OpenVPN при подключении, который считывает среду OpenVPN и помещает полученные значения в /etc/resolv.conf. Обратитесь к руководству для справки. Другой вариант - установить dnsmasq локально на клиенте и предоставляем --server /LOCAL_DOMAIN/LOCAL_DNS_IP опции, которые обеспечат разрешение имен через VPN-туннель только для хостов в выбранном домене (ах).