web-dev-qa-db-ja.com

systemd-networkdで静的IPのルーティングメトリックを設定しますか?

私は最近、systemd-networkd(nuked netplan.ioおよびNetwork Manager)によって直接管理されるネットワークを使用してサーバーをセットアップし、次のような静的IPを与えました。

/etc/systemd/network/10-ethernet.network

[Match]
Name=eno1

[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=192.168.1.1

systemd-networkd.serviceを再起動すると、デフォルトルートは次のようになります。

default via 192.168.1.1 dev eno1 proto static
default via 172.16.0.1 dev eno2 proto static
default via 172.31.255.1 dev eno3 proto static
                                               ^^^

複数のNICがあり、eno1を優先したいので、ルートを次のようにレイアウトします。

default via 192.168.1.1 dev eno1 proto static metric 100
default via 172.16.0.1 dev eno2 proto static metric 300
default via 172.31.255.1 dev eno3 proto static metric 500
                                               ^^^^^^^^^^

metric値がない場合、デフォルトは0です。つまり、すべてのルートが同じ優先度(最高)を持っていることを意味します。これは避けたいです。

私はこの設定を試しました:

[Route]
Gateway=192.168.1.1
Metric=100

ただし、元のルート(metricがない)が残ったまま、目的のメトリックを持つ追加ルートのみが生成されます。

Systemd 240で実行しています。これをどのように実現すればよいですか?

3
iBug

このスレッドでは、開発者が物事がどのように機能するのか、どのように機能するのかについて話し合っています: https://github.com/systemd/systemd/issues/928

彼らはいくつかの例を挙げます:

ルートタグの下

[Route]
Destination=192.168.0.0/24
Metric=2048

DHCPタグの下

[DHCP]
RouteMetric=1024

それは説明されています:

iPの取得時にnetworkd-address.cのaddress_configureを介してサブネットルートがメトリックなしで構成され、dhcpが提供するメトリック付きのルートがnetworkd-dhcp4.cのlink_set_dhcp_routesを介して後で処理される

さらに警告があります:

routeMetricはルーティングされたパケットには機能しますが、ローカルサブネットに残っているパケットには機能しません

私が引用したチケットは現在開いているため、必要な機能がまだ存在していない可能性があります。これがどのように機能するかについて考えがある場合は、開発者に直接フィードバックを提供し、ディスカッションに参加してください。

2
HackSlash