
systemd-networkd
私は最近、ネットワークを(nukedと Network Manager)で直接管理するサーバーをセットアップしnetplan.io
、次のように静的 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 が複数あり、優先 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 で実行しています。これを実現するにはどうすればよいでしょうか?
答え1
このスレッドでは、開発者が物事がどのように機能するかと、どのように機能するべきかについて話し合っているのを見ることができます。参考:
彼らはいくつかの例を挙げています:
ルートタグの下
[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はルーティングされたパケットには機能しますが、ローカルサブネット上に残っているパケットには機能しません。
私が引用したチケットは現在オープン中なので、必要な機能がまだ存在しない可能性があります。この機能がどのように動作するかについてのアイデアがあると思われる場合は、開発者に直接フィードバックして、ディスカッションに参加してください。