dhcp 서버의 정보를 기반으로 /etc/resolv.conf에 DNS 서버를 설정하도록 netplan을 얻으려면 어떻게 해야 합니까?

dhcp 서버의 정보를 기반으로 /etc/resolv.conf에 DNS 서버를 설정하도록 netplan을 얻으려면 어떻게 해야 합니까?

다음과 같은 간단한 네트워크 토폴로지를 사용하여 4 x RPi 클러스터를 설정합니다.

여기에 이미지 설명을 입력하세요.

4개의 RPi 노드에는 모두 최신 Ubuntu Server LTS 20.04 운영 체제가 있습니다. rpi1은 내 마스터/게이트웨이 노드입니다. rpi1에서 다음을 수행했습니다.

  • netplan을 사용하여 eth0 10.0.0.1에 고정 IP 주소를 할당합니다.
  • systemd-resolved수동으로 /etc/resolv.conf값을 비활성화 하고 생성합니다.nameserver 127.0.0.1
  • 설정은 dnsmasq다음과 같습니다 /etc/dnsmasq.conf.
# Basics:
interface=eth0
listen-address=127.0.0.1

# DHCP Settings (MAC Addresses removed)
dhcp-range=10.0.0.1,10.0.0.128,12h

dhcp-host=XX:XX:XX:XX:XX:XX,rpi1,10.0.0.1
dhcp-host=XX:XX:XX:XX:XX:XX,rpi2,10.0.0.2
dhcp-host=XX:XX:XX:XX:XX:XX,rpi3,10.0.0.3
dhcp-host=XX:XX:XX:XX:XX:XX,rpi4,10.0.0.4

dhcp-option=option:router,10.0.0.1
dhcp-option=option:dns-server,10.0.0.1
dhcp-option=option:netmask,255.255.255.0

# Forward to nameservers:
server=8.8.8.8
server=8.8.4.4

# Misc
bind-interfaces
domain-needed
bogus-priv
expand-hosts
  • 파일에 ID를 추가하십시오 /etc/hosts.
10.0.0.1 rpi1
10.0.0.2 rpi2
10.0.0.3 rpi3
10.0.0.4 rpi4

이 설정은 MAC 주소를 기반으로 나머지 "보조" 노드(rpi2, rpi3, rpi4)의 eth0 장치에 필요한 IP 주소를 올바르게 할당하므로 DHCP 서버로서 성공한 것으로 보입니다.

그러나 rpi1에서 실행되는 dnsmasq-DHCP 서버가 브로드캐스트하는 네임 서버를 등록하기 위해 보조 노드에서 netplan을 사용하는 방법을 모르겠습니다. /etc/netplan/50-cloud-init.yaml보조 노드의 파일에서 다양한 설정을 시도했지만 실행하면 항상 sudo netplan apply다음 /etc/resolv.conf과 같은 네임서버 위치 정보가 포함된 파일이 생성됩니다.

nameserver 127.0.0.53
options edns0

/etc/resolv.confrpi1( )을 가리키도록 수동으로 편집하면 nameserver 10.0.0.1작동하지만(예: rpi2로 시작할 수 있음 ) dnsmasq 브로드캐스트의 정보를 기반으로 ping rpi3실행이 자동으로 설정되지 않는 이유를 이해하고 싶습니다 . netplan apply내 환경에서 다양한 설정을 시도했지만 /etc/netplan/50-cloud-init.yaml생성된 파일에는 아무런 영향도 미치지 않는 것 같습니다 /etc/resolv.conf.

/etc/netplan/50-cloud-init.yaml여기가 포기하기 전에 rpi2의 파일을 마지막으로 살펴본 곳입니다(참고: 초기 설정/디버깅을 위해 여기에서 직접 Wi-Fi 액세스도 활성화했습니다).

network:
    version: 2    
    ethernets:
        eth0:
            dhcp4: true
            optional: true
            dhcp4-overrides:
                use-dns: false
            nameservers:
                addresses: [10.0.0.1]
    wifis:
        wlan0:
            optional: true
            access-points:
                "my-wifi-signal":
                    password: "mypassword"
            dhcp4: no
            addresses: [192.168.0.52/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [8.8.8.8,8.8.4.4]

또한 이상한 점은 systemd-resolve --status이 구성을 적용한 후 netplan을 실행하면 이제 rpi1에서 필요한 DNS 이름 서버의 위치를 ​​인식하는 것 같다는 것입니다.

$ systemd-resolve --status
...

Link 2 (eth0)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 10.0.0.1
         DNS Servers: 10.0.0.1

...하지만 앞서 말했듯이 ping rpi4rpi3에서 이 작업을 수행하려고 하면 작동하지 않습니다("ping: rpi4: 이름 확인이 일시적으로 실패했습니다"라는 메시지가 표시됨).

간단히 말해서:

런타임이 sudo netplan applyDHCP 서버에 DNS 이름 서버를 쿼리하도록 하고 이를 설정하는 데 어떻게 사용할 수 있습니까 /etc/resolv.conf?

관련 정보