Как подтолкнуть свой собственный DNS-сервер к OpenVPN?

27

Я определил несвязанный DNS-сервер на моем VPS, и он, кажется, работает. Мне нужно использовать DNS-сервер вместо публичных DNS-серверов, потому что некоторые интернет-провайдеры заблокировали публичные IP-адреса DNS. Мой файл openvpn.conf:

    dev tun
    proto tcp

    # Notice: here I set the listening port to be 80 to avoid possible port blockage
    port 80

    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
    key /etc/openvpn/easy-rsa/2.0/keys/server.key
    dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

    user nobody
    group nogroup
    server 10.8.0.0 255.255.255.0

    persist-key
    persist-tun

    #status openvpn-status.log
    #verb 3
    client-to-client

    push "redirect-gateway def1"

    #pushing public DNS IPs

    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.222.220"

    comp-lzo

Как предлагается здесь , я попытался использовать IP-адреса моего сервера (скажем, 11.22.33.44). Так что вместо

    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.222.220"

Я просто положил

push "dhcp-option DNS 11.22.33.44"

В openvpn.conf выше. Тем не менее, после перезапуска openvpn я вижу, что мой клиент все еще может подключиться к серверу OpenVPN, но никакие страницы больше не могут отображаться.

Что здесь может быть не так? Как я могу решить эту проблему?

НВР
источник

Ответы:

31

На Windows 10клиентах вам нужно добавить следующие директивы client.ovpn:

script-security 2                                                                                                       
dhcp-option DNS 10.0.8.1                                                                                           
dhcp-option DOMAIN example.lan                                                                                   

Больше никаких директив для окон не требуется.

На Ubuntu 16.04клиентах вам может потребоваться добавить следующие директивы client.ovpn:

up /etc/openvpn/update-resolv-conf                                                                                      
down /etc/openvpn/update-resolv-conf  

Последние версии клиента OpenVPN для Windows не распознают опцию DOMAIN-SEARCHправильно и работают с ней DOMAIN.

vskubriev
источник
Требуется ли для этого конкретная минимальная версия OpenVPN?
0xC0000022L
Я думаю, что вы должны использовать IP-шлюз VPN (10.0.8.1), а не IP-адрес локального шлюза маршрутизатора (192.168.1.1). Это настолько распространенный IP-адрес маршрутизатора, что, скорее всего, ненадежный сетевой маршрутизатор, к которому они напрямую подключены, будет находиться по адресу 192.168.1.1.
carlin.scott
8

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

Первое, что я хотел бы сделать, это использовать nslookup или dig для подключения к несвязанному серверу и выполнения некоторых запросов. Я знаю, что копать больше в моде в наши дни, но я лучше знаю nslookup.


$ nslookup
> server 11.22.33.44
Default server: 11.22.33.44
Address: 11.22.33.44#53
> set type=A
> www.google.com
Server:     11.22.33.44
Address:    11.22.33.44#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.
Name:   www.l.google.com
Address: 74.125.225.52
Name:   www.l.google.com
Address: 74.125.225.48
Name:   www.l.google.com
Address: 74.125.225.49
Name:   www.l.google.com
Address: 74.125.225.50
Name:   www.l.google.com
Address: 74.125.225.51

Если это не работает, то вам придется снова посмотреть на конфигурацию DNS.

Это основной DNS-сервер или кеширующий DNS-сервер? Вы пытаетесь запросить местные ресурсы или интернет-ресурсы? Работает ли он так, как ожидается, если вы не отправляете свой DNS-сервер клиенту?

Если вы пропускаете весь трафик через свой сервер OpenVPN, вам больше не нужно беспокоиться о том, что ваш интернет-провайдер блокирует общедоступные DNS-серверы, поскольку ваш интернет-провайдер генерирует трафик только на свой VPS; если VPS не находится за тем же провайдером.

digitaladdictions
источник
Что ж, ubound может пройти все тесты, которые вы упомянули, и еще несколько, так что я уверен, что это не проблема. Что касается того, почему мне нужно использовать свой собственный DNS-сервер, я обнаружил, что когда я использую общедоступный DNS, как указано выше, клиенты в Иране (где заблокированы миллионы сайтов) не могут получить какую-либо страницу через свое соединение openvpn, несмотря на то, что они могут подключиться к серверу openvpn. Отсюда и усилия. Спасибо
hbp
1
Подтвердили ли вы, что они могут получить веб-страницу по IP-адресу после подключения? Это просто удостоверится, что это действительно проблема DNS, а не проблема маршрутизации. Это очень часто встречается при настройке OpenVPN, чтобы иметь возможность подключаться к серверу, но не получать обратно трафик из-за отсутствующего обратного маршрута.
digitaladdictions
3

Оказывается, что если вы пытаетесь подключиться не из Windows-клиента, вам нужно выполнить пару дополнительных шагов:

В линуксе

Поместите эту строку в конфигурацию вашего клиента ( client.confили xxxx.ovpnфайл)

dhcp-option DNS 11.22.33.44

Вызовите клиент OpenVPN следующим образом:

$ openvpn --script-security 2 --config xxxx.ovpn

Это сработало для меня.

JonDoe297
источник
Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: script-security
Хавьер Баззи
1

Проверено на Ubuntu 18.04 13 сентября 2018

Есть еще полезные команды для настройки того, что вам нужно через командную строку. Но в моем случае вы можете управлять своим VPN-соединением как с помощью командной строки, так и с помощью графического интерфейса.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- является обязательным по умолчанию, но ни на что не влияет

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default не следует использовать удаленный шлюз в качестве маршрута по умолчанию

И еще много интересного, последний штрих:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

После этого вы можете управлять vpn с помощью GUI или использовать следующие команды:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

vskubriev
источник