В настоящее время я подключен к Интернету через IPv4, я использую туннель от sixxs.net, и у меня есть подсеть и один из IPv6, назначенных моему интерфейсу eth0.
Итак, у eth0 есть IPv4 и IPv6:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:02:XX:XX:61:36 brd ff:ff:ff:ff:ff:ff
inet XXX.XXX.0.22/24 brd XXX.XXX.0.255 scope global eth0
inet6 2a01:XXXX:XXXX::1/64 scope global
valid_lft forever preferred_lft forever
Когда я пытаюсь подключиться к некоторым, например. веб-сайт, который готов к IPv6, это нормально, IPv6 предпочтительнее, но если что-то случится, а IPv6 недоступен, я бы хотел вернуться к IPv4. Это возможно?
Или можно временно принудительно использовать IPv4 вместо IPv6, даже если программа не поддерживает (например, с помощью опции -4)?
Это уже должно произойти, так как это (должно быть) поведение вашей сети по умолчанию.
Однако на практике есть одна или две мелочи, которые могут помешать. Вот как это работает:
Вы хотите получить доступ к URL-адресу, скажем www.kame.net
. Ваш DNS должен запросить AAAA
а также A
запись.
Если AAAA
запись возвращается, затем он пытается подключиться к IPv6-адресу.
Если соединение не может быть установлено (хост отключен, соединение IPv6 не работает и т. Д.) Или нет AAAA
запись существует, вместо нее используется IPv4.
Проблемы могут возникнуть в следующих случаях:
Неправильно настроенный или старый DNS-сервер, который не возвращает AAAA
адреса будут означать, что IPv6 никогда не используется.
Неправильно настроенная сеть IPv6 (например, с маршрутизируемым IPv6-адресом (не локальным адресом канала), но не обнаружены RA или RA не обнаружены фактически подключенный к Интернету, стек TCP / IP может занять до 90 секунд для ожидания и возврата к IPv4, что делает его практически бесполезным.
Если вы пишете свое собственное приложение, которое выполняет свой собственный поиск в DNS, это также поведение, которое вы должны записать в свое приложение. Если это тоже так, то поддержка IPv6 немного сложнее, чем просто это (например, наш парсер журнала, построенный на IPv4, имел фиксированное 32-битное поле для IP-адреса. Это, конечно, сломалось, когда мы реализовали нашу первую сеть IPv6).