systemd-networkd를 사용하여 정적 IPv6 경로를 추가하는 방법

systemd-networkd를 사용하여 정적 IPv6 경로를 추가하는 방법

나는 성공하지 못한 채 네트워크를 통해 아래의 ip 명령과 동등한 것을 달성하려고 노력했습니다.

ip route add default via fe80::1 dev eth0

내 네트워크 구성은 아래와 같으며 기본 ipv6 라우팅 외에도 네트워크가 성공적으로 시작되었습니다. GatewayOnLink=yes를 추가하고 제거하려고 시도했지만 성공하지 못했습니다. 부팅 후 위 명령을 실행하면 ipv6 연결이 설정되지만, 저는 네트워크 구성을 통해 이 작업을 수행하는 것을 선호합니다.

/etc/systemd/network/00-eth0.network
----

[Match]
Name=eth0

[Network]
DHCP=no
DNS=8.8.8.8

[Address]
Label=static-ipv4
Address=X.X.X.X/32
Peer=Y.Y.Y.Y

[Address]
Label=static-ipv6
Address=X:X:X:X::1/64

[Route]
Gateway=fe80::1
Gateway=Y.Y.Y.Y
GatewayOnlink=yes 

이것은 Hetzner 클라우드 서버용입니다. 설정에 대한 특정 사항을 배제할 수 있는 다른 IPV6 지원 시스템이 없습니다. Systemd는 Coreos에서 실행되는 버전 238입니다.

답변1

한 블록에는 두 개의 Gateway명령어 가 있을 수 없습니다 [Route].

참조에서 :https://systemd.network/systemd.network.html#%5BRoute%5D%20Section%20Options

[Route]여러 경로를 구성하려면 여러 " " 섹션을 지정하십시오 .

이것은 나에게 효과적입니다.

[Route]
Gateway=fe80::1
GatewayOnLink=yes

[Route]
Gateway=Y.Y.Y.Y
GatewayOnLink=yes

이런 방식으로 첫 번째 블록은 다음과 동일한 기본 IPv6 라우팅 항목을 추가합니다.

ip -6 route add default via fe80::1 proto static

proto static어떤 이유로 이 섹션이 필요하지 않은 경우 Proto=boot네트워크 구성에 추가하세요(이것이 iproute2의 기본 구성입니다).

답변2

이는 네트워크 외부 구성과 관련되어 있기 때문에 제가 받아들일 것으로 예상한 답변은 아니지만 IPv6 라우팅을 안정적으로 만들어줍니다.

~ $ cat /etc/systemd/system/ipv6-routing.service 
[Unit]
Description=Setup ipv6 routing
After=network-online.target
Requires=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip route add default via fe80::1 dev eth0
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

관련 정보