Почему ping6 использует сокет IPv4?

Я включил IPv6 на сервере CentOS 7, и все работает должным образом, за исключением ping6: он показывает 3-5 задержек между запросами (но RTT в порядке):

$ ping6 www.google.com <...5 sec...> PING www.google.com(2607:f8b0:4002:c09::69) 56 data bytes <...5 sec...> 64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=1 ttl=55 time=21.1 ms <...5 sec...> 64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=2 ttl=55 time=21.2 ms <...5 sec...> 64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=3 ttl=55 time=21.1 ms <...5 sec...> 64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=4 ttl=55 time=21.1 ms <...5 sec...> 64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=5 ttl=55 time=21.2 ms <...5 sec...> ^C64 bytes from 2607:f8b0:4002:c09::69: icmp_seq=6 ttl=55 time=21.1 ms --- www.google.com ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 25216ms rtt min/avg/max/mdev = 21.119/21.183/21.251/0.043 ms 

Затем я провел его через strace ( strace ping6 www.google.com ), и я вижу, что он сначала получает тайм-аут, пытаясь выполнить ping адрес IPv4, а затем переходит к открытию сокета IPv6 и преуспевает:

 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 4 connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("209.244.0.3")}, 16) = 0 gettimeofday({1415215545, 657352}, NULL) = 0 poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}]) sendto(4, "\2721\1\0\0\1\0\0\0\0\0\0\3www\6google\3com\0\0\34\0\1", 32, MSG_NOSIGNAL, NULL, 0) = 32 poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout) socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 5 connect(5, {sa_family=AF_INET6, sin6_port=htons(53), inet_pton(AF_INET6, "2001:4860:4860::8844", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0 gettimeofday({1415215550, 663174}, NULL) = 0 poll([{fd=5, events=POLLOUT}], 1, 0) = 1 ([{fd=5, revents=POLLOUT}]) sendto(5, "\2721\1\0\0\1\0\0\0\0\0\0\3www\6google\3com\0\0\34\0\1", 32, MSG_NOSIGNAL, NULL, 0) = 32 poll([{fd=5, events=POLLIN}], 1, 3000) = 1 ([{fd=5, revents=POLLIN}]) ioctl(5, FIONREAD, [60]) = 0 recvfrom(5, "\2721\201\200\0\1\0\1\0\0\0\0\3www\6google\3com\0\0\34\0\1"..., 1024, 0, {sa_family=AF_INET6, sin6_port=htons(53), inet_pton(AF_INET6, "2001:4860:4860::8844", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 60 

Не следует ли ping6 искать записи AAAA и открывать адрес IPv6 исключительно? Почему это происходит?

  • добавление дополнительных прыжков в traceroute6 на OpenBSD
  • Как настроить сервер для использования сети IPv6
  • Родной маршрутизатор IPv6 на FreeBSD
  • Общая поддержка Linux для IPv6 готова?
  • Принудительный IPv4 по IPv6 только для определенных адресов
  • Использовать разные ipv6 в зависимости от назначения
  • Linux-мосты блокируют пакет UDP из крановых интерфейсов
  • Стабильный IPv6-адрес на Fedora
  • One Solution collect form web for “Почему ping6 использует сокет IPv4?”

    Ваш вывод strace показывает, что ping6 пытается заставить DNS-запросы найти IP-адрес http://www.google.com.

    Первый запрос DNS направляется в 209.244.0.3, который является resolver1.level3.net. Этот запрос DNS истекает через пять секунд, после чего он возвращается на второй DNS-сервер, 2001: 4860: 4860 :: 8844. Этот сервер почти сразу ответил на ответ DNS.

    Как это попало в конфигурацию вашей системы, я не знаю, хотя ее, возможно, разместил ваш поставщик услуг, когда они предоставили вам машину. Если вы не находитесь в своей сети, DNS-сервер может не предоставлять вам услуги.

    DNS-серверы вашей системы будут перечислены в /etc/resolv.conf . Вы можете редактировать и исправлять их там, после проверки поставщиком услуг, что используемые вами DNS-серверы являются правильными и функциональными.

    Interesting Posts

    Systemd: запуск скрипта до остановки msyql при завершении работы

    Проверьте, имеют ли файлы в определенном каталоге надлежащее расширение?

    Найти последний отредактированный файл (странное поведение exec)

    Force OpenSSH / pam / pam_ldapd для выполнения pam_ldapd (sshd: auth) с аутентификацией с открытым ключом

    Самый простой способ отправить однострочную почту через командную строку с помощью gmail?

    Как исправить мою fstab

    Как определить алгоритм по умолчанию, используемый mcrypt

    Systemd с rtorrent в tmux

    Выбор несуществующих файлов с подстановочным знаком / регулярным выражением

    Как уменьшить размер группы томов в LVM на Fedora 24

    HDD с ОС Windows, не подключающийся к Linux через usb для sata-адаптера

    Входная петля при попытке Удивительного с Gnome

    Как скрипт / etc / issue?

    Найти файлы, для которых несколько вариантов этого имени файла существуют вместе в одном каталоге

    Pinging между узлами сети Mesh OpenWrt

    Linux и Unix - лучшая ОС в мире.