Ubuntu 22.04 LTS Serverでの固定IPアドレス設定。
17.10から、IPアドレスの変更が/etc/network/interfacesをいじる方式からNetplanへ変更になっているのでメモ。
Netplan | Backend-agnostic network configuration in YAML
基本 - IPアドレスの固定
設定ファイル ( /etc/netplan/99_config.yaml ) を作成し既存の設定を上書きします。
-
/etc/netplan/99_config.yaml を作成しIPアドレスを設定する
以下は設定例network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false dhcp6: false addresses: [192.168.1.70/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
-
ファイルのパーミッションを変更する
sudo chmod 600 /etc/netplan/99_config.yaml
-
設定の反映を行う
sudo netplan apply
※ ルーターのアドレス指定方法が、Ubuntu22.04(21?)以降変わっているようです。
Ubuntu20.04以前では、ルーターのアドレスはgateway4: 192.168.1.1
のように設定していましたが、netplan applyを実行すると下記のような警告が表示されたので、設定例を更新しました。
** (process:841): WARNING **: 02:50:55.217: `gateway4` has been deprecated, use default routes instead.
See the 'Default routes' section of the documentation for more details.
応用
KVMやLXDなどで、物理マシンの外に公開するサーバーを建てたい場合にはブリッジの設定をすると思う。その場合には下記のように記述します。(そして仮想nicをbr0に差し込む)
事前準備
設定をする前にブリッジ機能の有効化をしておく
$ sudo apt install -y bridge-utils
$ brctl show
ブリッジ構成時の設定ファイル
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [eth0]
dhcp4: false
dhcp6: false
addresses: [192.168.1.70/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
parameters:
forward-delay: 0
stp: false
optional: true
NICを冗長化しつつVLANを作り更にブリッジを構成した際の設定ファイル(/etc/netplan/99_config.yml)
メモ:netplan applyでは上手く反映されず、OS再起動で接続できるようになった。
network:
version: 2
renderer: networkd
ethernets:
enp3s0: {}
eth0: {}
bonds:
bond0:
interfaces:
- enp3s0
- eth0
parameters:
mode: balance-rr
vlans:
vlan129:
id: 129
link: bond0
vlan52:
id: 52
link: bond0
bridges:
br0:
interfaces: [vlan129]
dhcp4: false
dhcp6: true
addresses: [192.168.129.10/23]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.128.1, 8.8.8.8, 8.8.4.4]
br1:
interfaces: [vlan52]
addresses: [192.168.52.21/24]
IPアドレス設定変更の反映
netplan apply
を実行して反映します。再起動不要です。
$ sudo netplan apply
tryコマンド
リモートから設定を変更するときに自信があるならばapplyで一気に反映させてもいいけど、失敗して疎通不能になるのは困る場合、反映後指定秒数以内に[Enter]が押せなかったら、元の設定に戻してくれる機能がある。(但し、ブリッジやボンディングには対応していない。timeoutを設定しない時のデフォルトは120秒)
IPアドレスを変更するときなどは、IPアドレスを変えて再度sshしても別な端末になりEnterが押せないので、tmux等仮想端末上からnetplanコマンドを叩いてssh再接続後アタッチ(tmux a)しなおすのが良いかも。
$ sudo netplan try --timeout 10
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 1 seconds
Reverting.
IPアドレスの確認
ifconfigコマンドがデフォルトでインストールされなくなったので、ipコマンドで確認。
$ ip addr
(2020-05-28 自分用にメモ追記)
ネットワークの状態を詳細に確認するなら、下記コマンドが便利。
$ networkctl status -a
フックスクリプト
interfacesファイルの頃は、pre-up , up , down , post-downにコマンドを書いていたが、Netplanにはそういった機能は無く、例えばrendererにnetworkdを指定した場合、networkdが呼び出すnetworkd-dispatcherにそういった設定を追加する。
sudo apt install -y networkd-dispatcher
sudo mv ap_start.sh /etc/networkd-dispatcher/routable.d/
sudo mv ap_stop.sh /etc/networkd-dispatcher/off.d/
(参考)https://netplan.io/faq#use-pre-up-post-up-etc-hook-scripts
(参考)https://roy-n-roy.github.io/Raspberry%20Pi/Network/
参考
How To Configure Static IP Address on Ubuntu 20.04/18.04/19.10
[Network - Configuration | Server documentation | Ubuntu] (https://ubuntu.com/server/docs/network-configuration)
Netplan reference (←WiFi、ブリッジの設定等もある)
【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