내 새 ISP는 접두사가 /56인 공용 IPv6 주소를 제공합니다.
2001:b:c:d:5:6:7:8/56
다음과 같이 Linux 서버별로 구분된 두 개의 서브넷을 생성하고 싶습니다.
internet - fritzbox - server - pc
하지만 접두사를 내부 서브넷에 전파하는 방법을 이해해야 합니다. 지금까지는 라우터 광고를 수락하고 Fritz!Box에서 IPv6 접두사를 요청하도록 서버의 외부 인터페이스를 구성했습니다.
/etc/systemd/network/eth1.network
[Match]
Name=eth1
[Network]
DHCP=ipv6
IPv6AcceptRA=yes
IPv6PrefixDelegation=dhcpv6
IPForward=yes
~ 후에systemctl 재시작 systemd-networkd외부 인터페이스 획득 주소:
ip -6 addr
...
inet6 2001:b:e:f:1:2:3:4/64 scope global noprefixroute dynamic
여기까지가 맞나요? 또한 혼란스러운 점은 인터넷 연결과 인터페이스의 접두사가 후반부에서 다르다는 것입니다.
internet: 2001:b:c:d::
server: 2001:b:e:f::
이제 주요 질문: 내부 인터페이스를 구성하는 방법은 무엇입니까? Fritz!Box에 다른 접두사를 요청할 수 있나요?
/etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
???
내 서버는 Stretch-backports에서 Debian Stretch와 systemd 239를 실행하고 있습니다(안정 버전의 232는 아직 접두사 위임을 지원하지 않기 때문입니다). 난 ~를 지웠어위 아래라면내 목표는 이 문제를 해결하는 방법을 배우는 것이기 때문에 패키지를 사용하세요.시스템 네트워크오직.
답변1
나는 지난 며칠 동안 비슷한 구성으로 작업해 왔습니다.
이 글을 쓰는 시점에서 systemd-networkd에는 접두사를 배포하는 인터페이스에 대리자 접두사 주소를 배치하지 않는 버그가 있습니다. 그러나 인터페이스는 세그먼트의 장치에 접두사를 제공합니다.
외부 인터페이스의 IPv6 주소와 접두어 간의 불일치는 ISP의 네트워크 구성으로 인해 발생합니다. 내 ISP는 나에게 두 개의 서로 다른 DHCPv6 주소 블록을 제공했습니다. 하나는 위임용으로 제공된 동일한 접두어를 사용하고 다른 하나는 다른 접두어를 사용했습니다. DHCPv6 임대가 만료되면 무작위로 변경됩니다.
내가 사용하는 구성은아치리눅스 위키 먼저 "외부" 인터페이스(Fritz!box에 연결된 인터페이스)를 구성합니다.
/etc/systemd/network/EXTERNAL.network
[Match]
...
[Network]
DHCP=yes
IPForward=yes
IPv6AcceptRA=yes
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=kernel
이미 가지고 있는 eth1 코드는 올바른 것 같습니다(eth1이 외부 인터페이스라고 가정). 내 구성에서는 인터페이스에서 DHCPv4 및 DHCPv6 클라이언트를 활성화했습니다.
이제 내부 인터페이스가 다음과 같이 구성되어야 합니다.
/etc/systemd/network/INTERNAL.network
[Match]
...
[Network]
IPv6PrefixDelegation=dhcpv6
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=no
LinkLocalAddressing=ipv6
[IPv6PrefixDelegation]
RouterLifetimeSec=3600
이는 RouterLifetimeSec
DHCPv6 인터페이스에서 받은 접두사를 전송하도록 인터페이스를 구성하기 때문에 중요합니다.