Ubuntu22.04に固定IPアドレスを設定する

 本記事はUbuntu22.04の有線LANアダプタに固定IPアドレスを設定する方法について説明します。
 Ubuntuはインストールの初期設定では、IPアドレスが自動付与される設定になっています。
 この設定だと、再起動する度にIPアドレスが変わってしまうため、サーバ機として利用するには不都合です。このため、UbuntuのIPアドレスを固定させます。

補足:本記事では、有線LANアダプタに固定IPを設定する方法についての説明です。この手順で有線LANを設定すると、無線LANアダプタは無効になりますのでご注意ください。

補足:本記事で説明する固定IPアドレスの設定は、LANに接続された機器(PCやスマホなど)からサービスリクエストを受信するための設定となります。インターネットにサーバを公開する方法ではありませんので、インターネット等、LAN外のネットワークに接続された機器からサービスリクエストを受信することはできません。もちろん、このホストからインターネット等、LAN外に接続されたホストへのサービスリクエストは送信できるため、インターネット上のサービスは問題なく利用することができます。

1.接続ネットワーク情報の確認

 設定値を確定させるために、Ubuntuを接続するLANの情報を確認します。これは、インターネットアクセスルータで確認します。
 確認する項目は、以下のとおりです。以下の記事の設定値については、「私の場合は・・」となっているため、ご自身のLAN環境の設定値に置き換えてください。

アクセスルータのLAN側IPアドレスとサブネットマスク
  IPアドレス:192.168.0.1
  サブネットマスク:255.255.255.0(24ビット)
DHCPサーバが自動付与するアドレス範囲:192.168.0.2〜192.168.0.32

 ほとんどの場合、アクセスルータのLAN側IPアドレスのサブネットマスクは255.255.255.0、または/24となっています。
 255.255.255.0と/24は同じ意味です。この場合、LANに接続するデバイス(PC、スマートフォン、タブレット、etc)のIPアドレス(192.168.0.1)は、"."(ドット)で区切られた4つの数字のうち、前3つ(192.168.0)は固定、後ろの1つは1〜254の値に設定する必要があります。
 また、同じIPアドレスを複数のデバイスに設定することはできまん。このため、アクセスルータで使われているIPアドレス(192.168.0.1)は使えません。
 DHCPサーバは、固定IPアドレスが設定されていないデバイスがLANに接続されたときに、IPアドレスを自動割当するサーバです。自動割当に使われるIPアドレス(192.168.0.2〜192.168.0.32)は、重複する可能性があるので、固定IPには使用できません。
 通常、アクセスルータがDHCPサーバを兼ねます。自動割当されるIPアドレスの範囲は、アクセスルータの設定を確認してください。
 ルータによっては、初期設定で、自身のIPアドレス以外の全てのIPアドレスを自動割当の対象としていることがあります。このような場合は、固定IPアドレスを設定できるよう、自動割当するIPアドレスの範囲を変更してください。

2.ネットワークアダプタのデバイス名を確認する

 固定IPアドレスを設定するUbuntu PCの有線LANアダプタのデバイス名を確認します。Ubuntu22.04の場合、有線LANアダプタのアドレスは"enp<数字>s<数字>"の命名規則になっているようです。
 デバイス名は"ip addr" コマンドで確認します。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: enp89s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
   link/ether 1c:69:7a:a2:21:45 brd ff:ff:ff:ff:ff:ff

 私のPCの場合、"enp89s0"が有線LANのネットワークアダプタのデバイス名になっているので、以下、このデバイス名で説明します。適宜ご自身のPCの有線LANネットワークアダプタのデバイス名に読み替えてください。

3.固定IPアドレスを設定する

 IPアドレスの設定は、/etc/netplanに拡張子".yaml"の設定ファイルを保存することで行います。
 まずは、どのような設定ファイルが保存されているか確認します。

$ cd /etc/netplan
$ ls -l
-rw-r--r-- 1 root root 104  419 19:09 01-network-manager-all.yaml

 設定ファイルの中身を確認

$ sudo cat 01-network-manager-all.yaml.bak
Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

 YAML形式の設定ファイルになっています。"network:"と"version:2"は固定です。"renderer: "で指定されている"NetworkManager"は、PCの有線/無線LANアダプタにIPアドレスを自動設定するツールです。
 何かあった時に後で設定を元に戻せるように、ファイル名を変えて初期設定ファイルを残しておきます。

$ cd /etc/netplan
$ sudo mv 01-network-manager-all.yaml 01-network-manager-all.yaml.bak
$ ls -l
-rw-r--r-- 1 root root 104  419 19:09 01-network-manager-all.yaml.bak

つづいて、nanoなどのテキストエディタを使って、固定IPの設定ファイルを作成します。ファイル名の拡張子は、"yaml"としてください。これ以外の拡張子のファイルは設定を適用する際に無視されます。
 ここでは、ファイル名を"100-enp89s0-fixed.yaml"として説明します。

