断开连接后,VPN 名称服务器仍保留在 resolv.conf 中

断开连接后,VPN 名称服务器仍保留在 resolv.conf 中

我在 Arch Linux 系统上使用网络管理器(1.18.0-1),其中 resolvconf也存在(openresolv它是基本包netctl依赖项)。

当我通过 NetworkManager 连接到 VPN 服务器时,断开 VPN 连接后,DNS 记录的持久性出现问题。我找到了部分原因:

  1. 连接后,NetworkManager 进程将 VPN 名称服务器包含在resolv.conf
  2. 关于/etc/ppp/ip-up.d/00-dns.sh(下文)和有效的USEPEERDNS=1resolvconf调用;它将备份resolv.conf并替换为自己的域名服务器记录
  3. /etc/ppp/ip-down.d/00-dns.shVPN断开后,resolvconf删除名称服务器记录并恢复resolv.confresolv.conf.bak此时)无法访问的名称服务器记录

肮脏的修补程序是禁用/etc/ppp/ip-up.d/00-dns.sh(或只是注释掉该/usr/bin/resolvconf ...行)。我不想卸载,openresolv因为它会破坏netctl依赖关系,而且我也想要这个基础包。

由于 NetworkManager 不是 Arch Linux 中的“标准”网络工具,我不确定这是否是一种错误,或者我遗漏了哪些设置。解决它的正确方法是什么?

/etc/ppp/ip-up.d/00-dns.sh:

#!/bin/sh

if [ "$USEPEERDNS" = "1" -a -f /etc/ppp/resolv.conf ]; then
  if [ -x /usr/bin/resolvconf ]; then
    /usr/bin/resolvconf -a ${IFNAME} </etc/ppp/resolv.conf
  else
    [ -e /etc/resolv.conf ] && mv /etc/resolv.conf /etc/resolv.conf.backup.${IFNAME}
    mv /etc/ppp/resolv.conf /etc/resolv.conf
    chmod 644 /etc/resolv.conf
  fi
fi

相关内容