VPNネームサーバーは切断後もresolv.confに残る

VPNネームサーバーは切断後もresolv.confに残る

私は、Arch Linux システムで Network Manager (1.18.0-1) を使用していますが、そこには (基本パッケージresolvconfの依存関係があります) も存在します。openresolvnetctl

NetworkManager 経由で VPN サーバーに接続しているときに、VPN を切断した後も DNS レコードが残るという問題が発生します。原因は部分的にわかりました。

  1. 接続後、NetworkManagerプロセスはVPNネームサーバーをresolv.conf
  2. /etc/ppp/ip-up.d/00-dns.sh(下記)に関して、有効なUSEPEERDNS=1resolvconf呼び出されます。バックアップを作成しresolv.conf、独自のネームサーバーレコードに置き換えます。
  3. VPN切断後、ネームサーバーレコードを削除し、(現時点では)到達不可能なネームサーバーレコードから回復するための/etc/ppp/ip-down.d/00-dns.sh呼び出しresolvconfresolv.confresolv.conf.bak

汚い修正プログラムは無効にする/etc/ppp/ip-up.d/00-dns.sh(または単にその行をコメントアウトする) ことです。依存関係が壊れるため/usr/bin/resolvconf ...アンインストールしたくありませんし、この基本パッケージも必要です。openresolvnetctl

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

関連情報