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

 本記事はUbuntuに固定IPアドレスを設定する方法について説明します。
 Ubuntuはインストールの初期設定では、IPアドレスが自動付与される設定になっています。
 この設定だと、起動する度にIPアドレスが変わってしまいます。デスクトップパソコンとして使うには便利なのですが、サーバ機として利用するには不都合です。このため、UbuntuのIPアドレスを固定させます。

関連記事
  ベアボーンのミニPCを組み上げてみた
 Ubuntu20.04 LTSのインストール
 Ubuntu20.04 管理者権限(sudo)の設定
 Ubuntu20.04に固定IPアドレスを設定する(この記事)
 Ubuntu20.04 SSHサーバのインストール
 Ubuntu20.04でリモートデスクトップ

低電力ベアボーンミニPC(OSなし)
インテル NUCミニPC 第 11 世代 Core i5ベアボーンキット
 (NUC11PAHi5 RNUC11PAHi50000) 

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

 Ubuntuを接続するLANの情報を確認します。接続したいLANに他のパソコンをつないでいる場合は、そちらから確認することができます。
 windows PCの場合は、「コマンドプロンプト」アプリから、ipconfig /allを実行すると、ネットワーク設定に必要な情報を一通り確認できます。

>ipconfig /all

Windows IP 構成

  ホスト名. . . . . . . . . . . . . . .: DESKTOP-8K50I8Q
  プライマリ DNS サフィックス . . . . .:
  ノード タイプ . . . . . . . . . . . .: ハイブリッド
  IP ルーティング有効 . . . . . . . . .: いいえ
  WINS プロキシ有効 . . . . . . . . . .: いいえ

Wireless LAN adapter Wi-Fi:

  接続固有の DNS サフィックス . . . . .:
  説明. . . . . . . . . . . . . . . . .: ELECOM WDC-433DU2H 11ac Wireless Adapter
  物理アドレス. . . . . . . . . . . . .: BC-5C-4C-84-5B-98
  DHCP 有効 . . . . . . . . . . . . . .: はい
  自動構成有効. . . . . . . . . . . . .: はい
  リンクローカル IPv6 アドレス. . . . .: fe80::f4d2:9e1f:abad:53b9%7(優先)
  IPv4 アドレス . . . . . . . . . . . .: 192.168.0.16(優先)
  サブネット マスク . . . . . . . . . .: 255.255.255.0
  リース取得. . . . . . . . . . . . . .: 202141812:23:38
  リースの有効期限. . . . . . . . . . .: 20214297:01:24
  デフォルト ゲートウェイ . . . . . . .: 192.168.0.1
  DHCP サーバー . . . . . . . . . . . .: 192.168.0.1
  DHCPv6 IAID . . . . . . . . . . . . .: 247225420
  DHCPv6 クライアント DUID. . . . . . .: 00-01-00-01-20-F3-74-66-88-D7-F6-7A-6C-EE
  DNS サーバー. . . . . . . . . . . . .: 192.168.0.1
  NetBIOS over TCP/IP . . . . . . . . .: 有効         

 実行結果から、Ubuntuの固定IPアドレス設定に必要な情報は以下のとおりとなります。

ネットワークアドレス:192.168.0.0
サブネットマスク:255.255.255.0(24ビット)
デフォルトゲートウェイ:192.168.0.1
DNSサーバ:192.168.0.1

 ネットワークアドレスについては、IPv4アドレス(192.168.0.16)とサブネットマスク(255.255.255.0)から割り出します。そのためにはネットワークの知識が必要になります。詳しく知りたい方はこちらのサイトなど参考になるかもしれません。
 また、IPアドレスが他の機器と重複すると正常に通信ができなくなりますので、意図せずアドレスが重複しないことを確認する必要があります。自宅LANの場合、アクセスルータがDHCPサーバ(IPアドレスを自動設定するサーバ)を兼ねるケースがほとんどです。アクセスルータの設定を確認し、アクセスルータが自動で払い出すIPアドレスの範囲を確認しておきましょう。必要に応じてアクセスルータの自動払い出しIPアドレスの範囲の設定を変更してください。
 ここでは、DHCPサーバのアドレス払い出し範囲の設定を確認した上で

Ubuntuに設定する固定IPアドレス:192.168.0.101/24

としました。

2.Ubuntuのネットワークデバイス名を確認する

 固定IPを設定するUbuntuのネットワークデバイス名を確認します。Ubuntuから端末(ターミナル)アプリを起動し、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
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
   link/ether 08:5b:d6:9b:36:4c brd ff:ff:ff:ff:ff:ff
   altname wlp0s20f3
   inet 192.168.0.5/24 brd 192.168.0.255 scope global dynamic noprefixroute wlo1
      valid_lft 79122sec preferred_lft 79122sec
   inet6 fe80::4e0c:db65:6fd4:1755/64 scope link noprefixroute 
      valid_lft forever preferred_lft forever

 今回は、イーサネットの有線LANのポートに固定IPアドレスを設定します。Ubuntu20.04の場合、イーサネットのネットワークデバイス名は

イーサネット : enで始まる
WIFI: wlで始まる

ので、固定IPアドレスを設定するネットワークデバイス名は私のPCの場合だと、"enp89s0"ということになります。

3.Ubuntuのネットワーク設定

