Разрешить клиенту OpenVPN выдвигать свои собственные DNS-серверы, независимо от того, отправлены ли DNS-серверы OpenVPN?


9

Существует сервер OpenVPN, работающий на Debian, и он выдвигает DNS в файле конфигурации сервера:

нажмите "dhcp-option DNS 8.8.8.8"

Есть ли возможность разрешить пользователям изменять эти DNS-серверы на стороне клиента?

Вот подвох, сервер openvpn должен выдвигать DNS, потому что в противном случае многие клиенты OpenVPN не смогут открывать веб-страницы, пока DNS-серверы не будут установлены вручную в сетевых настройках системы.

Моя цель состоит в том, чтобы автоматически применять DNS-сервер по умолчанию для неопытных пользователей, а также позволить опытным пользователям компьютеров устанавливать свои собственные DNS-серверы.

Обратите внимание, что простое изменение настроек DNS на ПК, когда на сервере openvpn активна опция «push» dhcp-option DNS 8.8.8.8 », ничего не делает. DNS, выдаваемый сервером, остается независимо от локальных настроек DNS.

Любые идеи?

Конфигурация сервера OpenVPN:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

ОБНОВЛЕНИЕ: клиентские операционные системы Windows и Mac


Вы не указали основную операционную систему своих клиентов DHCP, поэтому все, что мы можем на самом деле сказать: «Да, переопределение DNS-серверов, предоставляемых DHCP, обычно довольно тривиально». Что вы испытывали, предполагая, что это не так?
Андрей Б

Извините, операционные системы - Windows и Mac. При подключении к серверу openvpn я не смог бы эффективно изменить настройки DNS. Например, сервер openvpn предоставляет DNS: 8.8.8.8, и когда я, например, перехожу на DNS в Южной Африке (локально), мой официальный DNS-сервер остается 8.8.8.8 (или аналог Google). Можно проверить DNS-сервер на dnsleaktest c0m
Дими

Ответы:


16

С 2017 года (OpenVPN 2.4) это стало возможным. Добавьте эту строку в ваш файл конфигурации клиента:

pull-filter ignore "dhcp-option DNS"

и он будет игнорировать все заданные строки конфигурации, которые начинаются с цитируемого текста.

Опции сопоставляются сверху вниз, поэтому используется первое совпадение. Вы можете использовать это, чтобы разрешить некоторые маршруты и отклонить другие, если это соответствует вашим потребностям.

Три ключевые слова действия являются accept, ignoreи reject. Я не обнаружил вариант использования для reject.


4

В официальной документации OpenVPN вы можете найти:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

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

Я предлагаю совершенно другой подход.

Как вы прямо упомянули: « Моя цель - автоматически применять DNS-сервер по умолчанию для пользователей, не обладающих техническими знаниями, и в то же время разрешать опытным пользователям компьютеров устанавливать свои собственные DNS-серверы». Похоже, вы точно знаете, каких пользователей вы хотите предоставить DNS-конфиг и какие пользователи вы не хотите предоставлять такой конфиг.

Следовательно, вместо того, чтобы помещать вашу конфигурацию непосредственно в основной файл конфигурации OpenVpn (... и, как таковой, предоставлять такую ​​конфигурацию ВСЕМ вашим пользователям), вы можете реализовать конфигурацию для каждого пользователя . Вы можете сделать это с:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Итак, что касается основного конфига, вы должны удалить :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

и добавьте ссылку на каталог / etc / openvpn / userconf (как пример. Не стесняйтесь выбирать все, что вам нравится):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Затем в таком каталоге userconf создайте по одному файлу для каждого пользователя, которому вы хотите предоставить такой DNS, включая в этот файл две строки, удаленные выше.

Очевидно, вы можете точно настроить конфигурацию openvpn для каждого пользователя, не ограничивая настройку двумя вышеупомянутыми строками.

И последнее замечание: вас может заинтересовать параметр ccd-exclusive .


Спасибо за усилия, Дамиано, но я боюсь, что правильный ответ заключается в том, что DNS-сервер адаптера TAP должен быть изменен, так как изменение свойств IPv4 интернет-соединения на пользовательские DNS-серверы не помогает при подключении к серверу OpenVPN, который выдвигает DNS-серверы. Таким образом, не нужно ничего удалять из конфигураций сервера, а нужно просто редактировать свойства IPv4 адаптеров TAP компьютера Windows.
Дими

@Dimi: на самом деле это решение гораздо более ограничено, чем кажется. Поскольку разные VPN-соединения используют разные DNS-серверы, и порядок установки ссылок определит, какой адаптер TAP будет использоваться, я не могу предварительно сконфигурировать адаптеры TAP для использования определенного набора DNS, так как настраиваемые DNS могут даже не применяться к соединение, которое устанавливается с помощью этого конкретного адаптера TAP. Короче говоря, ваш обходной путь работает только тогда, когда есть, но одно VPN-соединение всегда устанавливается через один и тот же адаптер TAP.
0xC0000022L

1

Моя проблема не была точно такой же, но симптомы были достаточно похожи для того, чтобы этот вопрос появлялся в результатах поиска, поэтому на случай, если кто-то еще попадет сюда по той же причине:

Я использую Tunnelblick , графический интерфейс OpenVPN для Mac OS. Мой сервер OpenVPN не был настроен на передачу каких-либо параметров DHCP или DNS, но клиент по-прежнему использовал DNS-сервер через VPN вместо локального DNS-сервера без VPN, который я хотел использовать.

Решением было перейти на вкладку «Конфигурации» → «Настройки» Tunnelblick и установить для параметра « Установить DNS / WINS» значение « Не устанавливать сервер имен» .


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.