前回説明した、Netplanに関する記事の続き。公式リファレンスにあるサンプルコードを和訳した。 www.komee.org
目次
- 本記事の概要
- 設定の反映方法
- DHCPによるIPアドレス割当(IPv4、IPv6)
- 固定IPアドレスの割当(IPv4、IPv6)
- 無線インタフェース
- 一つのインタフェースに複数のIPアドレスを付与
- 複数のIPアドレスと複数のゲートウェイを用いる
- Network Manager
- ボンディング
- ブリッジ
- VLAN
- VLANを用いた複雑なブリッジ
- ゲートウェイに直接接続する
- ソースルーティング
- ループバックインタフェース
- WindowsのDHCPサーバ
本記事の概要
https://netplan.io/examplesを元にNetplanの設定方法を構成例とともに日本語で書き直した。 ユースケースとともに、サンプルコードを記述する。
設定の反映方法
Netplanのシステムへの適用方法は、次の通りである。
/etc/netplan/
以下に設定を書いたYAML形式の設定ファイルを作成# sudo netplan apply
で、/etc/netplan/
以下のすべてのYAMLファイルが読み込まれる
ちなみにこの設定は、リブートしてもまた読み込まれる。
次から簡単なユースケースとサンプルコードを示す。
DHCPによるIPアドレス割当(IPv4、IPv6)
enp3s0
という名前のインタフェースにDHCPでIPv4のIPアドレスを割り当てる。dhcp4
キーをtrue
にするとdhcpが有効になる。ちなみになぜか、dhcp4
キーを無効にするオプションはfalse
でもno
でもいい。また、有効にするのも、yes
でもいいらしい。manコマンドを見るとbooleanって書いてあるんだから、true/false
に統一してもらいたいところだけど。。
同様にIPv6においてもdhcpでのアドレス取得をすることができ、dhcp6
キーを用いる。
network version: 2 renderer: networkd ethernets: enp3s0: dhcp4: true dhcp6: true
固定IPアドレスの割当(IPv4、IPv6)
DHCPと同様にenp3s0という名前のインタフェースに固定IPアドレスを割り当てる。addresses
キーに固定にするIPアドレスを記述し、ゲートウェイをgateway4
に、DNS情報をnameservers
キーに記述する。なお、下記の例を見て分かる通り、複数のサーチドメイン、DNSサーバのIPアドレスを書く場合は、,
で区切って続けて書くことで対応できる。
また、IPv6の記述も同時に書くことができる。以下のように、[]の中で,
で区切って記述する。またYAMLファイルの中で:
を用いるため、ご認識を防ぐために、IPv6のアドレスを記述する際にはシングルクォート、もしくはダブルクォートで囲むようにする。ゲートウェイに関しては、gateway6
を用い、ネームサーバのアドレスに関しては、IPv4、IPv6を混在して書くことができる。
network: version: 2 renderer: networkd ethernets: enp3s0: addresses: [10.10.10.2/24, '2001:1::2/64'] gateway4: 10.10.10.1 nameservers: search: [mydomain, example.jp] addresses: [10.10.10.1, 1.1.1.1]
無線インタフェース
無線デバイスはwifis
キーを用い、イーサネットの有線デバイスと似たような設定となる。無線のアクセスポイント名とパスワードは各自で決めたものを用いる。なお今回の設定では無線デバイスとして、wlp2s0b1
というインタフェース名のデバイスを用い、SSIDがsample-wifi
、パスワードが12345678
という無線LANに接続する。
network: version: 2 renderer: networkd wifis: wlp2s0b1: dhcp4: no dhcp6: no sddresses: [192.168.0.21/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1, 8.8.8.8] access-points: "sample-wifi": password: "12345678"
一つのインタフェースに複数のIPアドレスを付与
固定IPアドレスをつける方法と同様にするが、addresses
キーはIPアドレスのリストを受け取れるので、これを用いて複数のIPアドレスを付与する。
また、インタフェースのエイリアスには対応していない。(例: eth0:0)
network: version:2 renderer: networkd ethernets: enp3s0: addresses: - 10.100.1.38/24 - 10.100.1.39/24 gateway4: 10.100.1.1
複数のIPアドレスと複数のゲートウェイを用いる
インタフェースに複数のIPアドレスを付与できたように、ゲートウェイも複数指定することが可能である。
network: version:2 renderer: networkd ethernets: enp3s0: addresses: -9.0.0.9/24 - 10.0.0.10/24 - 11.0.0.11/24 # gateway: # 使用しない。代わりにroutesキーを用いる routes: - to 0.0.0.0/0 via: 9.0.0.1 metric: 100 - to 0.0.0.0/0 via: 10.0.0.1 metric: 100 - to 0.0.0.0/0 via: 11.0.0.1 metric: 100
この例を見て分かる通り、インタフェースenp3s0
には複数のアドレスが付与されており、それぞれにゲートウェイがある。今回、gateway4
キーは用いなかったが、これはroutes
キーで代用することが可能である。というのも、0.0.0.0/0
すなわち、すべての宛先に対しての経路を明示的に指定すれば、それはゲートウェイとなりうる。
また、metric
も合わせて有事のために設定する。
DHCPを用いると、一つのインタフェースに一つのIPアドレスを設定でき、gateway4
に対応するIPアドレスのmetricは100として自動的に設定される。
Network Manager
NetplanはNetwork Managerとnetworkdの両方をバックエンドとして対応している。そこで、renderer
キーを用いることで、お好みのバックエンドを選択することができる。Ubuntu16などで用いられていたNetwork Managerを使用したいときには、次のように書くことで、Network Managerに権限を委譲することができる。
network: version: 2 renderer: NetworkManager
ボンディング
ボンディングは、2つの物理インタフェースのボンドインタフェースを宣言し、ボンディングモードを宣言することで設定される。 IPアドレスを得るためにDHCPを用いたアクティブバックアップボンドの例を次に示す。
network: version: 2 renderer: networkd bonds: bond0: dhcp4: yes interfaces: - enp3s0 - enp4s0 parameters: mode: active-backup primary: enp3s0
次に示すサンプルコードは、複数のボンドインタフェースと異なるタイプをもったルータとして動作するシステムの設定である。
netowrk: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no enp2s0: dhcp4: no enp3s0: dhcp4: no optional: true enp4s0: dhcp4: no optional: true enp5s0: dhcp4: no optional: true enp6s0: dhcp4: no optional: true bonds: bond-lan: interfaces: [enp2s0, enp3s0] addresses: [192.168.93.2/24] parameters: mode: 802.3ad mii-monitor-interval: 1 bond-wan: interfaces: [enp1s0, enp4s0] addresses: [192.168.1.252/24] gateway4: 192.168.1.1 nameservers: search: [local] addresses: [8.8.8.8, 8.8.4.4] parameters: mode: active-backup mii-monitor-interval: 1 gratuitious-arp: 5 bond-conntrack: interfaces: [enp5s0, enp6s0] addresses: [192.168.254.2/24] parameters: mode: balance-rr mii-monitor-interval: 1
ブリッジ
DHCPを用いた単一デバイスへの最も簡単なブリッジの構成は以下の通りである。
network: version: 2 renderer: networkd bridges: br0: dhcp4: yes interfaces: - enp3s0
VLAN
リネームされたインタフェースに複数のVLANを設定する構成は以下の通りである。
今回では、mainif
という名前にリネームしたインタフェースにtagged(trunk)のvlan10とvlan15を設定した。また、元のインタフェース自体にはuntagged(access)の設定もしてある。
network: version: 2 renderer: networkd ethernets: mainif: match: macaddress: "de:ad:be:ef:ca:fe" set-name: mainif addresses: ["10.3.0.5/23"] gateway4: 10.3.0.1 nameservers: addresses: ["8.8.8.8", "8.8.4.4"] search: [example.com] vlans: vlan15: id: 15 link: mainif addresses: ["10.3.99.5/24"] vlan10: id: 10 link: mainif addresses: ["10.3.98.5/24"] nameservers: addresses: ["127.0.0.1"] search: [domain1.example.com]
VLANを用いた複雑なブリッジ
libvritdにtaggedのVLANを持った特定のブリッジを使用させ、一方でuntaggedのインタフェースを提供し続ける例が以下のサンプルである。
network: version: 2 renderer: networkd ethernets: enp0s25: dhcp4: true bridges: br0: addresses: [10.3.99.25/24] interfaces: [vlan15] vlans: vlan15: accepd-ra: no id: 15 link: enp0s25
libvirtdで/etc/libvirtd/qemu/networks/
以下に次に示す新しいXMLファイルを追加することで、このブリッジを使う事ができるようになる。XMLファイルのなかのタグで囲まれたブリッジの名前は、NetplanのYAMLファイルの中で定義したブリッジの名前と同一である必要がある。
<network> <name>br0</name> <bridge name='br0' /> <forward mode="bridge" /> </network>
ゲートウェイに直接接続する
on-link
キーを用いることで、サブネットと一致しないネットワークのIPアドレスでも、任意のデフォルトルートやルートを設定することができる。ルータの設定等には必須かもしれない。
network: version: 2 renderer: networkd ethernets: addresses: ["10.0.0.1/24"] routes: - to: 0.0.0.0/0 via: 9.9.9.9 on-link: true
ソースルーティング
2つのネットワーク間のルーティングを許可するため、ルートテーブルを特定のインタフェースに追加することがある。
次の例では、192.168.3.0/24
上のens3
と、192.168.5.0/24
上のens5
がある。これはそれぞれのネットワークのクライアントに他方のネットワークに接続することを許可し、正しいインタフェースからの応答を可能にする。
さらに、デフォルトルートはens5
に割り当てられたままであり、他のトラヒックを通過させることも可能である。
network: version: 2 renderer: networkd ethernets: ens3: addresses: -192.168.3.30/24 dhcp4: no routes: - to: 192.168.3.0/24 via 192.168.3.1 table: 101 -routing-policy: - from: 192.168.3.0/24 table: 101 ens5: addresses: -192.168.5.24/24 dhcp4: no gateway4: 192.168.5.1 routes: - to: 192.168.5.0/24 via: 192.168.5.1 table: 102 routeing-policy: - from: 192.168.5.0/24 table: 102
ループバックインタフェース
networkdは普通、新たなループバックデバイスを作成させないようにしているが、ユーザは新しいアドレスを通常のループバックインタフェースに付け加えることが可能である。これにより、マシン上の有効なアドレスを、編集されたルートの両方で考慮することが可能になる。
ループバックインタフェースの設定は、以下のように、名前がlo
にmatch
するインタフェースを指定してIPアドレスを指定する。
network: version: 2 renderer: networkd ethernets: lo: match: name: lo addresses: [7.7.7.7/32]
WindowsのDHCPサーバ
Windows ServerによってDHCPが提供されるネットワークでは、dhcp-identifier
キーを利用することで、運用が可能となる。
network: version: 2 ethernets: enp3s0: dhcp4: yes dhcp-identifier: mac