VPN 네임서버는 연결을 끊은 후에도 resolv.conf에 남아 있습니다.

VPN 네임서버는 연결을 끊은 후에도 resolv.conf에 남아 있습니다.

resolvconf저는 ( openresolv기본 패키지 종속성이 있는 ) Arch Linux 시스템에서 Network Manager(1.18.0-1)를 사용하고 있습니다 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. /etc/ppp/ip-down.d/00-dns.shVPN 연결 해제 호출 후 resolvconf네임서버 기록을 삭제하고 (현재) 도달할 수 없는 네임서버 기록이 있는 곳 resolv.conf에서 복구resolv.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

관련 정보