yum이 dl.google.com을 IPv6 주소로 확인하는 이유는 무엇입니까?

yum이 dl.google.com을 IPv6 주소로 확인하는 이유는 무엇입니까?

Fedora 18에 Google 크롬 브라우저를 설치했습니다. 이제 소프트웨어를 업데이트하려고 하면 yum upgrade다음 오류가 보고되고 Chrome을 업데이트할 수 없습니다.

http://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2404:6800:4005:c00::88: Network is unreachable"

dl.google.com이 IPv6 주소로 확인되는 것처럼 보이지만 IPv6을 사용하지 않고 ping dl.google.comIPv4 주소가 예상대로 반환됩니다.

# ping dl.google.com
PING dl.l.google.com (74.125.128.93) 56(84) bytes of data.

가능한 이유는 무엇입니까? 이 문제를 어떻게 해결할 수 있나요?

답변1

기본적으로 yum은 호스트/도메인 이름의 IPv4 및 IPv6 주소를 모두 확인합니다. 아래의 wireshark 스크린샷을 참조하세요. (저는 Python 프로그램을 이해하지 못하므로 네트워크 트래픽 캡처는 yum이 호스트 이름을 확인하는 방법을 알아내는 유일한 방법입니다.)

yum은 IP 주소를 구문 분석하고 캡처합니다.

IPv4 주소만 확인하려면 추가 ip_resolve=4하거나 ip_resolve=ipv4구성하기 만 하면 됩니다 yum.conf( man yum.conf자세한 도움말은 참고자료 참조). Fedora의 경우 루트 계정을 사용하여 터미널에서 다음 명령을 실행합니다.

echo "ip_resolve=4" >> /etc/yum.conf

IPv6 주소만 확인하려면 ip_resolve=4위의 내용을 로 변경하세요 ip_resolve=6.

기타 프로그램

wget그리고curl

# To resolve IPv4 address only
wget -4
curl -4

# To resolve IPv6 address only
wget -6
curl -6

host

host-4및 옵션 도 있지만 해당 의미는 호스트 이름을 쿼리하기 위해 IPv4/IPv6 전송을 사용하도록 -6강제하는 wget 및 컬과 다릅니다 .host

# To resolve IPv4 address only
host -t A

# To resolve IPv6 address only
host -t AAAA

답변2

=편집=

그것은 밝혀yum 예전에는ipv4 및 ipv6을 올바르게 시도하고 있습니다. glibc의 dns 확인자는 컴퓨터에 라우팅 가능한 ipv6 주소가 없음을 올바르게 감지하므로 ipv4 주소를 선호합니다. 그러나 glibc는 여전히 ipv6 주소를 반환합니다. 기본 설정 목록의 맨 아래에 ipv6 주소를 넣습니다.

그래서 yum마침내 ipv6 주소를 시도했습니다. 안타깝게도 yum마지막 오류만 표시되는 것 같습니다. 따라서 yumipv6에 대한 오류만 표시됩니다. 이미 실패할 것으로 예상했습니다! -ipv4에 대한 오류가 무엇인지 표시하지 않습니다.

= 이전 답변 - 이 질문에 대해 완전히 틀렸습니다 =

모르겠어요 흠. Happy Eyeballs 구현이 누락된 것처럼 오류가 발생합니다. 즉, ipv4로 폴백됩니다. 거기IPv6 주소...

$ 호스트 dl.google.com
dl.google.com은 dl.l.google.com의 별칭입니다.
dl.l.google.com의 주소는 173.194.34.132입니다.
...무작위로 배열된 많은 주소...
dl.l.google.com의 주소는 173.194.34.137입니다.
dl.l.google.com의 IPv6 주소는 2a00:1450:400c:c06::5d입니다.

문제가 발생했을 때 해결 방법이 있는 것 같습니다. /etc/gai.conf를 편집하고 해당 줄의 주석 처리를 제거하는 것입니다 precedence ::ffff:0:0/96 100. 이렇게 하면 ipv4 주소에 우선순위가 부여됩니다.

나는 일반적으로 작동해야한다고 생각합니다. 링크-로컬 ipv6 주소와 사이트-로컬 ipv4 주소(또는 NAT가 없는 공용 주소)가 있습니다. libc DNS 확인자는 ipv4 대상을 선호해야 합니다. 이는 RFC 3484에 지정되어 있습니다.

이것이 Teredo 스타일 문제인지 궁금합니다. 라우터(예: Apple Airport)가 신뢰할 수 없는 터널을 통해 글로벌 IPV6 주소를 할당했습니까? 전역 IPv6가 없는 내 컴퓨터는 다음과 같습니다.

$ IP 주소|grep inet6
    inet6::1/128 범위 호스트
    inet6 fe80::215:afff:fe9f:fcd2/64 범위 링크

답변3

다음을 추가하면 IPv6를 완전히 비활성화할 수 있습니다.

net.ipv6.conf.all.disable_ipv6 = 1

/etc/sysctl.d/etc/sysctl.d/disable-ipv6.conf예를 들어 파일

관련 정보