web-dev-qa-db-ja.com

systemd-networkdでは、ネットワーク構成の変更時にアクションを実行します

Debianのifupdownからsystemd-networkdに切り替えていますが、ほとんど問題なく動作します。不足している点の1つは、ネットワークが変更されるたびにkillall -ARLM tincを呼び出して、VPNがタイムリーに稼働するようにすることです。

systemdまたはsystemd-networkdはそのような機能を提供しますか?どうやって使うの?

10

インターフェイスのステータスが変化した後、networkd-dispatcherを使用してイベントを実行しています。

Networkd-dispatcherは、systemd-networkd接続ステータスの変更のためのディスパッチャデーモンです。このデーモンはNetworkManager-dispatcherに似ていますが、systemd-networkdの制限された性質のため、サポートするイベントのタイプがはるかに制限されています。

リンク Gitlab

3
gfa

Tincは直接信号を送信するのではなく、systemdユニットとして更新する必要があります。これを実現するには、Require=セクションの適切なBefore=After=、および[Unit]行でチェーンされるようにユニットファイルを構成する必要があります。また、ネットワークサービスに正しいWantedBy=を設定していることを確認してください。 (つまり、WantedBy=の代わりにnetwork.target {network-online.targetnetwork-pre.targetmulti-user.target}]

これにより、systemctl restart systemd-networkd.serviceを実行してネットワークを再起動できます。これをsystemd-resolvdudev/dbus(およびwifiの場合は[email protected])と組み合わせると、ネットワークは正常に機能します。

systemd-networkd への切り替えと ユニットの依存関係 に関する記事を必ずお読みください)。これは、systemd.serviceコマンドを介してsystemctl killユニットに信号を送信する方法でもあります systemd for administartorsガイド

2
Dwight Spencer

これは現在不可能です。ただし、systemd-networkd-wait-online.serviceは、ブートへの依存関係としてのみ使用して、tincを再構成できます。私の経験では、ティンクはネットワーク構成の変更にすばやく反応します。少なくともLinuxでは、rtnetlinkを使用してインターフェースの変更をリッスンできます。

1
Mic92