You are in US.
It is 19:18 JST now.
Hook | ifupdown | NetworkManager | networkd-dispatcher |
---|---|---|---|
pre-up | if-pre-up.d | pre-up.d | no-carrier.d * dormant.d * carrier.d * configuring.d * |
post-up | if-up.d | up.d | degraded.d * routable.d * configured.d * |
pre-down | if-down.d | pre-down.d | N/A ** |
post-down | if-post-down.d | down.d | off.d * |
ネットワークを設定するにあたり、イーサーネットデバイスの設定前や設定後などに使用するshell scriptなど、実行したいコマンド等を /etc/networkd-dispatcher/ の下 それぞれ carrier.d degraded.d dormant.d no-carrier.d off.d routable.d 以下に置くことで実行できるようになる。
* ifupdown と等価という訳では無く、同期されずに実行されます。 つまり、別の状態への移行をブロックしません。
** systemd-networkd は内部状態を保持しませんが、カーネルの内部ネットリンク状態を使用します。 したがって、「ダウン前」状態について知ることはできず、pre-down は使用できません。ネットリンクがインターフェースがダウンしていると報告すると (つまり、「ip link set eth0 down」)、インターフェースはオフとみなされ、off.d フックがトリガーされます。 ネットリンクの状態以外に利用可能な情報や D-Bus プロパティはありません。
Ubuntu Server 版の場合はNetwokdを使用しいるので networkd-dispatcher 配下になり、Desktop版の場合はNetworkManager(GUI使用の為)で /etc/NetworkManager/dispatcher.d/ となる。
これらの詳細は https://netplan.io/faq#example-for-an-ifupdown-legacy-hook-for-post-up%2Fpost-down-states を参照。
networkd-dispatcher の実例で ifup後に実行される Shell script。 /etc/networkd-dispatcher/routable.d/50-ifup-hooks
#!/bin/sh
for d in up post-up; do
hookdir=/etc/network/if-${d}.d
[ -e $hookdir ] && /bin/run-parts $hookdir
done
exit 0
同様に ifdown 時に実行する例で /etc/networkd-dispatcher/off.d/50-ifdown-hooks
である。
#!/bin/sh
for d in down post-down; do
hookdir=/etc/network/if-${d}.d
[ -e $hookdir ] && /bin/run-parts $hookdir
done
exit 0