⛳
systemd-resolved 環境下での incus コンテナ名前解決
systemd-resolved 環境下において、ホストから incus コンテナに対しコンテナ名(+.incus
)でアクセスできるように名前解決をセットアップする。
Incus 公式ドキュメントのユニットファイルのサンプルを参考に、テンプレートユニットを利用する。
次のユニットファイルを/etc/systemd/system/incus-dns@.service
に作成する。
/etc/systemd/system/incus-dns@.service
[Unit]
Description=Incus per-link DNS configuration for %i
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
ExecStart=/bin/bash -c "resolvectl dns %i $(incus network get %i ipv4.address | sed 's/\/.*$//')"
ExecStart=/bin/bash -c "resolvectl domain %i ~$(x=$(incus network get %i dns.domain); echo ${x:-incus})"
ExecStart=/usr/bin/resolvectl dnssec %i off
ExecStart=/usr/bin/resolvectl dnsovertls %i off
ExecStopPost=/usr/bin/resolvectl revert %i
RemainAfterExit=yes
[Install]
WantedBy=sys-subsystem-net-devices-%i.device
daemon-reload を実行し、ユニットをブリッジのインタフェース名に合わせて有効化する。
次の例ではデフォルトのincusbr0
を使用している。
$ sudo systemctl deamon-reload
$ sudo systemctl enable --now incus-dns@incusbr0.service
これにより、[コンテナ名].incus
のような形でコンテナにアクセスできようになる(incusのドメイン名がincus
に設定されている場合(デフォルト))。
Discussion