Ubuntu22.04で固定IPを付与する【デスクトップ:GUI &コマンド:CUI】

サーバ

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
DNS192.168.3.1
Ubuntuに固定IPを付与する際の値

固定IP付与(コマンドライン編:CUI)

netplanとは

Ubuntu18系以降であれば、ネットワークは従来のifconfigではなく【netplan】という仕組みで管理しています。netplanの設定は、/etc/netplanに【.yaml】形式の設定ファイルを保存することで行います。

netplanを使う場合【/etc/network/interfaces】や【/etc/resolve.conf】を直接書き換えるのは禁止されています。

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順に読み込んで設定が行われ、設定項目が重複する場合には後に読み込んだファイルの設定値が上書きされていきます。

netplanにおけるyamlの読み込み方
  • /etc/netplan/*.yamlを全て参照
  • アルファベット順に参照していく
  • 参照した情報は上書きしていく

つまり、設定値の優先順位としては以下のようになります。

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]

yamlファイルにおいては、行頭のスペースにも意味があります。適切なインデントを行わないと設定値をうまく読み込めませんので、セクター毎のインデントは適切に行ってください。

routesはルーティングの設定
【to】の値【default】は「経路が未設定の全て」
【via】はルーターのIPアドレス
※経路未設定の通信は全てルーターを経由する

ネットワーク設定反映(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を付与する方法は以上です。

最後までお読みいただきありがとうございました。

コメント

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