UbuntuでのNetplan活用ガイド|ネットワーク設定の基礎から応用まで

1. UbuntuにおけるNetplanの概要

Netplanとは?

Netplanは、Ubuntu 17.10以降のバージョンで採用されたネットワーク設定の管理ツールです。以前はifconfig/etc/network/interfacesを使用していましたが、Netplanはこれらに代わる新しい形式を提供しています。Netplanの最大の特徴は、YAMLファイルを使用してネットワーク設定を記述する点です。これにより、シンプルで一貫性のある設定が可能となり、複雑なネットワーク構成でも簡単に管理できます。

Netplanは、NetworkManagersystemd-networkdなどのバックエンドをサポートし、Ubuntuのデスクトップ版とサーバー版の両方で利用されています。これにより、異なる環境においても共通の方法でネットワークを管理することができます。

なぜNetplanを使用するべきか?

従来のネットワーク設定方法と比べて、Netplanは以下の利点を提供します。

  1. シンプルな構文: YAML形式は直感的で、構造が明確です。設定の見通しが良く、初心者でも比較的簡単に理解できます。
  2. 統一的な管理: デスクトップ環境とサーバー環境の両方で利用可能なため、異なるネットワーク構成を一元的に管理できます。
  3. 動的な変更: 設定ファイルを編集して適用するだけで、リアルタイムにネットワーク設定を反映させることができます。

Netplanの基本的な構造

Netplanの設定ファイルは、通常/etc/netplan/ディレクトリに配置されており、拡張子は.yamlです。このファイルには、ネットワークインターフェースの設定やIPアドレス、DNSサーバーの情報が含まれています。

基本的なNetplanの設定例として、以下のようなYAMLファイルが挙げられます。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

この例では、enp3s0というイーサネットインターフェースがDHCPを使ってIPアドレスを取得する設定になっています。

Ubuntu 18.04 LTS以降でのNetplanの役割

Ubuntu 18.04 LTS以降のバージョンでは、Netplanはデフォルトでインストールされており、サーバー環境やデスクトップ環境のネットワーク管理に広く使用されています。特にサーバー環境では、複数のネットワークインターフェースや静的IPアドレスの設定が求められることが多いため、Netplanの利便性が活かされます。

次に、Netplanを使ったネットワークの具体的な設定方法について解説していきます。

2. Netplanの基本設定方法

Netplanの設定ファイルの場所

Netplanの設定ファイルは、通常/etc/netplan/ディレクトリに保存されています。このディレクトリ内にある.yamlファイルを編集することで、ネットワークの設定を変更できます。たとえば、50-cloud-init.yamlなどのファイル名が一般的ですが、環境によって異なる場合があります。

設定ファイルを開くには、以下のようにvinanoなどのテキストエディタを使います。

sudo vi /etc/netplan/50-cloud-init.yaml

動的IPアドレス(DHCP)の設定

DHCPを使用して自動的にIPアドレスを取得する場合、以下のようなYAML設定を使います。この設定は、最もシンプルな例で、ほとんどの家庭やオフィス環境で利用できます。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

静的IPアドレスの設定

一部の環境では、サーバーや特定のデバイスに対して固定のIPアドレスを設定する必要があります。以下は静的IPアドレスを設定する例です。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

設定の適用

設定ファイルを編集した後は、以下のコマンドでNetplanの設定を適用します。

sudo netplan apply

設定の確認

Netplanの設定が正しく適用されているか確認するには、以下のコマンドを使用してネットワークインターフェースの状態を確認します。

ip a

3. 複数のネットワークインターフェースの設定

複数のイーサネットインターフェースの設定

複数のネットワークインターフェースを持つサーバーやデバイスでは、それぞれのインターフェースに異なるIPアドレスや設定を適用することができます。以下の例では、2つのイーサネットインターフェースにそれぞれ異なる設定を行っています。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
    enp4s0:
      addresses:
        - 192.168.1.150/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

ボンディングによる冗長性の設定

ネットワークインターフェースをまとめて1つの仮想インターフェースとして動作させる「ボンディング」は、冗長性を確保し、可用性を高めるために有効な手法です。以下は、2つのイーサネットインターフェースをボンディングして1つの仮想インターフェースbond0として扱う例です。

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces:
        - enp3s0
        - enp4s0
      addresses:
        - 192.168.1.200/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      parameters:
        mode: active-backup
        primary: enp3s0

Wi-Fi接続の設定

NetplanではWi-Fi接続の設定も可能です。以下の例は、特定のSSIDに接続するWi-Fi設定を示しています。

network:
  version: 2
  renderer: networkd
  wifis:
    wlp2s0:
      access-points:
        "my_wifi_network":
          password: "password1234"
      dhcp4: true

VLANの設定

