Cliente OpenVPN, força o servidor DNS


9

Nossa configuração do Linux Ubuntu tem um servidor DNS (Bind 9).
E resolv.conftem a sua

  nameserver 127.0.0.1

Ao usar o openvpncliente nesse Linux, o servidor de nomes não é alterado (pelo servidor VPN), mas eu gostaria de configurá-lo - apenas durante a sessão VPN - para outro servidor DNS específico x.y.z.t, alterando a configuração do cliente openvpn.

Então, quando a openvpnsessão terminar, o servidor de nomes deve voltar a 127.0.0.1.

Existe uma maneira "limpa" (ou seja, uma linha no arquivo de configuração do cliente openvpn) para fazer isso?

(Nota: A configuração do servidor VPN não pode ser alterada)

Respostas:


17

Depois de pesquisar mais, poderia encontrar a resposta - abaixo, se puder ajudar alguém.

  • instale o resolvconf que pode salvar e restaurar o resolv.confarquivo de configuração
  • adicione um script a ser executado pelo openvpn , in /usr/share/openvpn, named update-resolv-conf. O script determina o que deve ser o novo resolv.confe como restaurá-lo (veja o link abaixo)
  • adicionar

estas linhas

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

no arquivo de configuração do cliente openvpn.

Leia neste wiki para mais informações.


5
As instalações mais recentes do OpenVPN incluem este script com a instalação. Em vez de baixar e instalar manualmente em /usr/share/openvpn/update-resolv-conf, você pode encontrá-lo pré-instalado em /etc/openvpn/update-resolv-conf.
Nate Lampton

Qual versão do OpenVPN começou a incluir este arquivo?
lanoxx

1
Um pouco atrasado para a festa aqui, mas eu estou usando 2.4.6e ele foi instalado para mim
Roshan Bhumbra

1

Considere usar route-up/ route-downscripts no seu cliente para alterar sua configuração na configuração da conexão, como achar melhor. Consulte os documentos do OpenVPN sobre detalhes sobre como configurar isso e quais variáveis ​​você pode usar nesses scripts.


+1, interessante e útil. A solução resolvconf por cima e para baixo (acima ou abaixo da classificação ..) é, no entanto, mais objetiva e, mais do que clara, mais limpa.
Ring Ø

@ ring0 Eu recomendaria usar em route-upvez de upminimizar as condições da corrida. Quando o upscript é executado, a conexão ainda não está configurada e você não tem chance de consultar o resolvedor remoto que está configurando. Se você iniciar o cliente OpenVPN em uma situação em que a configuração da conexão não seria concluída, você estará colocando o seu resolvedor em um estado possivelmente não funcional por um período prolongado. Consulte a seção "Ordem de execução do script" na página do manual OpenVPN para obter detalhes.
the-wabbit

Fiz alguns testes e o script up é chamado quando a "Sequência de inicialização concluída" é atingida, não antes. Btw não pode encontrar "rota abaixo" no homem.
Anel Ø

1

Esta foi uma informação útil para me ajudar a corrigir este problema.

Eu sou um usuário do arch linux e o que vi é que, quando um cliente Linux é usado com o Access Server, este não consegue alterar as configurações de DNS no cliente em questão, não resolvendo o host, pois está na documentação da OPEN VPN

Criei um script que corrige o problema e, com alguns parâmetros extras, lida com conexões openvpn via linha de comando.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Aqui está o comando principal que está sendo executado para a conexão:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Qualquer feedback é mais do que apreciado.


-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo "nameserver = 127.0.0.1" >> /etc/resolv.conf


2
Isso parece inexato (pense no caminho de pesquisa do DNS e na persistência do servidor de nomes da VPN), mas também não está claro onde você deseja que ele coloque isso.
Falcon Momot

Deve haver um espaço entre o 'servidor de nomes' e o IP.
Lorenzog 12/03/19
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.