Linuxでネットワーク設定を行う際、「DHCPや静的IP設定ってどうやるんだっけ?」と悩むことがあるかもしれません。特にサーバーを構築する場合や、IPv6でインターネットに公開するケースでは適切な設定が求められます。
Ubuntuをはじめとする多くのLinuxディストリビューションで採用されている「NETPLAN」は、設定ファイルをYAML形式で記述することでネットワーク設定を簡単に管理できるツールです。この記事では、NETPLANを使ったネットワーク設定方法を詳しく解説します。
NETPLANとは?
NETPLANは、Ubuntu 17.10以降でデフォルトのネットワーク設定ツールとして導入されました。シンプルで扱いやすいYAML形式でネットワーク設定を定義し、systemd-networkd
または NetworkManager
をバックエンドとして利用します。
NETPLANの設定ファイルの場所と構成
NETPLANの設定ファイルは以下のディレクトリに配置されます。
/etc/netplan/
通常、このディレクトリ内には 00-installer-config.yaml
のようなファイルが存在しますが、自分で任意の名前で設定ファイルを作成することも可能です。
設定ファイルの書き方(基本構成)
NETPLANの設定ファイルはYAML形式で記述し、IPv4とIPv6の両方の設定を同時に行うことができます。 以下はIPv4とIPv6を両方有効にした基本構成の例です。
network:
version: 2
renderer: networkd # または NetworkManager
ethernets:
enp0s3:
dhcp4: yes
dhcp6: yes
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
version
: NETPLANの設定バージョンを指定するrenderer
: 使用するバックエンド (networkd
またはNetworkManager
) を指定するethernets
: 設定対象のネットワークインターフェースを定義するenp0s3
: インターフェース名のこと「ip link」または「ip a」コマンドで確認dhcp4
: IPv4でのDHCP利用を有効にする設定dhcp6
: IPv6でのDHCP利用を有効にする設定nameservers
: DNSサーバーを指定する設定。例として GoogleのDNSサーバー8.8.8.8
と8.8.4.4
がよく使われる
静的IPアドレスの設定方法
IPv4
IPv4で静的IPアドレスを設定する場合は次のように記述します。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
addresses
: このインターフェースに割り当てる静的IPv4アドレスroutes
: ネットワークのルーティング経路を手動で指定default
ルート(0.0.0.0/0)を設定しておくことで、インターネット等への外部通信が可能to
: 通信の宛先範囲を指定0.0.0.0/0
は「すべてのIPv4アドレス」を意味するvia
:上記to
に対応するゲートウェイのIPv4アドレス 通常はルーターのIPを指定
IPv6
IPv6で静的IPアドレスを設定する場合は次のように記述します。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp6: no
addresses:
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64
routes:
- to: ::/0
via: fe80::1
on-link: true
scope: link
nameservers:
addresses: [2001:4860:4860::8888, 2001:4860:4860::8844]
addresses
: このインターフェースに割り当てる静的IPv6アドレスroutes
: ネットワークのルーティング経路を手動で指定default
ルート(0.0.0.0/0)を設定しておくことで、インターネット等への外部通信が可能to
: 通信の宛先範囲を指定::/0
は「すべてのIPv6アドレス」を意味するvia
:上記to
に対応するゲートウェイのIPv6アドレス 通常はルーターのIPを指定on-link
:via
がリンクローカルアドレスの場合に必要になることが多い設定 ルートが直接接続されていると明示するscope
:via
のアドレスが属するスコープの指定 リンクローカル(fe80::
)の場合はlink
を指定
IPv4とIPv6の両方を静的IPで設定する方法
IPv4とIPv6を同時に静的IPで設定することも可能です。
addresses:
や nameservers:
にはIPv4とIPv6を混在させて記述できます。routes:
もそれぞれのデフォルトルートを定義しておくことで、双方向の通信が可能になります。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
dhcp6: no
addresses:
- 192.168.1.100/24
- 2001:db8::1234/64
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
- to: ::/0
via: fe80::1
on-link: true
scope: link
addresses:
に複数書くことで IPv4とIPv6を併用可能routes:
同じキーでも-
を使えばリスト化で記述が可能nameservers:
にIPv4・IPv6のDNSを混在させた記述が可能
IPv6の設定は必要か?
IPv6の設定が必要かどうかは用途によって異なります。
LAN内の通信の場合
LAN内での通信は通常、IPv4を利用する方が分かりやすく管理もしやすいため、IPv6の設定は不要です。IPv6を利用する必要がなければ dhcp6: true
と設定しなくても問題ありません。
サーバー公開する場合
IPv6アドレスを使ってサーバーをインターネット上に公開する場合は、IPv6の設定が必要です。しかし、dhcp6: true
としておけば、上位にあるルーターが自動的にIPv6アドレスを割り当てるため、特別な設定をする必要はほとんどありません。
さらに、IPv6アドレスはプロバイダから割り当てられるプレフィックスが変化しない限り基本的に変わりません。つまり、プロバイダを変更しない限りプレフィックスは維持されるため、静的IP設定を行わなくても安定して利用できるケースがほとんどです。
もし、特定のIPv6アドレスで常時アクセスを確実にしたい場合は、プロバイダの契約内容を確認し、プレフィックスが変更される可能性があるかを調べると良いでしょう。
設定を適用する
設定ファイルを保存した後に以下のコマンドで設定を適用します。
sudo netplan apply
設定内容にエラーがある場合は表示されるので、エラーメッセージを確認し修正してください。
設定内容の確認
設定を試す際は、次のコマンドを使用できます。
sudo netplan try
このコマンドは設定を一時的に適用し、エラーがないか確認するためのものです。問題がなければ「Enter」を押して設定を保存し、問題がある場合は「Ctrl+C」で取り消してください。
トラブルシューティング
NETPLANの設定でエラーが発生する場合の原因と対処方法をいくつか紹介します。
- YAML形式のエラー: インデントやスペースのミスを確認してください。
- インターフェース名の誤り:
ip link
コマンドで正しいインターフェース名を確認してください。 - バックエンドの設定ミス:
renderer
の指定が正しいか確認しましょう。
まとめ
NETPLANを使ったネットワーク設定方法について解説しました。IPv4とIPv6の設定方法を網羅し、特にサーバー運用で重要になる 静的IPアドレスの設定方法 についても紹介しました。
- IPv4の設定方法: DHCPによる自動設定
dhcp4: true
と、静的IP設定の方法を解説 - IPv6の設定方法: 基本的には
dhcp6: true
と設定するだけで、ルーターから自動的にIPv6アドレスが割り当てられるため、静的IPを設定する必要はほとんどない - IPv6で静的IPが不要な理由: プレフィックスが変化しない限り、IPv6アドレスは変更されないため。プロバイダを変更しない限り、プレフィックスも維持されるケースが多い
- サーバーをIPv6で公開する場合のポイント: 静的IPの設定をせずとも
dhcp6: true
の設定で問題なく運用可能
コメント