ytooyamaのブログ

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

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

先日、自宅の環境でUbuntu Serverをインストールすると、DHCP周りがおかしいことに気がつきました。 いや、実を言うと随分前から「ん?」って思うことが度々発生していました。

アップデート中とか、少々SSH接続していたものを放置するとセッションが切れたりするんです。 なんでかなと思ってUbuntu Serverの systemd-netwokd サービスを再起動してみると、確実にIPアドレスが変わりました。当然ながら再起動してもIPアドレスが変化します。IPアドレスが変わっちゃったら当然セッションは切れるわなー。

このことを社内Slackで愚痴ってみたところ、再現しないとの声が多数。つまり、環境依存みたいですね。

NetworkManagerを使った場合は、IPアドレスがコロコロ変わるなどという現象は起きないことがわかりました。どうやら家のDHCPサーバーとnetworkdとの相性が悪いようです。

Ubuntuのネットワーク周り

Ubuntu 17.10以降ではNetplan.ioが、Ubuntuのネットワークを簡単に構成するためのユーティリティとして実装されています。Ubuntu DesktopはバックエンドとしてNetworkManager、Ubuntu Serverはsystemdのnetworkdを利用しています。

この問題はUbuntu Desktopでは起きていませんでした。というわけで、Ubuntu Serverのセットアップ後に network-manager パッケージのセットアップと、以下のようなインターフェイスの定義を行って再起動して回避することにしました。

% sudo vi /etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: NetworkManager

この設定はUbuntu Desktopのデフォルトと同じ設定です。IPアドレスなどはNetwork Managerのツール(例えば nmcliやnmtui)で設定を行います。

カスタムISOを作ることにした

ただ、インストールごとに毎回 network-manager をインストールするのも面倒です。そこで、カスタムISOを作ることにしました。Ubuntuでは色々なカスタムISOイメージを作るツールがある(例えばubuntu-defaults-builderとか)ようですが、今回利用したのはCubicというものです。

launchpad.net

使い方はこちらのブログにまとめられていたので参考にしました。

www.techrepublic.com

実行中にCLIの画面が現れるので、追加インストールしたいパッケージを入れるだけで良いそうです。これならおバカな私にも使える!

Ubuntu Archive上に公開されているパッケージ、PPA上のパッケージ、サードパーティのリポジトリー上のパッケージなどを入れることができるようです。Zabbix AgentとかPrometheusのなんとかExpoterのインストール済みUbuntuインストーラーとかも作れそうですね。

今回はこのCubicを使って、次のように実行しました。ISOを作った時の最新パッチの適用、あとはNetwork Managerのインストールとサービス起動です。

sudo apt update && sudo apt upgrade && sudo apt install network-manager && sudo systemctl enable NetworkManager

こんな感じでISOイメージが出来上がります。

f:id:ytooyama:20200604113120p:plain

ちなみにこのままだとNetplan.io + networkdの構成でUbuntu Serverが動作しますので、困ったときに renderer: NetworkManager をNetplan.ioのconfigに仕込むことにしました。

今回は自宅の環境依存の対応のためにCubicを使いましたが、これ、割と便利ですね。定期的に新しいイメージを作れば、インストール毎にアップデートなどしないで済むので良いですね。

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