Jak wypchnąć własny serwer DNS do OpenVPN?

27

Zdefiniowałem niezwiązany serwer DNS na moim VPS i wydaje się, że działa. Muszę użyć serwera DNS zamiast publicznych serwerów DNS, ponieważ niektórzy dostawcy usług internetowych zablokowali publiczne adresy IP DNS. Mój plik openvpn.conf to:

    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

Jak sugerowano tutaj , próbowałem użyć adresów IP mojego serwera (powiedzmy 11.22.33.44). Więc zamiast

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

Właśnie położyłem

push "dhcp-option DNS 11.22.33.44"

W openvpn.conf powyżej. Jednak po ponownym uruchomieniu openvpn widzę, że mój klient może nadal łączyć się z serwerem OpenVPN, ale nie można już renderować żadnych stron.

Co może tu być nie tak? Jak mogę rozwiązać ten problem?

hbp
źródło

Odpowiedzi:

31

Na Windows 10klientach musisz dodać następujące dyrektywy do client.ovpn:

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

W przypadku systemu Windows nie są już wymagane żadne dyrektywy.

Na Ubuntu 16.04klientach może być konieczne dodanie następujących dyrektyw do client.ovpn:

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

Najnowsze wersje klienta OpenVPN dla systemu Windows nie rozpoznają DOMAIN-SEARCHpoprawnie opcji i współpracują z nią DOMAIN.

Vskubriev
źródło
Czy wymaga to określonej minimalnej wersji OpenVPN?
0xC0000022L
Myślę, że powinieneś użyć adresu IP bramy VPN (10.0.8.1), a nie adresu IP bramy lokalnej routera (192.168.1.1). Jest to tak powszechny adres IP routera, że ​​prawdopodobnie niezaufany router sieciowy, do którego są bezpośrednio podłączone, będzie miał adres 192.168.1.1.
carlin.scott
8

Mówisz, że „wydaje się działać”. Jak to zweryfikowałeś? Czy opierasz się na fakcie, że serwer uruchomił się bez błędów, czy faktycznie wykonałeś wobec niego jakieś zapytania?

Pierwszą rzeczą, którą bym zrobił, to użyć nslookup lub dig, aby połączyć się z niezwiązanym serwerem i wykonać kilka zapytań. Wiem, że wykopaliska są obecnie bardziej modne, ale wiem lepiej.


$ 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

Jeśli to nie zadziała, musisz ponownie spojrzeć na konfigurację DNS.

Czy jest to podstawowy serwer DNS czy buforujący serwer DNS? Czy próbujesz zapytać o zasoby lokalne lub zasoby internetowe? Czy działa zgodnie z oczekiwaniami, jeśli serwer DNS nie zostanie przesłany do klienta?

Jeśli przepuścisz cały ruch przez serwer OpenVPN, nie powinieneś martwić się, że Twój dostawca usług internetowych blokuje publiczne serwery DNS, ponieważ jeśli chodzi o twojego dostawcę usług internetowych, generujesz ruch tylko do twojego VPS; chyba że VPS stoi za tym samym dostawcą usług internetowych.

digitaladdictions
źródło
Dobrze ubound może przejść wszystkie testy, o których wspomniałeś, i kilka innych, więc jestem prawie pewien, że to nie jest problem. Jeśli chodzi o to, dlaczego muszę korzystać z własnego serwera DNS, zauważyłem, że kiedy korzystam z publicznego DNS jak wyżej, klienci w Iranie (gdzie miliony witryn są blokowane) nie mogą uzyskać żadnej strony przez swoje połączenie openvpn, mimo że mogą połączyć się z serwerem openvpn. Stąd wysiłek. Dzięki
hbp
1
Czy potwierdziłeś, że po uzyskaniu połączenia mogą uzyskać stronę internetową za pomocą adresu IP? Pozwoli to upewnić się, że naprawdę jest to problem DNS, a nie problem z routingiem. Jest to bardzo częste podczas konfigurowania OpenVPN, aby móc połączyć się z serwerem, ale nie odzyskać żadnego ruchu z powodu braku trasy powrotnej.
digitaladdictions
3

Okazuje się, że jeśli próbujesz połączyć się z klienta innego niż Windows, musisz wykonać kilka dodatkowych kroków:

W systemie Linux

Umieść ten wiersz w konfiguracji klienta ( client.conflub xxxx.ovpnpliku)

dhcp-option DNS 11.22.33.44

Wywołaj klienta OpenVPN w ten sposób:

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

To działało dla mnie.

JonDoe297
źródło
Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: script-security
Javier Buzzi
1

Testowane na Ubuntu 18.04 w dniu 13 września 2018 r

Istnieją inne przydatne polecenia do konfiguracji tego, czego potrzebujesz za pomocą wiersza poleceń. Ale w moim przypadku możesz kontrolować połączenie VPN zarówno za pomocą wiersza polecenia, jak i GUI.

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

ifname -- jest domyślnie wymagany, ale nie wpływa na nic

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 nie powinien używać bramy zdalnej jako domyślnej trasy

I o wiele bardziej zainteresowany ostatni szlif:

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'

Następnie możesz kontrolować VPN za pomocą GUI lub użyć następujących poleceń:

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

Vskubriev
źródło