斷開連線後 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=1調用resolvconf;它將備份resolv.conf並替換為自己的名稱伺服器記錄
  3. VPN 斷開連線後,/etc/ppp/ip-down.d/00-dns.sh呼叫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

相關內容