Debianのifupdown
からsystemd-networkd
に切り替えていますが、ほとんど問題なく動作します。不足している点の1つは、ネットワークが変更されるたびにkillall -ARLM tinc
を呼び出して、VPNがタイムリーに稼働するようにすることです。
systemd
またはsystemd-networkd
はそのような機能を提供しますか?どうやって使うの?
インターフェイスのステータスが変化した後、networkd-dispatcher
を使用してイベントを実行しています。
Networkd-dispatcherは、systemd-networkd接続ステータスの変更のためのディスパッチャデーモンです。このデーモンはNetworkManager-dispatcherに似ていますが、systemd-networkdの制限された性質のため、サポートするイベントのタイプがはるかに制限されています。
リンク Gitlab
Tincは直接信号を送信するのではなく、systemdユニットとして更新する必要があります。これを実現するには、Require=
セクションの適切なBefore=
、After=
、および[Unit]
行でチェーンされるようにユニットファイルを構成する必要があります。また、ネットワークサービスに正しいWantedBy=
を設定していることを確認してください。 (つまり、WantedBy=
の代わりにnetwork.target
{network-online.target
、network-pre.target
、multi-user.target
}]
これにより、systemctl restart systemd-networkd.service
を実行してネットワークを再起動できます。これをsystemd-resolvd
、udev
/dbus
(およびwifiの場合は[email protected]
)と組み合わせると、ネットワークは正常に機能します。
systemd-networkd への切り替えと ユニットの依存関係 に関する記事を必ずお読みください)。これは、systemd.service
コマンドを介してsystemctl kill
ユニットに信号を送信する方法でもあります systemd for administartorsガイド
これは現在不可能です。ただし、systemd-networkd-wait-online.service
は、ブートへの依存関係としてのみ使用して、tincを再構成できます。私の経験では、ティンクはネットワーク構成の変更にすばやく反応します。少なくともLinuxでは、rtnetlinkを使用してインターフェースの変更をリッスンできます。