На Debian работает сервер OpenVPN, и он помещает 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.
С 2017 года (OpenVPN 2.4) это возможно. Добавьте эту строку в файл конфигурации вашего клиента:
pull-filter ignore "dhcp-option DNS"
и он будет игнорировать все выдвинутые строки конфигурации, которые начинаются с цитируемого текста.
Параметры сопоставляются сверху вниз, поэтому используется первое совпадение. Вы можете использовать это, чтобы разрешить одни маршруты и отклонить другие, если это соответствует вашим потребностям.
Три ключевых слова действия: accept
, ignore
, и reject
. Я не нашел варианта использования для reject
.
В официальном Документация 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"
и Добавить ссылка на / и т.д. / openvpn / userconf каталог (как пример. Вы можете выбрать все, что вам нравится):
[**** to be ADDED to the main config***]
client-config-dir /etc/openvpn/userconf
Затем в таком каталоге userconf создайте по одному файлу для каждого пользователя, которому вы хотите предоставить такой DNS, включая в такой файл две строки, удаленные выше.
Очевидно, вы можете точно настроить конфигурацию openvpn для каждого пользователя, не ограничивая настройку двумя строками выше.
В заключение вас может заинтересовать ccd-эксклюзив параметр тоже.
Моя проблема была не совсем такой же, но симптомы были достаточно похожи, чтобы этот вопрос появился в результатах поиска, поэтому на случай, если кто-то еще окажется здесь по той же причине:
я использую Tunnelblick, графический интерфейс OpenVPN для Mac OS. Мой сервер OpenVPN не был настроен на использование каких-либо параметров DHCP или DNS, но клиент все еще использовал DNS-сервер через VPN вместо локального DNS-сервера, отличного от VPN, который я хотел, чтобы он использовал.
Решение заключалось в том, чтобы перейти на вкладку Tunnelblick Configurations → Settings и изменить Установить DNS / WINS к Не устанавливать сервер имен.
Спасибо за @aldaviva, он работает на моей macOS 10.11.
Прикрепите мой скриншот.