手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Netplan ネットワーク設定 – DHCP / 固定 IP / DNS の基本

Ubuntu 22.04 では、サーバーのネットワーク設定に Netplan を使用します。Netplan は /etc/netplan/*.yaml に書いた設定を読み取り、systemd-networkdNetworkManager 向けの設定へ変換する仕組みです。

この記事は、Ubuntu 22.04 を前提にした既存環境や当時の構築記録を確認するための記事です。新規構築では Ubuntu 26.04 側の記事を優先しつつ、22.04 環境を読み解くための基礎として参照してください。

関連する記事
この記事で確認すること
  • Netplan と renderer の役割
  • 現在のインターフェース名と設定ファイルの確認
  • DHCP と固定 IP の基本的な書き方
  • gateway4 ではなく routes を使う考え方
  • netplan trynetplan apply の使い分け
対象 OSUbuntu 22.04 Server
設定ファイル/etc/netplan/*.yaml
サーバーでよく使う renderersystemd-networkd
デスクトップでよく使う rendererNetworkManager
反映前確認netplan generate, netplan try
本反映netplan apply
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server のネットワーク設定や運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Netplan の役割

Netplan は、ネットワーク設定を直接管理し続ける常駐プロセスではありません。YAML の設定を読み取り、実際にインターフェースを制御する renderer へ設定を渡します。

  • Ubuntu Server では systemd-networkd を使う構成が多い
  • Ubuntu Desktop では NetworkManager を使う構成が多い
  • どちらを使うかは renderer の指定やインストール時の構成で変わる
  • YAML のインデントやファイル権限の不備で反映に失敗することがある
Ubuntu 22.04 の既存環境を確認する場合は、まず現在の renderer とインターフェース名を見てから設定例を読み替えます。例の enp1s0 は環境に合わせて変更してください。

現在の設定を確認する

設定を変更する前に、現在のインターフェース名、IP アドレス、ルート、Netplan ファイルを確認します。

コマンド
ip link
ip address
ip route
ip -6 route
ls -l /etc/netplan
sudo cat /etc/netplan/*.yaml

ip link でインターフェース名を確認し、ip addressip route で現在のアドレスとルートを見ます。Netplan の設定例を使う場合は、この名前とネットワークアドレスを自分の環境に合わせます。

DHCP の設定例

検証環境や一時的なサーバーでは、DHCP のまま使う方が扱いやすいことがあります。Ubuntu Server のインストーラーが生成する設定も、初期状態では DHCP になることがあります。

設定ファイル例
sudo install -d -o root -g root -m 0755 /etc/netplan
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: true
EOF
sudo chmod 600 /etc/netplan/00-main.yaml

IPv6 も DHCPv6 や RA を使う場合は、ネットワーク側の設計に合わせて dhcp6 や RA の扱いを確認します。単純な検証では、まず IPv4 DHCP で通信できることを確認してから固定 IP へ進むと切り分けやすくなります。

固定 IP の設定例

サーバー用途では、管理しやすいように固定 IP を設定することがあります。次は IPv4 と IPv6 のアドレス、DNS、デフォルトルートを同じファイルにまとめる例です。

コマンド
sudo cp -a /etc/netplan /etc/netplan.bak.$(date +%Y%m%d%H%M%S)
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
  version: 2
  ethernets:
    enp1s0:
      addresses:
        - 10.0.33.112/24
        - fd00::a00:2170/120
      nameservers:
        addresses:
          - 10.0.33.160
          - fd00::a00:21a0
      routes:
        - to: default
          via: 10.0.33.1
        - to: default
          via: fd00::a00:2101
EOF
sudo chmod 600 /etc/netplan/00-main.yaml

この例では、enp1s0 に IPv4 と IPv6 のアドレスを設定し、DNS サーバーとデフォルトルートも指定しています。実際に使う場合は、アドレス、prefix、gateway、DNS を環境に合わせて変更します。

gateway4 ではなく routes を使う

古い例では gateway4 を使う設定が見つかります。Ubuntu 22.04 の既存記事や当時のメモを読む場合も、この書き方が残っていることがあります。

現在は、デフォルトルートも routes で書く形に寄せると、IPv4 と IPv6 を同じ考え方で扱いやすくなります。既存環境で gateway4 が動いている場合に即座に壊す必要はありませんが、新しく書く設定例では routes を優先します。

古い例で見かける書き方gateway4: 10.0.33.1
寄せたい書き方routes:to: defaultvia: を書く
利点IPv4 / IPv6 のデフォルトルートを同じ構造で扱える

反映前に構文を確認する

Netplan は YAML のインデントに敏感です。SSH で作業している場合、設定ミスはそのまま切断につながることがあります。まず netplan generate で構文を確認します。

コマンド
sudo netplan generate

エラーが出た場合は、該当行のインデント、コロン、リストの書き方、ファイル名を確認します。YAML ではタブではなくスペースを使います。

netplan try と netplan apply の使い分け

SSH 接続中にネットワーク設定を変える場合は、可能なら netplan try を使います。一定時間内に確認できなければ設定を戻すため、設定ミスで接続を失うリスクを下げられます。

コマンド
sudo netplan try

問題ないことを確認してから、本反映します。

コマンド
sudo netplan apply
重要なサーバーでは、SSH 以外の復旧手段を用意してからネットワーク設定を変更します。netplan try は有用ですが、あらゆる環境で完全な保険になるわけではありません。

設定後の確認

設定反映後は、アドレス、ルーティング、DNS、疎通を順番に確認します。どこで失敗しているかを分けて見ると、設定ミスの場所を見つけやすくなります。

コマンド
ip address show enp1s0
ip route
ip -6 route
resolvectl status
ping -c 3 10.0.33.1
ping -c 3 8.8.8.8
getent hosts example.com

IP アドレスが付いていない場合は Netplan のインターフェース名を確認します。デフォルトルートがない場合は routesto: defaultvia: を確認します。名前解決だけ失敗する場合は nameserversresolvectl status を確認します。

ファイル権限の警告に対応する

Netplan の設定ファイルの権限が広すぎると、次のような警告が出ることがあります。

出力例
Permissions for /etc/netplan/00-main.yaml are too open. Netplan configuration should NOT be accessible by others.

設定ファイルは root だけが読める権限にします。

コマンド
sudo chown root:root /etc/netplan/*.yaml
sudo chmod 600 /etc/netplan/*.yaml

SSH 作業時の注意

  • 作業前に現在の /etc/netplan をバックアップする
  • 設定例のインターフェース名をそのまま使わない
  • SSH 接続中は netplan try を優先する
  • 重要なサーバーではコンソール復旧手段を用意する
  • IP アドレス、ルート、DNS、疎通を分けて確認する

まとめ

Ubuntu 22.04 の Netplan 設定では、/etc/netplan/*.yaml に DHCP、固定 IP、DNS、デフォルトルートを記述します。サーバーでは固定 IP を使う場面が多い一方、設定ミスは SSH 切断につながるため、反映前の確認が重要です。

既存環境では古い gateway4 の例が残っていることがあります。新しく書く設定では routes を使い、IPv4 と IPv6 のデフォルトルートを同じ形で扱うと読みやすくなります。設定後はアドレス、ルート、DNS、疎通の順に確認します。

関連する記事
Ubuntu 22.04 Netplan ネットワーク設定 – DHCP / 固定 IP / DNS の基本

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る