systemd-resolved, resolvconf.service, resolvconf e openresolv. Por que, qual e como?


12

Estou usando um cliente VPN que adiciona dois servidores de nomes /etc/resolv.conf. Todas as minhas conexões são gerenciadas pelo Network-Manager.

Eu tenho que usar esse cliente VPN para o meu trabalho VPN, mas depois que o Ubuntu foi systemd-resolvedlançado em 16.10, eu estava tendo problemas com minha conexão e DNS. Parece que há systemd-resolvedmudanças /etc/resolv.confnos servidores de nome padrão por algum motivo, o que faz com que as páginas internas não sejam resolvidas. Eu olhei para isso um pouco mais e acabei substituindo resolvconfpor openresolv. Isso ajudou muito, mas ainda é systemd-resolvedredefinido /etc/resolv.confdepois que a VPN está ativa há um tempo.

Pode ser exatamente como a conexão está ativa ou após alguns minutos ou às vezes nem um pouco. Eu então desabilitei systemd-resolvede a systemd resolvconf.serviceúnica execução openresolv. Tudo funciona bem, parece.

No entanto, tudo isso é muito confuso. Existe uma razão para usar systemd-resolvedcom um dos outros? Ele foi ativado no Ubuntu 16.10, então pensei que deveria haver uma razão para isso, mas parece causar uma briga /etc/resolv.conf.

Seria ótimo se eu pudesse correr operesolve explicar isso. Eu já li bastante sobre isso, mas ainda não entendo por que /etc/resolv.confé gerenciado como é, apenas que, quando o uso systemd, não posso usar meu cliente VPN.


FWIW resolvconf.service é exatamente como o systemd opera o resolvconf. Qual cliente VPN você está usando? Se você usou o systemd-resolved, o resolv.conf é um link simbólico para seu /run/systemd/resolve/resolv.confarquivo privado . Você pode tentar que o systemd-networkd gerencie suas conexões.
pbhj

Respostas:


1

Consegui mudar o script que lida com esses itens de configuração no OpenVPN no Ubuntu (testado em 18.04). Aqui está um patch para isso:

--- /etc/openvpn/update-resolv-conf.orig    2019-03-13 19:14:16.163914424 +0400
+++ /etc/openvpn/update-resolv-conf 2019-03-13 19:29:30.380420708 +0400
@@ -15,7 +15,7 @@
 #     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
 #

-[ -x /sbin/resolvconf ] || exit 0
+[ -x /usr/bin/systemd-resolve ] || exit 0
 [ "$script_type" ] || exit 0
 [ "$dev" ] || exit 0

@@ -43,16 +43,16 @@
        fi
    done
    R=""
-   [ "$SRCHS" ] && R="search $SRCHS
-"
+   for SRCH in $SRCHS ; do
+       R="${R}--set-domain=$SRCH "
+   done
    for NS in $NMSRVRS ; do
-           R="${R}nameserver $NS
-"
+       R="${R}--set-dns=$NS "
    done
-   echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
+   /usr/bin/systemd-resolve -i ${dev} ${R}
    ;;
   down)
-   /sbin/resolvconf -d "${dev}.openvpn"
+   echo "Doing nothing, interface disappears."
    ;;
 esac

Você precisará adicionar os seguintes itens ao seu arquivo de configuração do OpenVPN:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

0

Qual cliente VPN você está usando? Eu estava tendo problemas com o OpenVPN direto, mas a instalação da versão NM do cliente resolveu os problemas. Bem, na maioria deles, não pude impedir que uma rota fosse empurrada, mas essa é uma questão completamente diferente.

O ponto é: seu cliente VPN precisa saber como interagir com a idéia do systemd de como gerenciar o serviço DNS. Eu não recomendo isso, mas você pode tentar desativar o serviço resolvd ( systemctl disable systemd-resolved.service) para ver se ele melhora as coisas, mas, no final das contas, você precisará obter um cliente que entenda como enviar aos caprichos do systemd :)

(O navio systemd navegou há muito tempo, não vamos abrir uma discussão sobre por que algumas coisas foram feitas.)


Esse problema foi resolvido em uma atualização do cliente VPN. Era o cliente OpenFortiGui para o meu trabalho Fortinet VPN. Então você está absolutamente certo, o cliente agora aprendeu o systemd! :)
Christian

0

Uma atualização para o cliente VPN que usei resolveu (trocadilhos) o problema. Era o cliente OpenFortiGui da Fortinet VPN.

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.