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?


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

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 .


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


-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 ..

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.