두 개의 인터페이스가 있는 systemd-networkd 라우팅 구성

두 개의 인터페이스가 있는 systemd-networkd 라우팅 구성

유선 연결과 무선 연결이 이렇게 구성되어 있습니다

[Match]
Name=eth01

[Network]
Address=10.0.0.120/24
Gateway=10.0.0.1

[Route]
Destination=0.0.0.0/0
Metric=1000

무선 구성은 다음과 같습니다.

[Match]
Name=wlan0

[Network]
Address=10.0.0.129/24
Gateway=10.0.0.1

[Route]
Destination=0.0.0.0/0
Metric=2000

다시 대상을 게이트웨이로 설정해 보았습니다.

내가 무엇을 시도하든 다음과 같은 경로를 얻습니다.

default via 10.0.0.1 dev wlan0 proto static 
default via 10.0.0.1 dev eth01 proto static 
10.0.0.0/24 dev wlan0 proto kernel scope link src 10.0.0.129 
10.0.0.0/24 dev eth01 proto kernel scope link src 10.0.0.120 
10.0.0.1 dev wlan0 proto static metric 2000 

하지만 유선 장치가 없는 경우를 제외하고 기본 경로가 유선 장치를 통과하도록 하고 싶습니다.

답변1

다음과 같아야 합니다.

[Match]
Name=eth01 # or wlan0

[Network]
Address=10.0.0.120/24 # or 10.0.0.129/24
RouteMetric=1000 # or 2000

# This section is probably optional
[Route]
Destination=10.0.0.1
Scope=link
PreferredSource=10.0.0.120 # or 10.0.0.129
Metric=1000 # or 2000

[Route]
# Destination=0.0.0.0/0 is implied when the option is not explicitly set
Gateway=10.0.0.1
PreferredSource=10.0.0.120 # or 10.0.0.129
Metric=1000 # or 2000

답변2

이것은 나에게 효과적입니다. 깨끗하고 간단합니다.

/etc/systemd/network/eth.network

[Match]
Name=eth01

[Network]
Address=10.0.0.120/24

[Route]
Gateway=10.0.0.1
Metric=1000

그리고

/etc/systemd/network/wlan.network

[Match]
Name=wlan0

[Network]
Address=10.0.0.129/24

[Route]
Gateway=10.0.0.1
Metric=2000

주다

$ ip r
default via 10.0.0.1 dev eth01 proto static metric 1000 
default via 10.0.0.1 dev wlan0 proto static metric 2000 
10.0.0.0/24 dev wlan0 proto kernel scope link src 10.0.0.129 
10.0.0.0/24 dev eth01 proto kernel scope link src 10.0.0.120 

관련 정보