【Ubuntu】固定IPアドレスの設定(無線LAN、Wi-Fi対応):netplan
2022.03.31 /
本記事ではLinux系OSのUbuntuにおける、IPアドレスを設定(固定IP)する方法について解説していきます。
IPアドレスをDHCPで取得していた場合、IPアドレスが変わってしまうためサーバーには不向きな設定です。
Ubuntuをサーバーとして利用するならば、固定IPアドレスで設定しておくことが望ましいです。
本記事では有線LANの場合と無線(Wi-Fi)の場合、両方の設定方法を解説しています。ぜひ参考にしていただき、UbuntuのIPアドレス設定を進めてください。
過去バージョンでのIPアドレス設定
Ubuntu16.10以前では、/etc/network/interfacesファイルを修正して固定IPアドレスを設定していました。
Ubuntuの古い本や、過去のサイトではこの方法が記述されていますが、新しいバージョンのUbuntuを利用している方は無視してください。
interfacesファイルの設定例は次のようになります。
auto lo
iface lo inet loopback
auto enp0s25
iface enp0s25 inet static
address 192.168.1.100
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-search office54.jp
現在のUbuntuでは/etc/network/interfacesファイルでのIPアドレス設定は廃止され、次項より解説するnetplanで設定するようになりました。
UbuntuのIPアドレス設定:netplan
最新のUbuntuでIPアドレスを設定する場合、以下の流れで設定を行います。ここではWi-Fiを利用するため、無線LANのIPアドレスを固定していきます。
- ネットワークインターフェースの確認(無線LAN)
- ネットワーク設定ファイルをコピー
- コピーしたネットワーク設定ファイルを編集
- 無線LANの固定IPアドレスを追記する
- ネットワーク設定を反映させる
上記の流れを次項より詳しく
IPアドレスおよびネットワークインターフェースの確認方法
ダウンロード直後のUbuntuではIPアドレスはDHCPで取得する設定になっています。
現在DHCPで取得しているIPアドレスは以下コマンドで確認できます。
$ ip a
1: lo: …
2: eth0: …
3: wlan0: …
Loはloopbackネットワーク、eth0は有線LAN、wlan0は無線LANを表しています。上記を確認することで現在のIPアドレスが確認できます。
また「ip -a」から無線LANのインターフェース名も確認できます。ここではwlan0が無線LANのインターフェース名であることが確認できます。
IPアドレスの確認は「ip -a」以外にも「ip addr show」や「hostname -I」でも確認することができます。
ネットワークの設定ファイル
最新のUbuntuではネットワークの設定・管理にsystemd-networkd(パッケージ:systemd)とnetplan(パッケージ:netplan.io)のソフトウェアを使用します。
IPアドレスやサブネットマスクといったネットワーク設定は以下ファイルに記述しています。
/etc/netplan/50-cloud-init.yaml
# 50-cloud-init.yaml
# 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:
ens0:
dhcp4: true
version: 2
netplanの設定ファイルはYAML(YAML Ain’t Markup Language)で記述されます。
ネットワーク設定ファイルをコピーする
ネットワーク設定ファイルの50-cloud-init.yamlを編集して固定IPアドレスを設定せずに、コピーした別ファイルに固定IPアドレスの設定を記述しましょう。
通常はありませんが、50-cloud-init.yamlがcloud-initの処理によって上書きされてしまう恐れがあるためです。
そのため基本的にはコピーした別のyamlファイルを作っておきましょう。しかしここで作成するyamlファイル名に注意する必要があります。
netplanには次のような特徴があります。
- /etc/netplan/*.yamlをすべて参照する
- 参照する順番はアルファベット順
- 参照した情報は上書きしていく
つまり名前順で参照していき、最後に参照した設定が優先されるということです。
そのためコピーしたyamlファイルは50-cloud-init.yamlよりも名前順が後ろになるように名前を付けましょう。
以下に設定ファイルをコピーするコマンド例を記します。ここでは54-cloud-init.yamlという名前にしています。
$ cd /etc/netplan
$ cp 50-cloud-init.yaml 54-cloud-init.yaml
IPアドレスを固定IPに変更する
コピー作成したネットワーク設定ファイルに固定IPアドレスの設定を追加します。
有線LANの場合と無線LAN(Wi-Fi)の場合でそれぞれ解説していきます。
有線LANの固定IPアドレス
有線LANの場合、以下のように固定IPアドレスを設定します。
network:
ethernets:
インターフェース名:
dhcp4: false
dhcp6: false
addresses: [IPアドレス]
gateway4: デフォルトゲートウェイのIPアドレス
nameservers:
addresses: [DNSアドレス]
version: 2
インターフェース名は「ip a」で確認した名前を記入します。
addressに記入するIPアドレスはCIDR表記でサブネットマスクを指定します。
固定IPにするため、DHCPの機能はfalseにしておきます。
有線LANでの固定IPアドレスを設定する場合の例を以下に記します。
network:
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses: [192.168.1.54/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
version: 2
無線LAN(Wi-Fi)の固定IPアドレス
Wi-Fiで接続する場合はwifisキーを用います。以下のようにネットワーク設定ファイルを記述します。
network:
version: 2
renderer: networkd
wifis:
インターフェース名:
dhcp4: false
dhcp6: false
sddresses: [IPアドレス]
gateway4: デフォルトゲートウェイのIPアドレス
nameservers:
addresses: [DNSサーバアドレス]
access-points:
"SSID":
password: "パスワード"
Wi-Fiでの固定IPアドレスを設定する場合の例を以下に記します。
network:
version: 2
wifis:
wlan0:
optional: false
dhcp4: false
dhcp6: false
addresses: [192.168.1.54/24]
gateway4: 192.168.1.11
nameservers:
addresses: [8.8.8.8]
access-points:
"aterm-office-54":
password: "ubuntu"
ネットワーク設定の反映
ネットワーク設定ファイルに固定IPアドレス情報を追記した以下コマンドを実行しましょう。
sudo netplan apply
上記コマンドによって変更した設定が反映されます。わざわざサーバーを再起動する必要はありません。
IPアドレスを固定にする際の注意点
利用可能なIPアドレスを確認しておく
DHCPでIPアドレスを取得する場合は、利用可能なIPアドレスの範囲などを考える必要はないです。しかし固定でIPアドレスを設定する場合は、指定可能なIPアドレスの範囲を考える必要があります。
例えばルーターが192.168.1.1というアドレスであれば、指定できるIPアドレスの範囲は192.168.1.2~192.168.1.254となります。
192.168.1.255はブロードキャストアドレス、192.168.1.0はネットワークアドレスなので、これらは使用することができません。
ネットワーク内で使用されていないIPアドレスを使用する
使用できるIPアドレスの範囲を求めたら、次に使用したいIPアドレスが他のデバイスで使用されていないかを確認しておく必要があります。
IPアドレスの重複確認の方法としてpingコマンドが使われることが多いです。
以下のようにして、他のデバイスでIPアドレスが使われていないかを確認します。
$ ping -c 4 192.168.1.54
PING 192.168.1.54 (192.168.1.54) 56(84) bytes of data.
--- 192.168.1.54 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3065ms
上記の場合は、他のデバイスでIPアドレスが使われていないことを意味します。
必ずIPアドレスを設定する前に、他のデバイスで使われていないかを確認するようにしましょう。