도메인 해결 문제로 인한 토픽 임베드 오류

토픽 임베드(topic embed)에 영향을 미치는 도메인 이름 해석(DNS) 문제가 있을 수 있습니다.

  1. 토픽 임베드 시스템은 토픽 임베드 URL을 해석하기 위해 FinalDestination에 의존합니다. (여기 참조)

  2. FinalDestination은 SSRFDetector를 통해 URL의 호스트명을 IP로 해석합니다. (여기 참조)

  3. 이후 FinalDestination은 Excon에 URI를 전달하여 실제 요청을 수행합니다. (여기 참조)

즉, 일부 토픽 임베드 URL은 예를 들어

"https://opensource.org/blog/osi-response-to-ntia"

와 같이 Excon에 다음과 같은 GET 요청으로 전송됩니다:

"https://[2604:a880:800:a1::2f0:a001]/blog/osi-response-to-ntia"

이 요청은 시간 초과가 발생합니다. 반면, 원래 URL에 대한 Excon.get 요청은 시간 초과가 발생하지 않습니다.

여기 Meta에서는 정상적으로 동작하는 것 같습니다:

설명하신 내용을 바탕으로 추측하자면, DNS 조회를 수행할 때 서버가 IPv6 레코드를 해석하고 있는 것 같습니다(이를 위해 getaddrinfo를 사용함). 하지만 그런 주소를 연결하려고 시도할 때 실패하는 것입니다.

이는 IPv6 주소를 시도하다가 실패한 후 IPv4 주소로 폴백하기 때문일 수 있습니다. 현재 FinalDestination#resolve에는 이러한 종류의 폴백 로직이 없습니다:

2개의 좋아요