長い話を短く
systemd-networkdファイル.network
のセクションで特定のサブネット内にある限り、利用可能なIPアドレスを選択するには、[Route]
このオプションに何を追加する必要がありますか?PreferredSource=
fc00::/7
詳細
IPv6マルチキャストトラフィックを送信するコンピュータがありますが、パケットがグローバルIPではなく内部ネットワークに属するIPアドレスから開始されることを望みます。これは、コンピュータに内部IPからのパケットのみを許可するファイアウォールがあり、グローバルIPからのすべてのマルチキャストパケットが破棄されるためです。
グローバルIPからパケットを送信する理由は、ルーティングルールに特定のソースアドレスが設定されておらず、カーネルがグローバルIPを選択するためだと思います。
$ ip route get ff05::02
multicast ff05::2 from :: dev eth1 table local proto static src 2001:db8::1 metric 100 pref medium
ここでは、マルチキャストパケットを送信するのではなく、2001:db8::1
「サイトローカル」サブネット内にあるコンピュータに割り当てられたIPアドレスを送信したいと思います。fc00::/7
マルチキャストトラフィックがシステムのシャットダウンに使用する必要があるネットワークインターフェイスを指定できるように、ルートはsystemd-networkdを介して確立されます。ファイルで以下を使用してこれを実行しました.network
。
[Match]
Name=eth1
[Route]
Type=multicast
# Send all multicast traffic out of this NIC.
Destination=ff00::/8
Metric=100
Table=local
#PreferredSource= <-- what goes here?
そのアドレスを使用してPreferredSource
デバイスの内部IPを入力すると、送信元IPが正しく設定され、必要な内部IPがマルチキャストトラフィックに使用されます。
ただし、IPv6ステートレス非自動設定を使用しており、.network
ファイルが複数のホスト間で共有されるため、パラメータにIPアドレスをハードコードすることはできませんPreferredSource
。
特定のサブネットに属するIPアドレスを選択し、それを送信元アドレスとして使用する方法が必要ですPreferredSource=fc00::/7
。このパラメータにサブネットを渡すことができないため、これを行う方法はありますか?