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

6

Existe um servidor OpenVPN rodando em um Debian e ele envia um DNS no arquivo de configuração do servidor:

push "dhcp-option DNS 8.8.8.8"

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

Aqui está a captura, o servidor openvpn deve empurrar um DNS porque senão muitos clientes OpenVPN não poderão abrir páginas da web até que os servidores DNS sejam definidos manualmente nas configurações de rede do sistema.

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

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

Alguma idéia?

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 clientes são Windows e Mac

    
por Dimi 06.01.2015 / 18:49

4 respostas

9

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

pull-filter ignore "dhcp-option DNS"

e ele 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, então 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 ignore reject . Eu não descobri um caso de uso para reject .

    
por 16.01.2017 / 05:38
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, esse tem o efeito colateral de desativar também o gateway de redirecionamento fornecido pela sua configuração e isso pode representar um problema, no 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 habilitados tecnicamente, além de permitir que usuários de computador qualificados configurem seus próprios servidores DNS. " parece como você sabe exatamente quais usuários você quer fornecer um DNS-config e quais usuários você não quer fornecer tal configuração.

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 ALL dos seus usuários), você pode implementar 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.

Assim, 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 um exemplo. Sinta-se à vontade para escolher o que quiser):

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

Em seguida, no diretório userconf, crie um arquivo para cada usuário que você deseja fornecer, como, por exemplo, as duas linhas excluídas acima.

Obviamente, você está livre para ajustar a configuração openvpn para cada usuário, não limitando a personalização para as duas linhas acima.

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

    
por 06.01.2015 / 21:23
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, por isso, caso alguém mais acabe aqui pelo mesmo motivo:

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

A solução era entrar na aba Configurations → Settings do Tunnelblick e mudar Set DNS / WINS para Não definir nameserver .

    
por 13.10.2017 / 02:53
0

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

Anexe minha captura de tela.

    
por 24.11.2017 / 11:07