Permitir que o cliente OpenVPN envie seus próprios servidores DNS, independentemente do DNS empurrado do servidor OpenVPN?

9

Existe um servidor OpenVPN em execução no Debian e empurra um DNS no arquivo de configuração do servidor:

pressione "dhcp-option DNS 8.8.8.8"

Existe uma opção para permitir que os usuários alterem esses servidores DNS no lado do cliente?

Aqui está o problema: o servidor openvpn deve enviar um DNS porque, caso contrário, muitos clientes OpenVPN não poderão abrir páginas da Web até que os servidores DNS manualmente sejam definidos nas configurações de rede do sistema.

Meu objetivo é aplicar automaticamente um servidor DNS padrão a usuários não qualificados tecnicamente, além de permitir que usuários de computadores qualificados definam seus próprios servidores DNS.

Observe que simplesmente alterar as configurações de DNS no PC enquanto a opção 'push "dhcp-option DNS 8.8.8.8"' está ativa no servidor openvpn, não faz nada. O DNS enviado pelo servidor permanece independentemente das configurações de DNS local.

Alguma ideia?

Configuração do servidor OpenVPN:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

ATUALIZAÇÃO: Os sistemas operacionais dos clientes são Windows e Mac

Dimi
fonte
Você não especificou o sistema operacional principal de seus clientes DHCP, então tudo o que podemos dizer é "sim, substituir servidores DNS fornecidos por DHCP geralmente é bastante trivial". O que você estava experimentando sugeriu que esse não era o caso?
Andrew B
Desculpe, os sistemas operacionais são Windows e Mac. Quando conectado ao servidor openvpn, não seria possível alterar efetivamente as configurações de DNS. Por exemplo, o servidor openvpn fornece DNS: 8.8.8.8 e quando eu mudo para um DNS na África do Sul (localmente), por exemplo, meu servidor DNS oficial permanece 8.8.8.8 (ou análogo do Google). Pode-se testar o servidor DNS em dnsleaktest c0m
Dimi

Respostas:

15

A partir de 2017 (OpenVPN 2.4) isso agora é possível. Adicione esta linha ao seu arquivo de configuração do cliente:

pull-filter ignore "dhcp-option DNS"

e ignorará todas as linhas de configuração enviadas que começam com o texto citado.

As opções são correspondidas de cima para baixo, portanto a primeira correspondência é usada. Você pode usar isso para permitir algumas rotas e rejeitar outras, se for adequado às suas necessidades.

As três palavras-chave de ação são accept, ignoree reject. Eu não descobri um caso de uso para reject.

Criggie
fonte
4

Na documentação oficial do OpenVPN, você pode encontrar:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Infelizmente, além do que você está perguntando, isso tem o efeito colateral de desativar também o gateway de redirecionamento fornecido pela sua configuração e isso pode representar um problema para o seu caso.

O que eu sugiro é uma abordagem completamente diferente.

Como você mencionou explicitamente: " Meu objetivo é aplicar automaticamente um servidor DNS padrão a usuários não qualificados tecnicamente, além de permitir que usuários de computadores qualificados definam seus próprios servidores DNS " . Parece que você sabe exatamente quais usuários deseja fornecer uma configuração de DNS e quais usuários você não deseja fornecer.

Portanto, em vez de enviar sua configuração diretamente no arquivo de configuração principal do OpenVpn (... e, como tal, fornecer essa configuração para TODOS os seus usuários), você pode implementar uma configuração por usuário . Você pode fazer isso com:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Portanto, quanto à configuração principal, você deve remover :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

e adicione referência ao diretório / etc / openvpn / userconf (como exemplo. Sinta-se livre para escolher o que quiser):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Em seguida, nesse diretório userconf, crie um arquivo para cada usuário que você deseja fornecer ao DNS, incluindo nesse arquivo as duas linhas excluídas acima.

Obviamente, você pode ajustar a configuração do openvpn para todos os usuários, sem limitar a personalização às duas linhas acima.

Como nota final, você também pode estar interessado no parâmetro exclusivo do ccd .

Damiano Verzulli
fonte
Obrigado pelo esforço Damiano, mas acho que a resposta correta é que o servidor DNS do adaptador TAP deve ser alterado, pois alterar as propriedades IPv4 da conexão com a Internet para servidores DNS personalizados não ajuda quando conectado a um servidor OpenVPN que empurra servidores DNS. Dessa forma, não é necessário remover nada das configurações do servidor, mas simplesmente editar as propriedades IPv4 dos adaptadores TAP da máquina Windows.
Dimi
@Dimi: na verdade, essa solução é muito mais limitada do que você faz parecer. Como conexões VPN diferentes usam servidores DNS diferentes e a ordem de estabelecimento dos links determinará qual adaptador TAP será usado, não é possível pré-configurar os adaptadores TAP para usar um conjunto específico de DNS, pois os DNSs que estou configurando podem nem se aplicar ao conexão estabelecida usando esse adaptador TAP específico. Em resumo, sua solução alternativa funcionará apenas se houver apenas uma conexão VPN sempre estabelecida através do mesmo adaptador TAP.
0xC0000022L
1

Meu problema não era exatamente o mesmo, mas os sintomas eram semelhantes o suficiente para que essa pergunta aparecesse nos resultados da pesquisa; portanto, caso alguém aconteça aqui pelo mesmo motivo:

Estou usando o Tunnelblick , uma GUI do OpenVPN para Mac OS. Meu servidor OpenVPN não estava definido para enviar nenhuma opção DHCP ou DNS, mas o cliente ainda estava usando o servidor DNS pela VPN, em vez do servidor DNS local não VPN que eu queria que ele usasse.

A solução foi acessar a guia Configurações → Configurações do Tunnelblick e alterar Definir DNS / WINS para Não definir servidor de nomes .

Aldaviva
fonte
0

Obrigado por @aldaviva, ele está funcionando no meu macOS 10.11.

Anexe minha captura de tela.

insira a descrição da imagem aqui

Chu-Saing Lai
fonte