特定の用途では、仮想LAN(VLAN)を使用してネットワークを論理的に分割することが求められる場合があります。NetplanでもVLANの設定が可能です。以下は、enp3s0インターフェースに対してVLANを設定する例です。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
  vlans:
    vlan10:
      id: 10
      link: enp3s0
      addresses:
        - 192.168.10.1/24

 

4. Netplanの応用設定

静的ルーティングの設定

ネットワークを複数のルーターを経由して接続する場合、静的ルーティングが必要です。Netplanを使って静的ルートを設定することで、特定のIPアドレスやネットワークに対する通信経路を指定することができます。以下は、静的ルーティングの例です。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      routes:
        - to: 10.0.0.0/24
          via: 192.168.1.1

この設定では、enp3s0インターフェースがデフォルトゲートウェイ192.168.1.1を通じて、10.0.0.0/24ネットワークへ通信を行う静的ルートが指定されています。これにより、特定のネットワークに対して優先的なルートを設定することができます。

複数のデフォルトゲートウェイの設定

Netplanでは、複数のネットワークインターフェースが存在する場合、インターフェースごとに異なるデフォルトゲートウェイを設定できます。これは、異なるネットワークセグメントを経由してインターネットにアクセスする環境に有用です。以下はその設定例です。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
    enp4s0:
      addresses:
        - 10.0.0.100/24
      gateway4: 10.0.0.1

DNSサーバの設定

Netplanでは、静的に指定するDNSサーバの設定も簡単に行えます。以下の例では、GoogleのパブリックDNSサーバ(8.8.8.8および8.8.4.4)を指定しています。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

ボンディングの応用設定

前述のボンディング設定に加え、ボンディングのモードを調整することで、異なる動作モードを実現できます。たとえば、以下の例ではラウンドロビン方式のボンディングが設定されています。

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces:
        - enp3s0
        - enp4s0
      addresses:
        - 192.168.1.200/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      parameters:
        mode: balance-rr

balance-rr(ラウンドロビン)モードでは、2つのインターフェースを交互に使用することで帯域を分散させ、パフォーマンスの向上を図ります。他にも、フェイルオーバー用のactive-backupモードや、ロードバランシングを行うbalance-tlbモードなど、用途に応じたモードを選択できます。

VLANの応用設定

VLAN(Virtual LAN)は、大規模なネットワークにおいて、物理的なネットワークを論理的に分割するために使用されます。Netplanを使ってVLANを設定することも可能です。以下の例では、vlan100というVLANインターフェースが設定されています。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
  vlans:
    vlan100:
      id: 100
      link: enp3s0
      addresses:
        - 192.168.100.1/24

この設定では、enp3s0インターフェースにVLAN ID 100を割り当て、192.168.100.1という静的IPアドレスを設定しています。これにより、ネットワークを仮想的に分割し、トラフィックを特定のネットワークセグメントに限定できます。

5. Netplanのトラブルシューティング

Netplanの設定は非常に便利ですが、設定ミスやシステムの特性により問題が発生することがあります。このセクションでは、Netplanを使用する際によく発生する問題とその解決方法について説明します。これにより、ネットワーク接続エラーや設定ミスに効率的に対応できるようになります。

よくあるNetplanの問題とその原因

1. 設定が適用されない

Netplanで設定を変更しても、コマンドを実行しても変更が反映されない場合があります。原因としては、以下のような問題が考えられます。

  • YAMLファイルのインデントエラー: YAML形式はインデントに非常に厳格です。スペースやタブの誤りがあると、ファイルが正しく解釈されず、設定が適用されません。インデントが揃っているかを必ず確認しましょう。
  • 不適切なインターフェース名: Netplanでは、ネットワークインターフェースの正しい名前を指定する必要があります。ip aコマンドを実行して、正確なインターフェース名を確認し、設定ファイルで一致しているかチェックしましょう。

解決方法

  1. 設定ファイルを保存した後に、netplan applyコマンドを実行して設定を適用します。
  2. エラーが発生した場合、sudo netplan tryコマンドを使用して、変更が適用できるかテストしてから確認します。このコマンドは、5分以内に設定をテストし、問題があれば自動的に元に戻すことができます。
sudo netplan apply
sudo netplan try

2. ネットワーク接続エラー

ネットワークが接続できない場合、以下のような原因が考えられます。

  • ゲートウェイやDNSサーバの設定ミス: デフォルトゲートウェイやDNSサーバの設定が間違っていると、インターネットへの接続に失敗します。正しいIPアドレスが指定されているか、DNSサーバが適切かを確認しましょう。
  • 物理インターフェースの障害: ケーブルやハードウェアが正しく接続されていない場合、ソフトウェア的に正しい設定を行っていても接続ができません。ケーブルやネットワークデバイスの物理的な確認も重要です。

