CentOS Stream 9ユーザーが贈る、UbuntuでのIP固定化手順

この記事は約6分で読めます。

長年CentOS(RHEL系)でサーバーを触ってきた管理人ですが、新サーバーへブログを移転するにあたり、WordPressの構築・管理ツールとして定評のある「WordOps」を導入しようとしたところ、これがRed Hat系(CentOSなど)に非対応で、Debian系/Ubuntuしか使えないことが判明。
背に腹は代えられないということで、今回、涙をのんで初のUbuntuサーバーを構築するに至りました。
結論から言うと、「ネットワーク周りのお作法が全然違う」ので、CentOS感覚で突っ込むと一瞬で迷子になります。今回はその違いを交えながら、UbuntuでのIP固定化(Netplan)の手順をメモしておきます。

🚨 最大の違い:NetworkManager(nmcli)は使わない

CentOS Stream 9であれば、IPの固定はみんな大好き nmcli コマンドを使うか、/etc/NetworkManager/system-connections/ 配下の .nmconnection ファイルをいじりますよね。

  • CentOS 9の場合: nmcli connection modify... で一発。
  • Ubuntuの場合: 基本は Netplan(ネットプラン) という仕組みを使い、/etc/netplan/ にある YAMLファイル を直接書き換えます。

1. ネットワークカード名(インターフェース名)を調べる

ここは両者同じです。まずは固定したいNICの名前を確認します。

Bash
ip a

CentOSだと enp0s3eth0 だったりしますが、Ubuntuでも同様に enp3s0 などの名前が出てくるので、それを控えておきます。

2. YAMLファイルを編集する(ここが本番)

Ubuntuのネットワーク設定は、すべて /etc/netplan/ の中にあるYAMLファイルで管理されています。

Bash
ls /etc/netplan/

01-netcfg.yaml50-cloud-init.yaml のようなファイルが1つ転がっているはずです。これを nanovim で開きます。

Bash
sudo nano /etc/netplan/01-netcfg.yaml

中身を以下のように書き換えます。

YAML
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0: # ここにさっき確認したNIC名
      dhcp4: no
      addresses:
        - 192.168.1.100/24 # 固定したいIPアドレス
      routes:
        - to: default
          via: 192.168.1.1 # ルーター(ゲートウェイ)のIP
      nameservers:
        addresses:
          - 8.8.8.8 # DNSサーバー
          - 1.1.1.1
  • インデントはスペースのみ:YAML形式なので、タブ文字を使うとパースエラーで怒られます。スペース2個ずつで綺麗に揃えるのが鉄則です。
  • gateway4は非推奨:古いネットのトピックスだと gateway4: 192.168.1.1 と書かれていることが多いですが、今のUbuntuでは非推奨(Deprecated)です。上記のように routesvia で書くのがナウいやり方です。

3. 設定を適用する(Ubuntuの超優秀な安全機能)

CentOS Stream9なら nmcli connection upsystemctl restart NetworkManager を叩いて一発ですが、Ubuntuには神コマンドがあります。

Bash
sudo netplan try

これを叩くと、設定を一時的にテストしてくれます。 もし設定をミスってSSHが切断されてしまっても、120秒間何も入力がなければ、自動的に元の設定にロールバック(復元)してくれます。リモート作業でサーバーを孤立させる恐怖がないので、これはCentOSにも欲しいレベルで優秀な機能です。

画面に「設定キープする?(Enter押して)」的なメッセージが出て、通信が死んでいなければ、そのままEnterを押すか、以下で本適用します。

Bash
sudo netplan apply

最後に ip a で指定したIPに変わっていれば完了です!

💡 おまけ:DNS設定が反映されているか確認する罠(CentOSとの違い)

IPと同時にDNS(8.8.8.8 など)を設定したあと、CentOSユーザーなら確認のために /etc/resolv.conf を覗きたくなりますよね。

ですが、Ubuntuでそれをやるとこうなっています。

Plaintext
nameserver 127.0.0.53

「あれ?設定したGoogleのDNSが反映されてない!?」と焦る必要はありません。 Ubuntuはデフォルトで systemd-resolved というDNSキャッシュの仕組みが動いており、すべてのDNS問い合わせを一度ローカルの 127.0.0.53 に集約する仕様になっています。

本当にNetplanで設定したDNSが裏で認識されているか確認したいときは、以下のコマンドを叩きます。

Bash
resolvectl status

コマンドを叩いて、出力の最後に以下のように自分が設定したDNS(DNS Servers)が表示されていれば、内部的には大成功でカチッと反映されています。

Plaintext
Link 2 (enp3s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS :
       DNS Servers: 8.8.8.8
                    1.1.1.1

まとめ

長年CentOS(RHEL系)のコマンドを体に染み込ませてきた身としては、YAMLファイルを直接いじるUbuntuの「Netplan」は最初はかなり戸惑いました。

ですが、設定ミスでSSHが切断されても自動で巻き戻してくれる netplan try の優秀さを知ると、「Ubuntuもなかなかやるじゃないか」と思わされます。

お作法は違えど、狙い通りのIPとDNSがカチッと反映され、通信が通ればこちらのもの。

結論:なんか動いたからヨシ!

今後もWordOpsの運用のためにUbuntuと付き合っていくことになるので、またCentOSユーザー目線で「おや?」と思った小手先の設定云々があればメモを残していきます。

管理人
管理人

今回は以上です。お疲れ様でした!

コメント

タイトルとURLをコピーしました