VPN со двоен стек: клиентот ја избира фамилијата адреси, не вие
Едно име, две фамилии, два различни патишта. Тунелот може да биде здрав, а барањето сепак да не успее, затоа што клиентот избра кандидат што никогаш не сте го рутирале.
Тунелот е кренат, страниците на IPv4 се вчитуваат, а едно име на домаќин истекува. Непосредниот заклучок е дека VPN-от е расипан или податоците за најава се погрешни, а обично ниту едното не е точно. Името врати и IPv4 и IPv6 адреса, апликацијата избра една, и само еден од тие кандидати имаше работен пат. Одлуката за избор ја донесе клиентот; тунелот едноставно не го покриваше она што тој го избра.
Изборот не е ветување за покриеност
Стандардниот избор на адреса, опишан во RFC 6724, одредува кој пар извор и одредиште домаќинот го претпочита кога има неколку достапни. Happy Eyeballs додава врз тоа стратегија за поврзување: започнува обиди во двете фамилии и го задржува тој што прв одговара, за корисникот да не чека расипана фамилија да истече.
Ниту еден од механизмите не создава рута. Ако тунелот ви носи само IPv4, кандидатот AAAA е сѐ уште легитимно одредиште што клиентот може да го проба, а неуспехот се појавува како бавно вчитување, а не како грешка, затоа што прелистувачот се врати назад. Корисникот пријавува бавна страница, а не расипана, и тикетот за поддршка ја наследува таа нејасност. Репродуцирајте го со фиксна фамилија и извештајот станува конкретен.
Токму поради тоа враќање назад симптомот е неконзистентен меѓу апликациите. Прелистувачот го крие доцнењето; клиент на командната линија со фиксна фамилија веднаш ви го покажува вистинскиот неуспех.
Најдете ја фамилијата што барањето навистина ја користело
Започнете со името, не со тунелот. Прашајте ги двата типа записи и запишете што се врати:
dig +short A example.com
dig +short AAAA example.com
curl -4 -sS -o /dev/null -w '%{http_code}\n' https://example.com
curl -6 -sS -o /dev/null -w '%{http_code}\n' https://example.comАко барањето v4 успее, а барањето v6 не успее, сте го репродуцирале проблемот во форма што можете да ја отстранувате. Ако двете успеат од школката, а прелистувачот сѐ уште не успева, погледнете го сопствениот резолвер на апликацијата или кеширан одговор пред да го допрете тунелот.
Чувајте ја фамилијата и одредиштето во вашите белешки. Тикетот што вели дека страницата не се вчитува преку VPN не може никој да го провери, додека тикетот што вели дека AAAA не успева, а A работи, покажува на конкретна рута.
Проверете ја рутата за таа фамилија
За фамилијата што не успева, прашајте го јадрото кој пат би го користело и споредете го со конфигурираните адреси на тунелот. На Linux, ip -6 route get за одредиштето ги прикажува интерфејсот и изворот што би биле избрани.
Потоа проверете го самиот тунел. WireGuard-партнерите носат список на дозволени IP-а, а записот за 0.0.0.0/0 не кажува ништо за IPv6. Ако списокот на партнерот нема IPv6 префикс, клиентот нема причина да прати AAAA сообраќај во тунелот, и пакетот излегува по она што домаќинот инаку би го направил.
Правилата на огнениот ѕид и политиката на NAT заслужуваат иста проверка по фамилија. Правило напишано за IPv4 не покрива IPv6 на ниту една платформа, и тоа е најчестата причина една фамилија да работи, а другата не.
Не исклучувајте IPv6 за да го поедноставите екранот
Исклучувањето на IPv6 низ целиот систем ќе го отстрани симптомот и ќе ве остави без дијагноза. Исто така ги крши сите одредишта што се само IPv6, и ја крие истата грешка за следната апликација. Ако машината навистина не треба да користи IPv6, тоа е свесна политика со сопственик и тест. Исклучувањето за време на инцидент не е ниту едно од двете.
Одлучете што треба клиентот да прави со фамилијата и конфигурирајте го тоа експлицитно: пренесете ја низ тунелот, или блокирајте ја на поддржан начин за изборот никогаш да не понуди недостапно кандидат. Двете се легитимни дизајни. Глобалното исклучување не е ниту едно од нив, зашто тоа воопшто не е дизајн.
Што да ставите во тикетот
Запишете четири работи: името на домаќинот, фамилијата што не успеа, рутата што ја избра јадрото и резултатот од барање специфично за фамилијата. Тој сет е доволен за некој друг да го репродуцира неуспехот без да погодува кој од двата пата мислевте.
Правилата за избор на адреса на RFC 6724 објаснуваат зошто клиентот го претпочиташе кандидатот што го претпочиташе, а RFC 8305 го објаснува однесувањето на трката што го скри доцнењето. Ниту едно од нив нема да рутира пакет за вас, а тоа е делот што тунелот мора да го направи.