ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

続・自宅環境でUbuntu ServerをインストールするとDHCP周りがおかしい

前回こんな記事を書きました。

ytooyama.hatenadiary.jp

その時の解決策として、Networkdを使わずにNetwork Managerを使う方が最善と言ったような結論にしました。 Network ManagerはエンタープライズLinuxで標準で使われていますからね。安定していますし。

今回は別の方法を考えてみることにしました。

別の方法を考えるきっかけ

先日、Raspberry Pi 4Bを買ったんですよ。

f:id:ytooyama:20200621154523j:plain f:id:ytooyama:20200621160334j:plain

で、まずはRaspbianをインストールしたわけです。 その時の成果物はQiitaに昨日、投稿した通り。

qiita.com

そして、あるアプリケーションを実行したくて、先ほどの投稿に書いた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は他ディストリビューションを使っていても役立つ情報があって素敵ですね。

wiki.archlinux.jp

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。