お金をかけずにサーバーの勉強をしよう

Ubuntu 24.04の固定IP変更

2024年5月13日

メニューへ戻る

Ubuntuの IPアドレスを途中で変えたくなったら。

これは備忘録です。

私は Linuxサーバーのお勉強のために VMware Workstation Player上に Ubuntu Serverを何度もいくつも作り直すものですから、いつしか Ubuntuのインストールを端折るため、仮想マシンの元ネタフォルダをコピーして作るようになりました。

これをするとインストールと日本語化などの定例初期設定作業を省け、手間がないから時間が短くて楽です。

ですけど IPアドレスとマシン名だけは元ネタと競合してしまいますので、これだけは変更しないといけません。
その方法として固定IPアドレスの変更方法を記しておこうと思います。

Canonicalの Ubuntuのドキュメントではこちらです。
Network Configuration

ここの「Static IP Address Assignment」という段落に [/etc/netplan/99_config.yaml]ファイルにネットワーク設定を書く例があります。

実際に [/etc/netplan]ディレクトリの下を見てみると、[99_config.yaml]ファイルではない、インストーラが作った設定ファイルが 1つありました。

subro@UbuntuServer2404:~$ ls -l /etc/netplan
合計 4
-rw------- 1 root root 645  5月  1 11:01 50-cloud-init.yaml

[50-cloud-init.yaml]ファイルの中身はつーと、

subro@UbuntuServer2404:~$ sudo cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens32:
            addresses:
            - 192.168.1.101/24
            nameservers:
                addresses:
                - 192.168.1.1
                search:
                - subrohouse.internal
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

こうなっておりました。
これは私が OSインストールの最中に設定した IPアドレスの情報です。

Ubuntuでは netplanと言う仕組みで起動時にネットワークの設定をしていて、[/etc/netplan]ディレクトリの下にある、

xx任意の名前.yaml
(xxは通し番号です)

という名を持つファイル番号が小さい順に読んでいきます。

※そういうわけで、ネットワークインターフェイスを 1つだけ持っているマシンであれば、基本的にはファイルはこれ 1つで良いでしょう。
私が上記ドキュメントにを参考に [99_config.yaml]ファイルを作ってみましたら、番号の大きいファイルで上書きされるのかとおもいきや、[ens32] にもう 1つ IPアドレスが追加されてしまいました。
私がやりたいのは IPアドレス変更であって追加ではありません。

単に現行の IPアドレスを変更したいのであれば、[/etc/netplan/50-cloud-init.yaml]ファイルを書き換えれば良さげです。
というか、私はそうしています。

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens32:
            addresses:
            - 192.168.1.103/24
            nameservers:
                addresses:
                - 192.168.1.1
                search:
                - subrohouse.internal
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

IPアドレスのみ書き換えました。
DNSやらも変えたいのであれば、該当箇所を変えましょう。

変更を有効化するために以下を実行します。

subro@UbuntuServer2404:~$ sudo netplan apply

IPアドレスが変わってしまったので、SSHセッションがハングしてしまいました。
他のターミナルから新しい IPアドレスに再ログインします。

IPアドレスは変わったでしょうか。

subro@UbuntuServer2404:~$ ip -4 address
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens32:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp2s0
    inet 192.168.1.103/24 brd 192.168.1.255 scope global ens32
       valid_lft forever preferred_lft forever

想定通りに変わりましたね。

特に感慨もなく、次の作業に移るのでした。