Ubuntu20.04で「固定IPアドレス」を設定する方法を解説していきます。
Ubuntu18系以降は、Ubuntu16系まで使用できたifconfigは使えなくなっており、代わりに【netplan】という仕組みでネットワークの管理をしています。
固定IPの付与はGUI(デスクトップ)でもCUI(コマンドライン)でも行えますので、本記事ひとつで両方とも解説します。
UbuntuなどのLinuxマシンはサーバー用途で用いられることも多く、固定IPを付与しておいた方が何かと便利です。SSHでコマンドの実行を行うにもsmbでファイル共有を行うにも、ルーターから付与されるDHCPアドレスだと変動の可能性があり、DNS(名前解決)の方法を考えなくてはなりません。
最近のLinuxデスクトップは「ホスト名.local」でアクセスが可能なことも多いですが、古いOSなどの対応状況がイマイチなため結局「固定IPアドレス」の設定が必要になるケースも多く、やはり固定IPアドレスを付与しておくに越したことはないでしょう。
事前準備&確認
ルーターのDHCP範囲を確認
UbuntuのIPを決定するため、ルーターのLAN側IPアドレスDHCP範囲を確認しておきます。確認方法はルーターによって違いますが、大抵の場合はルーターのIPアドレスにアクセスすることで確認できます。
確認する項目は以下の内容です。設定値は仮のものを使用しておりますので、適宜ご自分の値に直してください。
- ルーターのLAN側IPアドレス
- ルーターのLAN側Iサブネットマスク
- ルーターのDHCPサーバーが自動で付与するアドレスの範囲
ここでは、以下の前提で話を進めていきます。
IPアドレス: 192.168.3.1
サブネットマスク: 255.255.255.3/24
DHCPアドレス範囲: 192.168.3.2 ~ 192.168.3.64
現在のUbuntuのIPアドレスを確認
現在のUbuntuのIPアドレスを確認しておきます。
デスクトップ環境
デスクトップ環境(GUI)であれば、「設定」→「ネットワーク」→「歯車マーク」→「該当ネットワークの歯車マーク」で確認できます。
サーバー環境
コマンドからは以下のコマンドを試してみて下さい。IP4に絞って表示できます。
$ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> 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: enp175s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.3.46/24 brd 192.168.3.255 scope global noprefixroute enp175s0
valid_lft forever preferred_lft forever
または、以下のコマンドであればもっと分かりやすいかもしれません。
$ ip -br addr show
lo UNKNOWN 127.0.0.1/8 ::1/128
enp175s0 UP 192.168.3.46/24 ****::****:***:****:****/**
sophy@UbuNuc:~$
現在のIPアドレス:192.168.3.46(DHCPで取得)
NIC(ネットワークアダプタ)のデバイス名を確認する
デスクトップ環境
デスクトップから固定IPを設定する場合には必要ありません。
サーバー環境
コマンドから確認する場合は、先ほどのipコマンドで確認できています。
Ubuntu22.04であれば有線LANアダプタのアドレスは”enp<数字>s<数字>“の命名規則になっています。
NICデバイス名: enp175s0
UbuntuのIPアドレスを決定
IPアドレスは同じ値を複数のデバイスに設定することはできません。つまり、IPアドレスはそのデバイス特有の値です。
ルーターはDHCPサーバーを兼ねていることがほとんどで、固定IPを持たないデバイスが接続されると自動割り当ての範囲内で特定のIPを付与します。
固定IPを付与したいUbuntuは、このDHCPの範囲から外れたIPアドレスを付与する必要があります。また、ルーターのアドレスである192.168.3.1も当然ながら使えません。
以上の前提を踏まえ、Ubuntuに付与したい固定IPを決定しておきます。今回は以下のようにします。
Ubuntu固定IP: 92.168.3.200
固定IP付与(デスクトップ編:GUI)
デスクトップであれば、該当のネットワークの詳細設定で「IPv4」タブ→「手動」(ラジオボタン)を選択→表示されたボックスにアドレスやDNSを正しく入力して「適用」の手順でOKです。
アドレス | 192.168.3.200 |
ネットマスク | 255.255.255.0 |
ゲートウェイ | 192.168.3.1 |
DNS | 192.168.3.1 |
固定IP付与(コマンドライン編:CUI)
netplanとは
Ubuntu18系以降であれば、ネットワークは従来のifconfigではなく【netplan】という仕組みで管理しています。netplanの設定は、/etc/netplanに【.yaml】形式の設定ファイルを保存することで行います。
yamlファイル(netplan設定ファイル)
デフォルト設定ファイル
デフォルトの設定ファイルは【/etc/netplan/****.yaml】です。****の部分はシステムによって変わります。わたしの環境では「01-network-manager-all.yaml」というファイルのみ存在していました。
$ cd /etc/netplan
$ ls -l
合計 4
-rw-r--r-- 1 root root 104 4月 19 2022 01-network-manager-all.yaml
yamlファイルの優先順位
/etc/netplanに複数のyamlファイルを設置した場合、ファイル名をABC順に読み込んで設定が行われ、設定項目が重複する場合には後に読み込んだファイルの設定値が上書きされていきます。
つまり、設定値の優先順位としては以下のようになります。
99****.yaml > 50****.yaml > 01****.yaml
この仕組みを利用すれば、簡単にデフォルトで配置されているyamlファイルより優先度が高いファイルを作ることができます。
固定IP用yamlファイルの作成
上記yamlファイルの優先順位を利用して、以下のように固定IP用のyamlファイルを作成します。.yaml以外のファイルは無視するので、拡張子は.yamlとしてください。
$ sudo cp 01-network-manager-all.yaml 02-network-manager-all.yaml
コピーした固定IP用yamlファイルを以下のように編集します。
network:
version: 2
renderer: networkd
ethernets:
enp175s0:
dhcp4: false
dhcp6: false
addresses: [192.168.3.200/24]
routes:
- to: default
via: 192.168.3.1
nameservers:
addresses: [192.168.3.1]
ネットワーク設定反映(netplan)
設定ファイルを書き変えたら、ネットワークの設定を反映しましょう。
$ sudo netplan apply
全てがうまくいけば、Ubuntuに指定した通りの固定IPが付与されているはずです。
遭遇したエラー
netplanで遭遇したエラーは以下のようなものでした。
インデントエラー
以下のエラーが出たら、yamlファイル内でどこかのスペースやインデントの数が合っていません。
Error in network definition: expected mapping (check indentation)
パーミッションエラー
yamlファイルのパーミッションがセキュリティ上好ましくない値になっています。yamlファイルはroot以外がアクセスできないようにする必要があります。
** (generate:4352): WARNING **: 23:03:18.075: Permissions for /etc/netplan/01-network-manager-all.yaml are too open. Netplan configuration should NOT be accessible by others.
上記のエラーが出たら大人しくパーミッションを変更しましょう。
$ sudo chmod 600 *.yaml
サブネットマスクエラー
アドレスにサブネットマスクが付与されていない時に起きました。サブネットマスクを付与した書き方に変えたら出現しなくなりました。
/etc/netplan/02-network-manager-all.yaml:11:18: Error in network definition: address '8.8.8.8' is missing /prefixlength
addresses: [8.8.8.8,8.8.4.4]
非推奨値エラー
非推奨の値が使用されている場合もエラーが出ます。
** (generate:3513): WARNING **: 23:46:28.698: `gateway4` has been deprecated, use default routes instead.
See the 'Default routes' section of the documentation for more details.
上記の場合、「gateway4」の設定値が非推奨になっています。gateway4の代わりに推奨される書き方は【routes】です。
ping確認
最後にWindowsと通信できるかpingで確認します。
Windows -> Ubuntu
コマンドプロンプトで以下。
> ping 192.168.3.200
Ubuntu -> Windows
ターミナルで以下。-cはpingを送る回数を指定するオプション。付与しないと延々とpingし続ける。
$ ping -c 4 [WindowsマシンのIPアドレス]
まとめ
Ubuntuで固定IPを付与する方法は以上です。
最後までお読みいただきありがとうございました。
コメント