Как определить DNS-сервер в openvpn?

17

Я настраиваю сервер openvpn со статическим ключом (режим сертификата не используется из-за DPI на национальном шлюзе), но я не могу успешно изменить DNS автоматически после подключения. Я искал через Интернет и SE, и каждый предлагает использовать dhcp-option.

Я пытался добавить эту строку в client.ovpn

dhcp-option DNS 8.8.8.8

Там нет эффекта. Я пытался добавить эту строку в серверной конф

push "dhcp-option DNS 8.8.8.8"

Ни один не имеет никакого эффекта.

На самом деле, согласно инструкции,

--dhcp-option type [parm]

Установите расширенные свойства TCP / IP TAP-Win32, должны использоваться с --ip-win32 dynamic или --ip-win32 adaptive.

Но мой клиент - это компьютер Mac, сервер Linux. Какие-нибудь решения проблемы?

Сиюань Рен
источник
1
Вы должны указать, какой клиент вы используете на компьютере с OSX.
FloHimself
2
@FloHimself: стандартная утилита командной строки openvpn.
Сиюань Рен

Ответы:

7

В системе Linux вам нужно запустить внешний скрипт .

Вот документация: https://wiki.archlinux.org/index.php/OpenVPN#DNS

Сценарии можно найти здесь или в более новой версии Linux здесь, и вы можете вызвать их, добавив это в конфигурацию клиента openvpn:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Damien
источник
1
Если ваша версия Linux использует NetworkManager, просмотрите изменения, сnmcli которыми вы будете работать .
Palswim
5

Я не эксперт, но прочитав manстраницу ниже вашей цитаты:

--dhcp-option type [parm]

...

Обратите внимание, что если --dhcp-option передается через --push клиенту , отличному от Windows , этот параметр будет сохранен в среде клиента до вызова сценария up под именем foreign_option_ {n}.

и под foreign_option_ {n} :

foreign_option_ {п}

Опция, передаваемая через --push клиенту, который его не поддерживает, например, --dhcp-option в системе, отличной от Windows , будет записана в эту последовательность переменных среды перед выполнением сценария --up .

Таким образом, openvpnклиент командной строки не изменяет автоматически настройки DNS на вашем компьютере с OSX после установления соединения. Но поскольку параметры DNS сохраняются в клиентской среде, вы можете указать сценарий для добавления отправляемых серверов к текущей конфигурации DNS системы с помощью --upпараметра:

--up cmd

Запустите команду cmd после успешного открытия устройства TUN / TAP (изменение UID до пользователя).

cmd состоит из пути к сценарию (или исполняемой программе), за которым могут следовать аргументы. Путь и аргументы могут быть в одинарных или двойных кавычках и / или экранироваться с использованием обратной косой черты и должны быть разделены одним или несколькими пробелами.

Например, Tunnelblick также делает это, используя этот скрипт .

Другим решением может быть сценарий, который был опубликован в списке рассылки openvpn в DNS для клиентов OS X - Полное руководство .

FloHimself
источник
А как насчет iPhone? Без джейлбрейка я представляю, что нет bash или какой-либо команды для автоматического изменения DNS.
Сиюань Рен
@SiyuanRen Без джейлбрейка вы, вероятно, не будете использовать клиент openvpn командной строки на iPhone ...
FloHimself
Официальное приложение openvpn просто загружает текстовый файл конфигурации и запускает его. Больше нет функциональности.
Сиюань Рен
@SiyuanRen Ну, официальное приложение openvpn не является приложением командной строки, которое обсуждается здесь.
FloHimself
Это похоже на взлом. Когда я соединяюсь с PPTP или L2TP, в настройках сети появляется выделенный интерфейс с их только IP и DNS. OpenVPN требует от меня изменить настройки DNS других интерфейсов?
Сиюань Рен
4

У меня была та же проблема с обоими ОС Linux (сервер и клиент), и я решил ее, установив dnsmasq на сервер, который отсутствовал

Итак, мои шаги:

apt-get install dnsmasq

в server.conf

push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

И я мог подключаться и просматривать домены через IP-адрес сервера, соединяясь с NetWorkManager с настройками DNS на автоматический

Maddish
источник
-1

Добавьте эту команду в ваш клиентский файл conf ..

# put actual dns name here
dhcp-option DNS 10.11.12.13 

Это определенно будет работать ..

Винуд Н.К. Махешвари
источник