$ sudo nano 100-enp89s0-fixed.yaml

 設定ファイル"/etc/netplan/100-enp89s0-fixed.yaml"の中身

※※ 以下の設定ファイル例5行目の”enp89s0”の部分は、有線LANのネットワークアダプタの名前です。ネットワークアダプタ名はPCによって異なる名前がついているので、ご自身のネットワークアダプタ名"enp<数字>s<数字>"に書き換えてください。
ネットワークアダプタ名は上記のとおり、
$ ip addr
コマンドで確認することができます。
ネットワークアダプタ名があっていないとIPアドレスは正しく設定されません!!

network:
   version: 2
   renderer: networkd
   ethernets:
      enp89s0:
         addresses: [192.168.0.100/24]
         nameservers:
            addresses: [8.8.8.8]
         routes:
            - to: default
              via: 192.168.0.1

・yamlは、インデント(段落)に意味があるため、同じレベルにくるべき項目の行頭位置がずれるとエラーになります。行頭の空白を消さないでください。
・固定ipを設定するときは、rendererで設定ツールを"networkd"に指定します。
・ethernets以下は、有線LANアダプタの設定項目です。
・enp89s0以下は、このデバイスのネットワーク設定です。適宜ご自身の有線LANのデバイス名に書き換えてください。
・addressesが設定したい固定IPアドレスです。ここでは192.168.0.100、サブネットマスク24ビットの固定IPアドレスを割り当てています。アドレスは適宜ご自身のLAN環境に合わせて書き換えてください。なお、"[]"(カギ括弧)でくくられているのは、値がリスト形式であることを意味していて、","(カンマ)で区切って複数のIPアドレスを設定することも可能です。ただし、特殊な場合をのぞき、1つのデバイスに対して固定IPアドレスは1つしか設定しません。
・nameservers以下は、キャッシュDNSの設定で、addressesでキャッシュDNSのIPアドレスを指定しています。リスト形式のオブジェクトなのでキャッシュDNSは","(カンマ)区切りで複数設定できます。"8.8.8.8"は、googleがインターネットで公開しているキャッシュDNSサーバのIPアドレスです。このキャッシュDNSサーバは、インターネットに接続していれば誰でも利用可能です。必要に応じ、ご利用のインターネットサービスプロバイダのキャッシュDNSに書き換えるなどしてください。
・routes以下は、IPネットワークの経路設定(ルーティング設定)です。toの値がdefaultとなっているのは、"経路設定されていない宛先ネットワーク全てに対して"という意味です。viaの192.168.0.1はアクセスルータのLANのIPアドレスです。つまりここでは、「LANから外に出る場合はすべてルータを経由してアクセスする」という意味になります。192.168.0.1については、ご自身のLAN環境の設定値に適宜書き換えてください。

設定ファイルの保存が終わったらnetplanコマンドを実行して設定内容を反映させます。

$ sudo netplan apply

なお、/etc/netplan配下の拡張子".yaml"の設定ファイルは、アルファベット順に読み込まれ、設定反映されていきます。拡張子".yaml"以外のファイルは無視されます。拡張子".yaml"ファイルはすべて設定ファイルとして認識されますので、このディレクトリにファイルを保存する際は注意して下さい。
ip addrコマンドで確認。

$ ip addr

略

2: enp89s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
   link/ether 1c:69:7a:a2:21:45 brd ff:ff:ff:ff:ff:ff
   inet 192.168.0.100/24 brd 192.168.0.255 scope global enp89s0
      valid_lft forever preferred_lft forever
   inet6 fe80::1e69:7aff:fea2:2145/64 scope link 
      valid_lft forever preferred_lft forever

略

無事、enp89s0のipアドレスが192.168.100に設定されました。
ついでに、インターネット接続がうまくいくかどうかwww.google.co.jpにpingをうって確かめてみます。

$ ping www.google.co.jp
PING www.google.co.jp (172.217.26.227) 56(84) bytes of data.
64 bytes from nrt12s51-in-f3.1e100.net (172.217.26.227): icmp_seq=1 ttl=116 time=6.61 ms

 無事pingが帰ってきたら、インターネット接続、キャッシュDNSのホスト名解決ともにうまくいったということになります。

 うまくいかないときなど、設定を元に戻したいときは、上記で作成した固定IPアドレスを設定するための設定ファイルを消すか、拡張子を".yaml"以外に変更、初期設定ファイルのファイル名を拡張子".yaml"のファイル名に戻し、netplanコマンドを再実行します。

$ cd /etc/netplan
$ sudo mv 01-network-manager-all.yaml.bak 01-network-manager-all.yaml
$ sudo mv 100-enp89s0-fixed.yaml 100-enp89s0-fixed.yaml.bak
$ sudo netplan apply

この記事が気に入ったらサポートをしてみませんか?