긴 이야기 짧게
systemd-networkd 파일 .network
의 섹션에서 특정 서브넷 내에 있는 한 사용 가능한 IP 주소를 선택하도록 하려면 [Route]
이 옵션에 무엇을 추가해야 합니까 ?PreferredSource=
fc00::/7
세부 사항
IPv6 멀티캐스트 트래픽을 전송하는 컴퓨터가 있지만 패킷이 글로벌 IP가 아닌 내부 네트워크에 속한 IP 주소에서 시작되기를 원합니다. 이는 컴퓨터에 내부 IP의 패킷만 허용하는 방화벽이 있어 글로벌 IP의 모든 멀티캐스트 패킷이 삭제되기 때문입니다.
글로벌 IP에서 패킷을 보내는 이유는 라우팅 규칙에 특정 소스 주소가 설정되어 있지 않고 커널이 글로벌 IP를 선택하기 때문이라고 생각합니다.
$ ip route get ff05::02
multicast ff05::2 from :: dev eth1 table local proto static src 2001:db8::1 metric 100 pref medium
여기서는 멀티캐스트 패킷을 전송하는 것이 아니라 2001:db8::1
"사이트-로컬" 서브넷 내에 있는 컴퓨터에 할당된 IP 주소를 전송하기를 원합니다.fc00::/7
멀티캐스트 트래픽이 시스템을 종료하는 데 사용해야 하는 네트워크 인터페이스를 지정할 수 있도록 경로는 systemd-networkd를 통해 설정됩니다. 파일에서 다음을 사용하여 이 작업을 수행했습니다 .network
.
[Match]
Name=eth1
[Route]
Type=multicast
# Send all multicast traffic out of this NIC.
Destination=ff00::/8
Metric=100
Table=local
#PreferredSource= <-- what goes here?
그 주소를 사용해서 PreferredSource
기기의 내부 IP를 입력하면 소스 IP가 제대로 설정되고, 내가 원하는 내부 IP가 멀티캐스트 트래픽에 사용되는 것입니다.
그러나 IPv6 상태 비저장 자동 구성을 사용하고 있고 .network
파일이 여러 호스트 간에 공유되므로 매개변수에 IP 주소를 하드코딩할 수 없습니다 PreferredSource
.
특정 서브넷에 속하는 IP 주소를 선택하고 이를 소스 주소로 사용하는 방법이 필요합니다 PreferredSource=fc00::/7
. 이 매개변수에 서브넷을 전달할 수 없으므로 이를 수행할 수 있는 방법이 있습니까?