systemd-resolved를 사용하여 Ubuntu 20.04 DNS 재정의

systemd-resolved를 사용하여 Ubuntu 20.04 DNS 재정의

기본 DNS를 재정의하도록 Ubuntu 20.04 시스템을 구성하는 방법은 무엇입니까?

기본적으로 전역 및 링크별 DNS 설정이 있는 것 같습니다.

나는 작동하지 않는 몇 가지 일을 시도했습니다:

  • /etc/systemd/resolved.confDNS 서버를 사용하여 편집
  • /etc/systemd/network/enp0s3.conf구성된 DNS 서버를 사용하여 생성됨
  • 편집을 통해 DHCP 요청에서 모든 DNS 관련 매개변수를 제거합니다. /etc/dhcp/dhclient.conf

이러한 모든 변경 사항(및 그 조합)으로 인해 DNS 서버가 전역 DNS 서버 목록에 추가됩니다.

대부분의 "솔루션"은 심볼릭 링크를 파일로 설치 resolvconf하거나 교체하고 거기에 DNS 서버를 설정하는 것입니다. /etc/resolv.conf이 두 가지 모두 해결 방법인 것 같습니다.

systemd-resolved기존 도구( )를 사용하여 DNS 서버를 재정의하고 싶습니다 .

주석에서 @xenoid가 제안했듯이 GUI를 통해 인터페이스의 DNS를 설정하면 /etc/NetworkManager/system-connections/enp0s3.nmconnection출력에 resolvectl status올바른 DNS 서버가 포함된 파일이 생성되지만 이는 내가 원하는 것이 아닙니다. config 를 사용하여 솔루션을 찾고 있는데 systemd-resolved가능한 것 같지만 수행 방법이 명확하지 않습니다. GUI 설치가 필요하기 때문입니다.

답변1

  1. 고쳐 쓰다/etc/systemd/resolved.conf

    [Resolve]
    DNS=1.1.1.1 8.8.8.8
    FallbackDNS=8.8.4.4
    
    
  2. 문제를 해결하려면 시스템을 다시 시작하세요.service systemd-resolved restart

  3. systemd-resolve --status(또는 resolvectl status최신 버전의 systemd에서) 실행합니다 . 출력은 다음과 같아야 합니다.

    Global
             DNS Servers: 1.1.1.1
                          8.8.8.8
    ...
    

답변2

이것논평@David R이 매우 도움이 되었습니다.

rm -f /etc/resolv.conf
ln -sv /run/systemd/resolve/resolv.conf /etc/resolv.conf

답변3

iface변수에 홈 화면의 이름이 포함 되도록 하면 다음과 같이 DNS 주소를 설정할 수 있습니다.

$ sudo resolvectl dns $iface x.y.z.t1 x.y.z.t2
$ sudo resolvectl domain $iface "myDomain.lan"
$ resolvectl dns $iface
Link 2 (ensX): x.y.z.t1 x.y.z.t2
$ resolvectl status $iface
Link 2 (ensX)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: x.y.z.t1
         DNS Servers: x.y.z.t1
                      x.y.z.t2
          DNS Domain: myDomain.lan

답변4

/etc/systemd/network/enp0s3.confDHCP에서 DNS를 무시 하려면 이 파일에 명시적으로 지정해야 합니다 . 대부분의 경우 구성 관리 도구를 통해 dhcp를 제어하는 ​​것을 선호하기 때문에 dhcp에 대한 모든 것을 무시하는 경향이 있습니다. 예를 들어 위 파일의 DHCPv4 섹션은 다음과 같습니다.

[DHCPv4]
UseHostname=no
UseDNS=no
UseNTP=no
UseDomains=no

.network또한 파일 확장자를 사용해야 합니다 . 이 [Match]섹션은 또한 장치 이름이 실제로 무엇을 의미하는지 걱정할 필요가 없도록 도움을 줍니다. 내 경우에는 별도의 장치 파일이 없지만 aws에서 재정의했습니다.

section of /etc/systemd/network/01-ec2-overrides.network

[Match]
Driver=ena ixgbevf vif

[DHCPv4]
UseHostname=no
UseDNS=no
UseNTP=no
UseDomains=no

[DHCPv6]
UseHostname=no
UseDNS=no
UseNTP=no

관련 정보