나는 Freenode의 #networking 및 #freebsd IRC 채널에서 이 질문을 했지만, 문제를 해결하기 어려운 것 같아서 아무도 내 질문에 답하고 여기로 전달해 줄 수 없었습니다.
Debian 9, Arch Linux 및 Windows의 LXC 컨테이너와 KVM 시스템을 호스팅하는 Proxmox 하이퍼바이저가 있습니다. 이 모든 것이 하이퍼바이저에 연결되며 IPv6 스택은 ISP가 제공한 공용 IP 주소와 완벽하게 작동하고 VM으로 직접 라우팅됩니다.
내가 가지고 있는 가상 머신 중 하나는 OPNsense 방화벽 장치(FreeBSD 11.0-RELEASE-p8 기반)입니다.
브리지에서 직접 액세스할 수 있는 시스템 이외의 IPv6 시스템을 핑할 수 없는 다른 LXC/KVM과 대조적입니다. 하이퍼바이저의 게이트웨이(여전히 IPv6에 있음) 또는 기타 원격 IPv6 호스트(예: google.com)에 대해 ping을 시도하면 다음 오류 메시지가 나타납니다.
[...]
ping6: sendmsg: No buffer space available
[...]
- 처음에는 문제가 VirtIO 드라이버(FreeBSD에 번들로 제공됨) 문제로 인한 것이라고 생각했습니다. 그래서 에뮬레이트된 Intel E1000 네트워크 카드로 전환했지만 문제가 지속됩니다. (이제 VirtIO로 돌아왔습니다).
- netstat -m은 버퍼가 비어 있다고 보고하므로 문제가 발생하는 곳도 아닙니다.
- 인터페이스를 껐다가 다시 켜거나 다시 시작해도 문제가 해결되지 않습니다..
- OPNsense 재정의를 피하기 위해 새로운 FreeBSD 및 OpenBSD 설치로 테스트했지만 문제가 지속됩니다.
브리지 또는 인프라 외부의 머신에서 VM을 핑하면 응답하지 않고 연결이 없습니다(즉, 2222에서 sshd를 시작했지만 연결할 수 없습니다).
FreeBSD 호스트 구성은 다음과 같습니다:
ifconfig vtnet0 <ipv4>/32
route add <gw ipv4> -iface vtnet0
route add default <gw ipv4>
ifconfig vtnet0 inet6 <ipv6> prefixlen 64
route add -inet6 <gw ipv6> -iface vtnet0
route add -inet6 default <gw ipv6>
내 모든 GW는 내 IP 서브넷 외부에 있습니다.
이 라인을 적용하고 나면 netstat -rn에 의해 보고된 경로가 이해가 됩니다. 잘못된 건 없다.
정확하게 말하면 pf 방화벽을 완전히 비활성화했습니다(pfctl -d). 또 다른 수준의 실패가 발생하기 전에 완벽하게 작동하는지 확인하고 싶습니다. :)
Linux가 전혀 불평하지 않는 BSD IPv6 스택에 버그가 있습니까? 제가 이 상황에 처한 유일한 사람도 아니고 GW가 IP 범위를 벗어난 유일한 사람도 아니라고 생각하기 때문에 이상하게 들립니다.
시간/도움을 주셔서 미리 감사드립니다.
인사.
답변1
OPNsense를 지원하는 회사 사람들과 몇 가지 논의를 거친 후 문제를 해결할 수 있었습니다.
내 원격 게이트웨이는 /56에 있습니다. 내 IPv6가 /56이 아니더라도 IPv6를 /64 대신 /56 접두사로 설정하면 문제가 해결됩니다.
이는 FreeBSD의 IPv6 NDP 구현이 직접 이웃으로 간주되지 않는 게이트웨이 IPv6 주소를 찾을 수 없기 때문입니다.