次の単純なネットワークトポロジを使用して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.conf
rpi1()を指すように手動で編集することはうまくいきます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 rpi4
rpi3でこれを実行しようとすると機能しません(「ping:rpi4:名前解決が一時的に失敗しました」というメッセージが表示されます)。
簡単に言うと:
実行sudo netplan apply
時にDHCPサーバーにDNSネームサーバーを照会させ、それを設定するためにどのように使用できますか/etc/resolv.conf
?