Closed nshopik closed 7 years ago
Задумывался о таком. Нужно еще отключать IPv6, если обнаружен Teredo (2001::/32
) и 6to4 (2002::/16
)
К внешним зависимостям как относитесь? Было бы конечно проще вытянуть https://pypi.python.org/pypi/ipwhois чтобы не писать свой RDAP парсер для того чтобы вытягивать принадлежность сети к ASN потом. И заодно использовать более свежие данные из RIR для других частей кода где это ввиде хака
Не знаю, насколько надежно проверять AS. Могут быть у провайдера разные AS для IPv4 и IPv6? Может, лучше проверять страну, или вовсе ограничиться проверкой на Teredo и 6to4?
На сервер редко приходят отчеты с не-провайдерским и не-Teredo IPv6. Думаю, люди запускают программу с --no-report
или отключают туннель.
IPv6 поддерживают только тесты DNS и HTTP. Проверка сертификата HTTPS и обхода DPI работает только по IPv4 (см. #52)
К внешним зависимостям как относитесь?
Нормально, если они pure python.
Не знаю, насколько надежно проверять AS. Могут быть у провайдера разные AS для IPv4 и IPv6?
Надежно 100%, разные ASN для разных address family не дает никаких фич. Тем кому нужны разные ASN в пределах оператора все равно используют IPv4/IPv6 локальной AS, это банально удобное и проще.
Может, лучше проверять страну, или вовсе ограничиться проверкой на Teredo и 6to4? На сервер редко приходят отчеты с не-провайдерским и не-Teredo IPv6. Думаю, люди запускают программу с --no-report или отключают туннель.
Teredo и 6to4 и не выбирает адреса в браузерах chrome/firefox, только если удаленный сервер находиться в той же подсети, ввиду приоритетов выбора source адреса https://tools.ietf.org/html/rfc6724#section-2.1
Prefix Precedence Label
::1/128 50 0
::/0 40 1
::ffff:0:0/96 35 4
2002::/16 30 2
2001::/32 5 5
fc00::/7 3 13
::/96 1 3
fec0::/10 1 11
3ffe::/16 1 12
В любом случае их легко определять и отключать при необходимости
Надежно 100%
Нашел тест, где у человека разные ASN для IPv4 и IPv6, но IPv6, с большой долей вероятности, провайдерский.
IP: 109.167.200.0/24, IPv6: 2a02:2510:2:2:a617::/48, провайдер: WestCall Ltd./ ВестКолл Домашние сети
109.167.192.0/18 AS25408 2a02:2510::/32 AS44068
Teredo и 6to4 и не выбирает адреса в браузерах chrome/firefox
Blockcheck не полагается на getaddrinfo, а получает A и AAAA-записи через Google DNS-over-HTTPS API, затем тестирует IPv4 и IPv6 отдельно, открывая сокет на IP-адрес. Мне приходят результаты тестирования с Teredo-адресами, и сейчас программа их воспринимает, будто это обычный рабочий IPv6-адрес.
В догонку:
IP: 95.28.188.xxx, IPv6: 2001:67c:2b8c:xxxx:xxxx:xxxx:xxxx:xxxx, провайдер: JSC Beeline-Samara/ Билайн
2001:67c:2b8c::/48 AS33842 95.28.188.0/24 AS8402
Нашел тест, где у человека разные ASN для IPv4 и IPv6, но IPv6, с большой долей вероятности, провайдерский.
IP: 109.167.200.0/24, IPv6: 2a02:2510:2:2:a617::/48, провайдер: WestCall Ltd./ ВестКолл Домашние сети
Две разные автономки никак не связанные с друг с другом, у них даже взаимоотношений нет судя по транзиту. Разные ASN имеет смысл когда у тебя есть sub-ASN (купил сеть допустим) и ты ей даешь IPv6 адреса из своей ASN (или наоборот) основной, но тогда бы это было видно в bgp (анонсы были бы за первой AS). И я точно знаю что у ВестКолл IPv6 даже близко не в продакшене для конечных юзеров.
Можно PTMU проверять, но это только зря время тратить
Второй приведенный пример, это тунель, я знаю 100% потому что мой.
Blockcheck не полагается на getaddrinfo, а получает A и AAAA-записи через Google DNS-over-HTTPS API, затем тестирует IPv4 и IPv6 отдельно, открывая сокет на IP-адрес. Мне приходят результаты тестирования с Teredo-адресами, и сейчас программа их воспринимает, будто это обычный рабочий IPv6-адрес.
Да я в этом контексте не подумал, надо конечно добавить список игнорируемых сетей
В таком случае, могу только предположить, что у человека два провайдера: IPv4 от одного, IPv6 от другого.
Делайте, если хотите. Только сделайте опцию --force-ipv6
.
Как я уже выше сказал у него может быть обычный IPv6inIPv4
туннель. Попробую сделать
ASN будем печатать текстом? юзеру может быть и не к чему, а для статистики удобно наврное было бы чтобы сравнить
Не производить проверку IPv6 если будет обнаружен не нативный IPv6. Достаточно сравнить автономную систему IPv4 и IPv6 если они не совпадают отключать IPv6 проверки.
Планирую прислать позже патч