3.1.Ubuntuネットワーク設定の概要

 Ubuntu20.04でネットワーク設定をカスタマイズする場合は、netplanというツールを使って設定します。
 具体的には、/etc/netplan配下に、YAML形式の設定ファイルを作成・保存し、適用します。
 実際には動く設定ファイルをコピーしてきて設定値を書き換えるだけですので、YAMLがよくわかってなくてもなんとかなると思います。この記事の後半で私のUbuntuの設定を載せておきますので、参考にしてください。

3.2.netplanの初期設定をのぞいてみる

 具体的な設定ファイルを作成する前に、netplanの仕組について整理します。まずはUbuntu netplanのインストール時の初期設定を確認します。

$ cd /etc/netplan
$ ls -l
合計 8
-rw-r--r-- 1 root root 104  88  2020 01-network-manager-all.yaml
$ cat 01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
 version: 2
 renderer: NetworkManager

 初期状態では、/etc/netplanディレクトリの配下に、01-network-manager-all.yamlというファイルがあります。このファイルの中身は、3行からなるYAML形式の設定ファイルになっています。

YAMLはインデント(行頭の段落スペース)にも意味があるので、行頭スペースは元のファイルに合せる必要があります。行頭スペースに使えるのは半角スペースのみです。タブは使えません。

 設定ファイルの中身を簡単に補足すると、1行目のnetowrk:はネットワーク設定であることを意味します。どの設定ファイルも同じ記述になります。
 2行目のversion:は、netplanのYAML設定ファイルの記述規則のバージョンを指定しています。Ubuntu20.04ではversion2を使用しているので、これもすべての設定ファイルで共通です。
 3行目のrendererの値がNetworkManagerとなっています。rendererでは、ネットワーク設定のサブツールを指定します。NetworkManagerは、ネットワークデバイスがLANに接続されたときに、DHCPサーバから自動でIPアドレスを取得するサブツールです。
 つまり、Ubuntuの初期設定では、ネットワークに接続されたら自動でIPアドレスを取得してネットワークに接続できる設定になっています。Windows PCやMAC、スマホの初期設定と同じですね。

3.3.固定IPアドレス設定ファイルの作成

 Ubuntuのエディタアプリを利用して設定ファイルを作成します。nanoなどのコマンドラインエディタを使って、管理者権限(sudo)で作成しましょう。

$ sudo nano <ファイル名>.yaml

このとき、ファイル名には以下の制限があります。

・YAMLファイルなので、ファイル名拡張子は.yamlとしてください
 (拡張子は".yml"でもダメなんだそうですので気を付けて)
・初期設定ファイルのファイル名"01-network-manager-all.yaml”よりも英数順で後ろにくるファイル名にしてください

 netplanはネットワーク設定を適用する際、/etc/netplanディレクトリの中のYAMLファイル(拡張子.yaml)を英数順に読み込んで設定を反映させていきます。ファイル名をつけ間違えて読み込むファイルの順番が入れ替わると意図した内容で設定されません。

 netplanは上記動きをするため、設定ファイル追加後におかしな動きになったときは、最後に追加したファイルを消すだけで設定を元に戻すことができます。動いているファイルを書き換えるのではなく、新しいファイルを追加すると、トラブル時の修復が楽になります。

 ここでは、以下の内容で設定ファイルを作成し、"100-nuc1-networkd-eth01.yaml"のファイル名で/etc/netplanに保存ました。

network:
   version: 2
   renderer: networkd
   ethernets:
       enp89s0:
           addresses: [192.168.0.101/24]
           gateway4: 192.168.0.1
           nameservers:
               addresses: [8.8.8.8]

 簡単に補足します。
 3行目のrendererの設定値がnetworkdとなっています。networkdはIPアドレスの設定をカスタマイズするためのサブツールです。
 4行目のethernets:は、次行以降の記述が、イーサネットのネットワークデバイス設定であることを表しています。
 5行目のenp89s0が、今回固定IPアドレスを設定するネットワークデバイス名です。次行以降の記述が、enp89s0の設定であることを表しています。
 6行目のadresses:の値が[192.168.0.101/24]となっています。[]はリスト形式のデータであることを表していて、","(カンマ)で区切って複数のIPアドレスを設定することもできます。/24は接続するサブネットのサブネットマスク長です。
 7行目のgateway4:では、異なるサブネット(インターネット上のホストなど)と通信するときにルーティングするルータのアドレス(デフォルトゲートウェイ)です。ほとんどの場合はアクセスルータのLANのアドレスを指定します。
 8行目のnameservers:は次行以降の記述がDNSの設定であることを表しています。
 9行目のadresses:で、DNSサーバのIPアドレスを指定しています。リスト形式で複数指定できます。8.8.8.8はgoogleが無料で公開提供しているDNSサーバのIPアドレスです。

4.IPアドレス設定を反映させる

 netplanコマンドで上記IPアドレスの設定変更を反映させます。その前に、ntplan tryコマンドで設定内容が正しいか確認してみます。

$ sudo netplan try
Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration

Changes will revert in  72 seconds
Configuration accepted.

 このコマンドを実行すると設定変更後、72秒で元の設定に戻るようです。
 ip addrコマンドを使って意図した設定になっているか確認してみましょう。イーサネットがリンクアップしていないと設定内容を確認できないようなので、確認の際はイーサネットをLANに接続しておいてください。
 問題なければ、netplan applyコマンドで設定変更をUbuntuに反映させます。

$ sudo netplan apply

 ia 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.101/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に、192.168.0.101/24が設定され、無事イーサネット経由でネットワークにアクセスできるようになりました。Ubuntuデスクトップに初期インストールされていたFirefoxからインターネットのWebページも閲覧できるようになったので、その他の設定もうまく反映されたようです。



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