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 apply時にDHCPサーバーにDNSネームサーバーを照会させ、それを設定するためにどのように使用できますか/etc/resolv.conf

関連情報