Я использую поисковый робот и получил несколько отчетов из центра обработки данных о подключениях, направленных на частные IP-адреса (например, 10.0.0.1). Я реализовал петлевую / частную проверку IP в моем коде поискового робота, и я понял, что многие домены разрешаются на следующие адреса IPv6.
Я использую свой собственный кеш Bind DNS, а также, когда я пытаюсь посетить эти домены на другом компьютере / в сети, я могу посетить их без проблем, и все их настройки DNS выглядят нормально.
Что может быть причиной разрешения этих доменов как частных / замкнутых IPv6-адресов, как показано выше? Что я могу сделать, чтобы проверить другие вещи, связанные с этой проблемой?
Может это быть из-за моего BIND DNS Cache? Может это быть из-за неправильно настроенного маршрутизатора в моем центре обработки данных?
Заранее большое спасибо...
Решение: @kasperd очень помог мне с этой проблемой, и он обнаружил, что это из-за неправильной реализации в моем коде.
В своем вопросе вы делаете несколько неверных предположений.
Большая часть адресного пространства IPv6 зарезервирована, включая 6000::/3
диапазон, к которому принадлежат два упомянутых вами адреса.
Если какой-либо зарезервированный адрес когда-либо появляется в записи AAAA, это указывает на недопустимую конфигурацию. Это может вызвать проблемы с подключением, хотя правильно реализованные клиенты вернутся к использованию одного из других адресов для этого домена.
Первая очевидная причина появления неверного адреса в записи AAAA заключается в том, что тот, кто изначально настроил эту запись AAAA, совершил ошибку. Если вы упомянули доменное имя, мы можем сказать вам, так ли это.
Также возможно создать такие недопустимые записи AAAA, неправильно настроив кэширующий DNS-сервер. Я думаю, что Bind обладает достаточной гибкостью, чтобы создавать такие проблемы.
Неправильно настроенный маршрутизатор сам по себе недостаточен для возникновения такой проблемы. Но многие маршрутизаторы имеют дополнительные функции, не связанные с маршрутизацией, поэтому теоретически возможно, что ваш маршрутизатор может иметь функции, которые при неправильном использовании могут создавать такие недопустимые записи.
Если вы внимательно посмотрите на недопустимые адреса IPv6, вы увидите, что каждый октет находится в диапазоне печатаемых символов ASCII (20
- 7e
). Это может дать подсказку о том, откуда произошли недействительные адреса.
Резюме отладки в чате. Проблема возникла из-за ошибки в коде краулера:
ip = ipaddress.ip_address(hostname)
Эта строка будет интерпретировать любое имя хоста, состоящее ровно из 16 символов, как если бы это был адрес IPv6. Разрешение DNS для имени хоста не выполнялось.