解決方法

  1. pingコマンドを使用して、ネットワークに接続できるかどうかをテストします。たとえば、GoogleのDNSサーバ(8.8.8.8)に対してpingを送信して接続状態を確認します。
ping 8.8.8.8
  1. 設定ファイルに問題がある場合は、再度netplan applyを実行して設定を適用し、ネットワークの再起動を試みます。
sudo systemctl restart networkd

3. netplan applyでエラーメッセージが表示される

netplan applyを実行した際に、エラーメッセージが表示される場合があります。この問題は、設定ファイルの内容が不正確であったり、インターフェースが正しく認識されていないことが原因です。

  • エラーメッセージ例: Error in network configuration: failed to bring up device enp3s0

このエラーは、指定したインターフェースenp3s0が正しく認識されていない場合に発生します。ip aコマンドを実行して、インターフェース名が正しいか確認してください。

解決方法

エラーメッセージをよく確認し、指定されたインターフェースやIPアドレスが正しいか再確認しましょう。また、インターフェース名やYAML形式のエラーがないか、スペルやインデントを見直します。

ログファイルの確認

トラブルシューティングを行う際には、システムログを確認することが非常に役立ちます。Netplanの設定に関連するエラーメッセージや警告は、journalctlコマンドを使って確認できます。

journalctl -u systemd-networkd

このコマンドを実行することで、ネットワークサービスに関連するログを表示できます。エラーが発生している場合、詳細なメッセージが表示されるので、それに基づいて問題を解決することができます。

6. Netplanのまとめと次のステップ

Netplanを利用することで、Ubuntuのネットワーク設定は非常にシンプルかつ効率的に管理できることがわかりました。このセクションでは、これまでの解説を総括し、今後どのようにNetplanを活用していけるか、さらに深く学ぶためのステップについて提案します。

Netplanの主要な利点

Netplanを使うことによって、従来の手法よりも多くの利点を享受できます。

  1. YAML形式の直感的な設定: Netplanは、シンプルかつ視認性に優れたYAML形式を採用しています。このため、ネットワーク設定の記述が容易で、設定ミスの発見も比較的簡単です。
  2. 柔軟なネットワーク構成: 複数のネットワークインターフェースの設定やボンディング、静的ルーティング、VLANの構築が、直感的な記述で行えます。これにより、複雑なネットワーク構成も簡単に管理できます。
  3. 統一的なインターフェース: Netplanは、systemd-networkdNetworkManagerなど異なるバックエンドに対応しており、デスクトップやサーバー環境を問わず、一貫したネットワーク管理を提供します。これにより、異なる環境でも同じ手法で設定を行うことができ、管理の効率化が図れます。
  4. リアルタイムでの設定変更: Netplanの設定は、コマンド一つで即座に反映できるため、ネットワークのダウンタイムを最小限に抑えて管理することができます。

今後の活用方法

Netplanの基本的な設定に慣れた後は、さらに高度なネットワーク構成に挑戦することをおすすめします。以下に、次のステップとして学ぶべき項目をいくつか挙げます。

  1. 仮想ネットワークの構築: 複数のVLANを設定して、物理的なネットワークを仮想的に分割することで、セキュリティやネットワーク管理を強化できます。仮想ネットワークの設定は、大規模なインフラやクラウド環境で特に重要です。
  2. IPv6対応の設定: 現在のインターネットプロトコルであるIPv4はアドレス枯渇が問題となっています。Netplanを使ってIPv6に対応したネットワーク設定を行うことで、将来的なネットワークインフラに備えることができます。
  3. 自動化スクリプトの作成: Netplanの設定をスクリプト化し、ネットワーク構成の自動化を進めることで、大規模なネットワーク環境での一括管理が可能になります。AnsibleやPuppetなどのツールと連携することで、さらに効率的な管理が可能です。
  4. セキュリティの強化: Netplanを使用したネットワークのセキュリティを高めるために、ファイアウォール設定やアクセス制限、ネットワークの分離(ネットワークセグメンテーション)などの技術を学ぶことが重要です。

さらに学ぶためのリソース

Netplanの公式ドキュメントや、Ubuntuのネットワーク関連の技術情報は、学習を進めるための有益なリソースです。また、フォーラムや技術ブログも参考にするとよいでしょう。以下は、参考になるリソースです。

  • Netplan公式ドキュメント: Netplanの詳細な設定方法やオプションについて、公式ドキュメントが最も信頼できる情報源です。
  • Ubuntu Community Help Wiki: Ubuntuのコミュニティが提供するWikiには、実際のトラブルシューティングや実例が豊富に掲載されています。
  • 技術フォーラムやブログ: Ask UbuntuStack Overflowなどのフォーラムは、特定の問題に対する解決策を見つけるのに便利です。また、技術ブログではNetplanの活用事例や最新の情報が紹介されています。