前回こんな記事を書きました。
その時の解決策として、Networkdを使わずにNetwork Managerを使う方が最善と言ったような結論にしました。 Network ManagerはエンタープライズLinuxで標準で使われていますからね。安定していますし。
今回は別の方法を考えてみることにしました。
別の方法を考えるきっかけ
先日、Raspberry Pi 4Bを買ったんですよ。
で、まずはRaspbianをインストールしたわけです。 その時の成果物はQiitaに昨日、投稿した通り。
そして、あるアプリケーションを実行したくて、先ほどの投稿に書いたRaspberry Pi Imagerを使って、Ubuntu 20.04を導入してみたんです。そうしたらDHCPで割り当てられたIPアドレスがコロコロ変わる問題が発生したわけです。
ところが、Raspbianを使っていた間は全く発生しませんでした。この差はなんだろうかと考えたのですが、やはりDHCPクライアントの差かなと思ったわけです。
このブログでは度々説明しているように、Ubuntu Server 17.10以降のバージョンではNetplan.io + networkdが使われています。IPアドレスのリクエストはNetplan.ioが中継してレンダラー(renderer)として指定したエンジン(例えばServer版はnetworkdとか、Desktop版はNetworkManager)をコントロールします。
Ubuntu Serverの場合、Netplan.io + networkdの組み合わせの時はDHCPクライアントはnetworkdが管轄するようです。ソースは忘却してしまいましたがnetworkdのDHCPクライアント機能は未実装な機能があるらしく、一部のDHCPサーバーで問題が発生するパターンがあるようです。
一方Raspbianはdhcpcdを使っていました。dhcpcd は DHCP と DHCPv6 対応のオープンソースで開発されているDHCPクライアントです。もしかして、Ubuntu ServerにdhcpcdをインストールしてdhcpcdをDHCPクライアントとして使えば問題を解消できるのではと思ったわけです。
そのアイデアはうまくいきました。
セットアップ方法
手順は以下のとおりです。
dhcpcdをインストール
Ubuntuにdhcpcdをインストールします。dhcpcd5という名前のパッケージをインストールすれば良いようです。
sudo apt install dhcpcd5
dhcpcdパッケージの確認
dpkg -L
コマンドを実行します。この結果、設定ファイルは /etc/dhcpcd.conf
にあることがわかりました。
dpkg -L dhcpcd5 /. /etc /etc/dhcpcd.conf /etc/init.d /etc/init.d/dhcpcd ...
dhcpcdの設定を行う
設定方法は man dhcpcd.conf
で確認。
最小設定は以下の設定を末尾に追記。
sudo vi /etc/dhcpcd.conf ... interface eth0 dhcp dhcp6
Netplanにはご退場いただく(オプションで /etc/netplan
配下のYAMLファイルを削除)。
sudo apt remove netplan.io sudo reboot
以上です。これで自宅の環境では何度再起動してもIPアドレスがコロコロ変わらなくなりました。 IPアドレスの固定化の方法やdhcpcdについては、以下のページに纏まっています。 相変わらず、Arch LinuxのWikiは他ディストリビューションを使っていても役立つ情報があって素敵ですね。