Como definir o servidor DNS no openvpn?

17

Configurei um servidor openvpn com chave estática (o modo de certificado não é utilizável devido ao DPI no gateway nacional), mas não consigo alterar o DNS automaticamente após a conexão. Eu pesquisei na Internet e SE, e todos sugerem o uso dhcp-option.

Eu tentei adicionar esta linha ao client.ovpn

dhcp-option DNS 8.8.8.8

Não tem efeito. Eu tentei adicionar esta linha no servidor conf

push "dhcp-option DNS 8.8.8.8"

Nem tem nenhum efeito.

De fato, de acordo com o manual,

- tipo de opção dhcp [parm]

Defina as propriedades TCP / IP TAP-Win32 estendidas, deve ser usado com --ip-win32 dinâmico ou --ip-win32 adaptável.

Mas meu cliente é uma máquina Mac, servidor Linux. Alguma solução para o problema?

Siyuan Ren
fonte
1
Você deve mencionar o cliente que está usando na máquina OSX.
FloHimself
2
@FloHimself: O utilitário de linha de comando padrão openvpn.
Siyuan Ren

Respostas:

7

Em um sistema Linux, você precisa executar um script externo .

Aqui está a documentação: https://wiki.archlinux.org/index.php/OpenVPN#DNS

Os scripts são encontrados aqui ou na versão mais recente do Linux aqui e você pode chamá-los adicionando isso na configuração do cliente openvpn:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Damien
fonte
1
Se o seu sabor Linux usa o NetworkManager, consulte as alterações para trabalharnmcli .
palswim
5

Não sou especialista, mas ao ler a manpágina abaixo, sua citação:

- tipo de opção dhcp [parm]

...

Observe que se --dhcp-option for enviado via --push para um cliente que não seja Windows , a opção será salva no ambiente do cliente antes que o script up seja chamado, sob o nome "opção_externa_ {n}".

e sob opção estrangeira_ {n} :

opção_externa_ {n}

Uma opção enviada via --push para um cliente que não a suporta originalmente, como --dhcp-option em um sistema não Windows , será gravada nessa sequência de variáveis ​​ambientais antes da execução do script --up .

Portanto, o openvpncliente da linha de comando não modifica automaticamente a configuração do DNS na sua máquina OSX depois de estabelecer a conexão. Mas como as opções de DNS são salvas no ambiente do cliente, você pode especificar um script para anexar os servidores enviados à configuração de DNS atual do sistema com a --upopção:

--up cmd

Execute o comando cmd após a abertura bem-sucedida do dispositivo TUN / TAP (alteração do UID pré-usuário).

O cmd consiste em um caminho para o script (ou programa executável), opcionalmente seguido por argumentos. O caminho e os argumentos podem ser de aspas simples ou duplas e / ou escapados usando uma barra invertida e devem ser separados por um ou mais espaços.

Por exemplo, o Tunnelblick também faz isso utilizando este script .

Outra solução pode ser um script que foi postado na lista de discussão openvpn nos clientes DNS para OS X - o Guia Definitivo .

FloHimself
fonte
E o iPhone? Sem jailbreak, imagino que não haja bash ou qualquer comando para alterar o DNS automaticamente.
Siyuan Ren
@SiyuanRen Sem jailbraking você provavelmente não usar a linha de comando openvpn cliente em um iPhone ...
FloHimself
O aplicativo openvpn oficial simplesmente carrega um arquivo de configuração de texto e o executa. Não há mais funcionalidade.
Siyuan Ren
@SiyuanRen Bem, o aplicativo openvpn oficial não é o aplicativo de linha de comando discutido aqui.
FloHimself
Isso parece um hack. Quando eu me conecto com PPTP ou L2TP, há uma interface dedicada disponível nas preferências de Rede, com seu único IP e DNS. O OpenVPN exige que eu altere as configurações de DNS de outras interfaces?
Siyuan Ren
4

Eu tive o mesmo problema com o sistema operacional Linux (servidor e cliente) e resolvi instalar o dnsmasq no servidor que estava faltando

então meus passos:

apt-get install dnsmasq

no server.conf

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

E eu pude conectar e procurar domínios através do IP do servidor, conectando-me ao NetWorkManager com conjuntos de DNS

Maddish
fonte
-1

Adicione este comando ao seu arquivo conf do lado do cliente.

# put actual dns name here
dhcp-option DNS 10.11.12.13 

Definitivamente vai funcionar ..

Vinood NK Maheshwari
fonte