systemd-resolved, resolvconf.service, resolvconf 및 openresolv. 왜, 어떻게, 어떻게?


12

에 두 개의 이름 서버를 추가하는 VPN 클라이언트를 사용하고 있습니다 /etc/resolv.conf. 모든 연결은 Network-Manager에서 관리합니다.

업무용 VPN에이 VPN 클라이언트를 사용해야하지만 Ubuntu가 systemd-resolved16.10에 들어간 후 연결 및 DNS에 문제가 있습니다. 내부 페이지가 해결되지 않는 이유로 인해 기본 이름 서버로 다시 systemd-resolved변경되는 것처럼 보입니다 /etc/resolv.conf. 나는 이것에 대해 좀 더 살펴보고로 대체 resolvconf했다 openresolv. 그것은 많은 도움이되었지만 VPN이 잠시 동안 systemd-resolved켜진 /etc/resolv.conf후에도 여전히 재설정 됩니다.

연결이 시작되거나 몇 분이지나거나 전혀 연결되지 않은 것일 수 있습니다. 그런 다음 비활성화 systemd-resolved하고 systemd resolvconf.service실행 openresolv합니다. 모든 것이 잘 작동합니다.

그러나 이것은 매우 혼란 스럽습니다. systemd-resolved다른 것 중 하나와 함께 사용하는 이유가 있습니까? Ubuntu 16.10에서 활성화되었으므로 그 이유가 있다고 생각했지만 싸움을 일으키는 것으로 보입니다 /etc/resolv.conf.

내가 달리고 operesolv이것을 설명 할 수 있다면 좋을 것 입니다. 나는 그것에 대해 꽤 많이 읽었지만 여전히 왜 그렇게 /etc/resolv.conf관리 되는지 이해하지 못합니다. 내가 그것을 사용할 때 systemdVPN 클라이언트를 사용할 수 없다는 것입니다.


FWIW resolvconf.service는 systemd가 resolvconf를 운영하는 방법입니다. 어떤 VPN 클라이언트를 사용하고 있습니까? systemd-resolved를 사용했다면 resolv.conf가 개인 /run/systemd/resolve/resolv.conf파일에 대한 심볼릭 링크가 됩니다. systemd-networkd가 연결을 관리하도록 할 수 있습니다.
pbhj

답변:


1

우분투의 OpenVPN에서 이러한 구성 항목을 처리하는 스크립트를 변경했습니다 (18.04에서 테스트 됨). 이를위한 패치는 다음과 같습니다.

--- /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

OpenVPN 구성 파일에 다음 항목을 추가해야합니다.

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

0

어떤 VPN 클라이언트를 사용하고 있습니까? 스트레이트 OpenVPN에 문제가 있었지만 클라이언트의 NM 버전을 설치하면 문제가 해결되었습니다. 글쎄, 그들 대부분은 경로가 푸시되는 것을 막을 수 없었지만 완전히 다른 문제입니다.

요점은 VPN 클라이언트 DNS 서비스를 관리하는 방법에 대한 systemd의 아이디어와 상호 작용하는 방법에 대해 알아야한다는 것입니다. 나는 이것을 권장하지 않지만 resolvd 서비스 ( systemctl disable systemd-resolved.service) 를 비활성화하여 문제가 개선되는지 확인 하려고 할 수도 있지만 궁극적으로 systemd의 변덕에 제출하는 방법을 이해하는 고객을 확보해야합니다 :)

(시스템 우주선은 오래 전에 항해했기 때문에 왜 어떤 일이 있었는지에 대한 토론을 열지 마십시오.)


이 문제는 VPN 클라이언트 업데이트에서 해결되었습니다. 내 작업 Fortinet VPN의 OpenFortiGui 클라이언트였습니다. 따라서 당신은 절대적으로 옳습니다. 이제 클라이언트는 systemd를 배웠습니다! :)
Christian

0

내가 사용한 VPN 클라이언트에 대한 업데이트로 문제가 해결되었습니다. Fortinet VPN을위한 OpenFortiGui 클라이언트였습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.