현재 IPv4 및 IPv6를 지원하는 Linux 기반 백엔드와 작동하도록 Azure Load Balancer를 구성하고 있습니다. 설정의 일부로 로드 밸런서는 TCP 연결 설정을 시도하여 주기적인 상태 확인을 수행합니다. 그러나 IPv6 패킷 전달 문제로 인해 백엔드 상태 확인이 계속 실패했습니다.
문맥
- 로드 밸런서는 NAT64를 지원하지 않으며 양쪽 끝에서 IPv6 지원이 필요합니다.
- 백엔드는 IPv6로 구성되어 있으며 웹 서비스는 필요한 포트에서 적극적으로 수신 대기하고 있습니다.
- 한 백엔드에서 다른 백엔드로 서비스를 쿼리하여 구성이 올바른지 확인하여 연결을 확인합니다.
질문:
이 문제는 Azure Load Balancer가 링크 로컬 주소에서 비링크 로컬 주소로 전송된 IPv6 패킷을 사용하여 상태 검사를 시작하여 실패하게 할 때 발생합니다.
필요하다:
우리는 백엔드가 링크 로컬 주소에서 일반 IPv6 주소로 전송된 IPv6 패킷에 응답할 수 있도록 하는 방법에 대한 지침을 찾고 있습니다. Azure Load Balancer 환경에서 이러한 상황을 수용하기 위해 구성이나 설정을 조정해야 합니까?
추가 세부 사항:
백엔드 VM 중 하나에 대한 아래 네트워크 캡처는 상황을 잘 설명합니다. Azure Load Balancer는 링크 로컬 주소에서 상태 프로브를 수행합니다 fe80::1234:5678:9abc
. 패킷은 가상 머신 인터페이스에 할당된 일반 IPv6 주소로 전송됩니다. 그러나 백엔드는 패킷을 거부하고 즉시 ICMPv6을 통해 링크 로컬 주소가 소스 주소 범위를 벗어났음을 알리는 오류로 응답합니다. Azure Load Balancer의 작동 방식을 변경할 수 없으므로 이 패킷이 응답할 수 있도록 백엔드에 해결 방법을 적용할 수 있는지 궁금합니다.
원천 | 목적지 | 규약 | 길이 | 정보 |
---|---|---|---|---|
fe80::1234:5678:9abc | 2404:f800:8000:122::4 | 전송 제어 프로토콜 | 86 | 58675 → 80 [SYN] Seq=0 Win=64800 Len=0 MSS=1440 WS=256 SACK_PERM |
2404:f800:8000:122::4 | fe80::1234:5678:9abc | ICMPv6 | 134 | 대상에 연결할 수 없습니다(소스 주소 범위를 벗어남). |
답변1
레이어 3에서는 로컬 링크를 라우팅할 수 없습니다. 로드 밸런서가 해당 로컬 링크에서만 패킷을 보낼 수 있다고 가정하면 대상이 동일한 레이어 2 네트워크에 있는 경우에만 작동합니다.
양쪽 끝에 글로벌 유니캐스트 IPv6이 필요합니다. 이는 Azure 부하 분산 장치의 구성이 잘못된 것 같습니다.