ここではUbuntu 20.04.1 LTSのIPアドレスと静的ルーティング(スタティックルーティング)の恒久設定方法を記載します。
OSをインストールするとデフォルトでDHCPが設定されており、自動的にIPアドレスが付与されている状態になります。IPアドレス、静的ルーティングも固定したい場合があると思いますので、ここでは設定ファイルにIPアドレス、ルーティング情報を書き込んで恒久的に固定化していきます。
ネットワーク設定デフォルト状態
「01-network-manager-all.yaml」はYAML形式で以下の内容になっております。
IPアドレスの設定ファイルは「/etc/netplan/」のは以下にYAML形式で格納されています。デフォルト状態だと「01-network-manager-all.yaml」というファイルが配置されています。
- ネットワーク設定
- YAML形式の記述規則バージョン
- ネットワーク設定の管理システムデーモン
$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
UbuntuにGUIをインストールした場合は、rendereにネットワーク設定を管理するシステムデーモンである「NetworkManager」が設定され、「Ubuntu Server」だと 「networkd」になります。 このサブツールがDHCPにて自動でIPアドレスを取得してくれています。
IPアドレス・静的ルーティング(スタティックルーティング)設定方法
IPアドレス、ルーティング情報を固定化するには 、「/etc/netplan/」の配下のYAML形式の設定ファイル(拡張子「.yaml」)にて設定値を指定します。同じ設定ファイル上でIPアドレスとルーティング情報を設定できます。
「netplan」はYAML形式ファイルを英数順に読み込んで設定を反映させていきます。デフォルトでは 「01-network-manager-all.yaml」が配置されています。
ここでは有線LANポートにIPアドレスを固定し、ルーティング情報を書き込みます。優先LANポートであるイーサネットのネットワークデバイス名を確認します。頭文字「en」で始まるデバイス名となります。(ちなみに無線LANポートは頭文字「wl」で始まるデバイス名となります)
仮にifconfigといったネットワークコマンドがインストールされていない場合は以下のコマンドより、「net-tools」をインストールしてください。
$ sudo apt install net-tools
ネットワークデバイス名を確認するには以下のコマンドを実行します。(どちらでも確認できます)
$ ifconfig
$ ip addr
イーサネットのネットワークデバイス名が「enp0s3」であることがわかります。
ルーティング情報は以下のコマンドを実行します。(どちらでも確認できます)
$ netstat -nr
$ ip route
現状のネットワークデバイス情報、IPアドレス情報、ルーティング情報を確認したら、YAML形式の設定ファイルを新規に作成します。ここでは「99-network-config.yaml」(ファイル名は任意)で作成します。デフォルトの 「01-network-manager-all.yaml」よりも後に読み込まれるようにファイル名の頭の数値を大きい値にします。
$ sudo touch /etc/netplan/99-network-config.yaml
内容は上から以下のように編集します。
- ネットワーク設定
- YAML形式の記述規則バージョン
- ネットワーク設定の管理システムデーモン
- イーサネット情報
- イーサネットデバイス名
- IPアドレス/サブネットマスク
- デフォルトゲートウェイ
- ネームサーバー(名前解決)
- ネームサーバーアドレス(ここではGoogleのパブリッククラウドを指定)
- ルーティング情報
- ルーティング宛先(Destination)
- ルーティングゲートウェイ
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
addresses: [192.168.0.100/24]
gateway4: 192.168.0.1
nameservers:
addresses: [8.8.8.8]
routes:
- to: 192.168.10.0/24
via: 192.168.0.10
編集したファイルが正しいかチェックするには、以下のコマンドで確認します。
$ sudo netplan try
エラーが出なければ、Enterキーを押すと設定ファイルがUbuntuに反映させます。チェックなしで反映する場合は以下のコマンドを実行します。
$ sudo netplan apply
意図した設定になっているか確認をしましょう。
$ ifconfig
$ ip addr
$ netstat -nr
$ ip route
意図したIPアドレス、静的ルーティングが設定されました。これでOSを再起動しても起動時にファイルを読み込み、IPアドレス、静的ルーティングが恒久的に設定されるようになります。
ここからは先は上手くいかなかったことを記載します。必要のない方は読み飛ばしてください。
一旦設定ファイルをデフォルトに戻そうとして、下記のように「99-network-config.yaml」のファイル名を変更し、デフォルトの 「01-network-manager-all.yaml」を読み込むように試みました。
$ sudo mv /etc/netplan/99-network-config.yaml /etc/netplan/00-network-config.yaml
この後に「netplan apply」コマンドを実行してみましたが反映されませんでした。再起動しても変わらなかったです。
Ubuntu内にキャッシュが残っているのかと思い、以下のコマンドでキャッシュ削除して同じように試してみましたが変わりませんでした。
$ sudo apt clean
仕方なく、「00-network-config.yaml」を削除して、キャッシュ削除&再起動するとデフォルトに戻りました。原因はわかりませんが、上記と同じようにデフォルトに戻す場合は作成した設定ファイルを他のディレクトリにバックアップしてから削除した方がよいでしょう。
固定化したIPアドレスや静的ルーティングの設定値を変更する場合は、「99-network-config.yaml」にファイル名を書き換えた状態で上書き&「netplan apply」コマンドで反映されました。実際にUbuntuを運用する場合は、デフォルトの設定ファイルはそのまま残し、新規に「99-network-config.yaml」などの設定ファイルで管理した方が運用しやすいかなと思います。