
Ubuntu 22.04.2 가상 머신이 있습니다. 내 의도는 SLAAC v6 주소와 해당 경로를 얻지 못하도록 인터페이스에서 dhcpv6만 수행하고 라우터 광고를 무시하는 것입니다. 현재 인터페이스에서 link-local, SLAAC 및 dhcpv6 주소(및 v4)를 성공적으로 얻었습니다. "net.ipv6.conf.eth0.accept_ra=0"을 /etc/sysctl.conf에 넣고(그리고 sysctl -p를 수행하면) 여전히 인터페이스의 모든 주소를 얻습니다. 또한 'all.accept_ra=0', 'default.accept_ra=0'을 실행해도 아무런 효과가 없습니다. 매개변수 변경 후 인터페이스를 닫거나 엽니다. 제가 더 해야 할 일이 있나요? sysctl -w 및 이러한 매개변수는 나에게도 작동하지 않습니다.
netplan yaml 파일(sysctl의 accept_ra=1)에 "accept-ra: false"를 입력하면 인터페이스에 SLAAC 또는 dhcpv6 주소가 표시되지 않습니다. 그래서 이것은 내가 원하는 대로 RA를 무시하는 것처럼 보이지만 dhcpv6은 작동을 멈춥니다. v6 링크 로컬 주소만 있습니다. tcpdump를 보면 SOLICIT이나 다른 dhcp6 또는 icmp6 메시지가 전송되는 것을 볼 수 없습니다. RA가 들어오는 걸 봤는데 성공적으로 무시됐어요.
sysctl이 작동하지 않는 이유와 netplan yaml 변경 사항이 dhcpv6에도 영향을 미치는 이유를 알려주시면 매우 감사하겠습니다.
기타 지침: 2개의 인터페이스 시스템(eth0, eth1). 저는 eth0에서 작업 중입니다. 모든 전달이 비활성화됩니다(예: net.ipv4.conf.eth0.forwarding = 0). yaml 파일의 eth1에는 "accept-ra: false"가 있습니다.
답변1
sysctl은 RA를 처리하는 커널이 아니기 때문에 유효하지 않습니다. netplan의 경우 이는 DHCPv6과 마찬가지로 사용자 공간에서 systemd-networkd에 의해 처리됩니다.
주소 할당을 비활성화하려면 systemd.network(5) 옵션에 해당하는 Netplan이 필요합니다.
[IPv6AcceptRA]
UseAutonomousPrefix=false
설계상 RA는방아쇠DHCPv6은 시스템에 대한 기본 경로도 제공합니다(DHCPv6에서는 이 작업을 수행하지 않음). Netplan에 해당하는 파일(.network 파일에도 있음)을 사용하여 RA 없이 systemd-networkd가 DHCPv6을 시작하도록 할 수 있습니다.
[DHCPv6]
WithoutRA=solicit
(아니요, 이러한 옵션에 해당하는 Netplan이 무엇인지 또는 옵션이 전혀 있는지 모르겠습니다. 솔직히 Netplan 없이 직접 systemd-networkd를 구성하는 것이 더 쉬울 수 있습니다. Netplan에서 생성된 .network 파일을 복사하는 것입니다. 필요에 따라 확장하세요).