私は最近、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で実行しています。これをどのように実現すればよいですか?
このスレッドでは、開発者が物事がどのように機能するのか、どのように機能するのかについて話し合っています: 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はルーティングされたパケットには機能しますが、ローカルサブネットに残っているパケットには機能しません
私が引用したチケットは現在開いているため、必要な機能がまだ存在していない可能性があります。これがどのように機能するかについて考えがある場合は、開発者に直接フィードバックを提供し、ディスカッションに参加してください。