Як підштовхнути власний 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.


Для цього потрібна певна мінімальна версія 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 не стоїть за тим самим провайдером.


Ну ubound міг би пройти всі тести, про які ви згадали, і ще деякі, тому я впевнений, що це не проблема. Щодо того, чому мені потрібно використовувати власний DNS-сервер, я відчув, що коли я використовую загальнодоступний DNS, як зазначено вище, клієнти в Ірані (де мільйони сайтів заблоковані) не можуть отримати жодну сторінку через їхнє з'єднання openvpn, незважаючи на те, що вони можуть підключитися до сервера openvpn. Звідси зусилля. Спасибі
hbp

1
Ви підтвердили, що після підключення вони можуть отримати веб-сторінку через IP-адресу? Це просто переконається, що це справді проблема DNS, а не проблема маршрутизації. Це дуже часто, коли налаштовувати OpenVPN, щоб мати можливість підключитися до сервера, але не отримати зворотного трафіку через відсутність маршруту повернення.
digitaladdictions

3

Виявляється, якщо ви намагаєтеся підключитися з клієнта, який не є Windows, вам потрібно зробити кілька додаткових кроків:

У Linux

Розмістіть цей рядок у налаштуваннях клієнта ( client.confабо xxxx.ovpnфайлу)

dhcp-option DNS 11.22.33.44

Викличте клієнта OpenVPN таким чином:

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

Це працювало для мене.


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.