Ubuntu 18.04 LTSで固定IPアドレスを設定する方法【サーバー編】

Linuxガイド

Ubuntu 18.04 LTSのサーバー版で「固定IPアドレス」を設定する方法を、初心者にも分かりやすく解説します。

Ubuntu 18.04 LTSのサーバー版を使うなら、インストール時に固定IPアドレスを設定する場合が多いと思われます。しかし、IPアドレスをDHCPサーバーから自動取得する形でインストールを行い、後で固定IPアドレスを設定したくなる場合もあるでしょう。また、インストール後にIPアドレスを変更したくなることもあります。このページでは、Ubuntu 18.04 LTSの固定IPアドレス設定についてまとめます。

デフォルトのネットワーク設定ファイル

Ubuntu 18.04 LTSのサーバー版インストールイメージには、新しく開発された「ライブインストーラー(subiquity)版」と、従来の「Debianインストーラー版」があります。

「ライブインストーラー版」を使ってインストールした場合、ネットワーク設定ファイルとして「/etc/netplan/50-cloud-init.yaml」が配置されます。
DHCPサーバーからネットワーク設定を取得するよう設定した場合は、次のような内容になります。

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# 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:
        enp0s3:
            addresses: []
            dhcp4: true
    version: 2

上記のうち、ネットワークインタフェース名「enp0s3」は、ハードウェアにより異なります。ここに記載されているネットワークインタフェース名は、新たに設定ファイルを作る時に必要になります。

「Debianインストーラー版」を使ってインストールした場合、ネットワーク設定ファイルとして、「/etc/netplan/01-netcfg.yaml」が配置されます。内容は、「50-cloud-init.yaml」と大きく変わりません。

これらのファイルを書き換えるか、新たに「/etc/netplan/」にYAMLファイルを配置することで、ネットワーク設定の変更が可能です。

固定IPアドレスの設定例

ここでは、デフォルトのネットワーク設定ファイルは無効化し、新たに「/etc/netplan/99-network-config.yaml」を追加して固定IPアドレスを設定する例を紹介します。

「ライブインストーラー版」を使ってインストールした場合は、「/etc/netplan/50-cloud-init.yaml」を削除するか、別の拡張子にリネームしておきます。以下は、「50-cloud-init.yaml.disabled」にリネームする例です。

cd /etc/netplan/
sudo mv 50-cloud-init.yaml 50-cloud-init.yaml.disabled

「Debianインストーラー版」を使ってインストールした場合、「/etc/netplan/01-netcfg.yaml」を削除するか、別の拡張子にリネームしておきます。以下は、「01-netcfg.yaml.disabled」にリネームする例です。

cd /etc/netplan/
sudo mv 01-netcfg.yaml 01-netcfg.yaml.disabled

そして、「99-network-config.yaml」をsudoeditなどを使って作成します。以下は記述例です。

network:
    version: 2
    ethernets:
        enp0s3:
            addresses: [192.168.1.5/24]
            gateway4: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1]
                search: []
            optional: true

この例は、以下のネットワーク設定の記述例です。

ネットワークインタフェース
enp0s3
アドレス
192.168.1.5
ネットマスク
255.255.255.0(ビット指定だと「/24」)
ゲートウェイ
192.168.1.1
DNS
192.168.1.1

ネットワークインタフェース名は、前述の通り「50-cloud-init.yaml」あるいは「01-netcfg.yaml」に記されていたものを用いると良いでしょう。分からなくなった場合やハードウェア構成が変わった場合は、「ip a」や「networkctl」といったコマンドで調べることができます。

設定の反映

/etc/netplan/」以下に配置した設定ファイルを変更した後、ネットワーク設定に反映するには次のコマンドを実行します。

sudo netplan apply

正常に設定が反映された場合は、何も出力されません。ip a」コマンドなどで、想定通りに固定IPアドレスが設定されたかを確認しましょう。以下は、前出の「99-network-config.yaml」を配置した場合の例です。

$ ip a s enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:00:5e:00:53:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.111.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 2001:0db8::200:5eff:fe00:5327/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591998sec preferred_lft 604798sec
    inet6 fe80::200:5eff:fe00:5327/64 scope link 
       valid_lft forever preferred_lft forever

複数のYAMLファイルを配置した場合

なお、複数の「YAML」ファイルを「/etc/netplan/」に配置すると、ファイル名の辞書順で読み込んで設定がマージされます。たとえば、DHCPによるネットワーク設定を記述したファイルと、固定IPアドレスの設定を記述したファイルの2つを配置すれば、自動取得したIPアドレスと固定IPアドレスの両方が設定される、といったことが起こります。そして設定項目が重複する場合は、後から読み込まれたファイルが前に読み込まれたファイルの設定を上書きします。よって、「01」「50」で始まるファイルより、「99」で始まるファイルに書かれた設定が優先される、ということになります。

関連記事


コマンドラインで自分のグローバルアドレスを取得する方法
先日、SSHサーバーを踏み台にしてWebアクセスする記事を書きました。 その時、アクセス元のグローバルアドレスなどを確認できるページを作ってリンクしたのですが、「そういえばコマンドラインからグローバルアドレスを取得できたほうが便利だな...

Linuxガイド
\シェアお願いします/
LFI

コメント

  1. bou より:

    yamlファイルの設定、変更以外の方法でipアドレスを変更することは可能でしょうか?
    どなたか返信頂けると嬉しいです。

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