Անջատիչը արգելափակում է միայն IPv4-ը՝ ինչու է IPv6-ը դեռ դուրս գալիս
IPv4-ի համար նախատեսված firewall-ի կանոնների հավաքածուն ոչինչ չի ասում IPv6-ի մասին։ Երկկողմանի կույտով սարքում թունելը կարող է ընկնել, մինչ հավելվածը շարունակում է աշխատող ուղի պահել դրա շուրջ։
Թունելն ընկնում է, անջատիչը հայտնում է, որ միացել է, և ներբեռնումը շարունակվում է։ IPv4-ի կանոններում ոչինչ կոտրված չէ։ Հավելվածը պարզապես տեղափոխվել է մի ուղի, որի համար այդ կանոնները երբեք չեն գրվել։
Երկկողմանի կույտով սարքերն ունեն դուրս գալու երկու անկախ ճանապարհ։ Դրանցից մեկի արգելափակումը կիսով չափ արգելափակում է։
Երկու կանոնների հավաքածու, երկու լռելյայն
Linux-ում iptables-ը և ip6tables-ը առանձին աղյուսակներ են՝ առանձին քաղաքականություններով։ IPv4 աղյուսակի INPUT և OUTPUT շղթաները DROP-ի դնելը ոչինչ չի փոխում IPv6 աղյուսակում, որտեղ լռելյայնը սովորաբար ACCEPT է։ Նույն բաժանումը գոյություն ունի nftables-ում, որտեղ կարող եք ուսումնասիրել մեկ ընտանիք և պարզել, որ դրանցից միայն մեկն է կրում ձեր կանոնները։ Այդ ասիմետրիան նորմալ է, և ամբողջ խնդիրը հենց դա է։
Այդ պատճառով անջատիչը կարող է մանրակրկիտ թվալ և մասամբ գործել։ Այն սկրիպտը, որը գրել է IPv4-ի կանոնները, աշխատել է, հաշվիչները ավելանում են, մատյանի տողը հայտնվում է, և IPv6 փաթեթը դուրս է գալիս ֆիզիկական ինտերֆեյսից՝ ամբողջովին անձեռնմխելի։
Կարդացեք, թե ինչ է իրականում տեղադրում ձեր հաճախորդը, այլ ոչ թե ինչ է խոստանում մարքեթինգային էջը։ Որոշ հաճախորդներ IPv6-ը ուղղորդում են թունելի մեջ, ոմանք դիտմամբ արգելափակում են այն, իսկ ոմանք թողնում են ինչպես կա, մինչ հարթակի մակարդակի կողպումը կիրառում է այլ կանոն։ Այստեղ վաճառողի փաստաթղթերն են վստահության միակ արժանի աղբյուրը։
Ինչ է ձեզ ասում ինտերֆեյսի կարգավորումը
wg-quick-ի ձեռնարկի էջը իր օրինակելի կարգավորման մեջ ներառում է IPv6 կանոններ, և պատճառը հենց այս բացն է։ Օրինակը զարդարանք չէ։ Այն գոյություն ունի, որովհետև միայն IPv4 կանոնները երկրորդ ընտանիքը բաց կթողնեին։
Օրինակի կեսը պատճենելը տալիս է քաղաքականության կեսը։ Սա այս արտահոսքի ամենատարածված աղբյուրն է։ Բլոգային գրառումը կրճատել է օրինակը երկարության պատճառով։ Հետո կրճատված տարբերակը դարձավ այն ձևանմուշը, որն բոլորը նորից օգտագործեցին։
# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20
# nftables: inspect each family separately
sudo nft list ruleset inet | head -40
# does this host even have a usable IPv6 path?
ip -6 route show default
Եթե երկրորդ հրամանը տպում է թույլատրող քաղաքականություն, մինչ առաջինը տպում է DROP, դուք գտել եք պատասխանը՝ չդիպչելով հաճախորդին։ Այդ ասիմետրիան է սխալը։
Ինչու մեկ որոնումը ամբողջ պատմությունը չէ
Մեկ անունը կարող է վերադարձնել և՛ A գրառում, և՛ AAAA գրառում, և հավելվածները բոլորը նույն կերպ չեն ընտրում։ Դիտարկիչը կարող է նախընտրել IPv6-ը, երբ ցանցը տրամադրում է այն, և ձախողման դեպքում հետ գնալ, մինչ ֆոնային համաժամեցումը կամ թարմացնողը օգտագործում է իր սեփական լուծիչն ու իր նախապատվությունը։ Այսպիսով IPv4-ի վրայով մեկ հաջող փորձարկումը ապացուցում է մեկ ուղի, ոչ թե քաղաքականությունը։
Ցանցային անցումները նույնպես փոխում են պատասխանը։ Այլ Wi-Fi ցանցին միանալը, քնից արթնանալը կամ բջջային ցանցին անցնելը կարող է սարքին նոր IPv6 նախածանց տալ, և գրասենյակի LAN-ում բավարար թվացող քաղաքականությունը կարող է չծածկել այն։
Փորձարկեք այն վիճակը, երբ թունելն անջատված է
Միացված ժամանակ փորձարկելը ձեզ ասում է, որ թունելն աշխատում է։ Հետաքրքիր փորձարկումը անհասանելի վիճակն է, որովհետև հենց այդ ժամանակ է անջատիչը պետք է դիմանա։ Դիտմամբ կանգնեցրեք թունելը, ապա փորձեք կարևոր նպատակակետերը ձեր պաշտպանած հավելվածից։
# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/
Երկու ընտանիքներն էլ պետք է փակ ձախողվեն։ Եթե IPv4 հարցումը ժամանակը սպառի, և IPv6 հարցումը վերադարձնի կարգավիճակի կոդ, քաղաքականությունը թերի է, և թունելի որքան էլ նորից փորձարկելը դա չի փոխի։
Այդ փորձարկման մեջ պահեք նաև փաստաթղթավորված բացառությունները։ Տեղական ցանցի հայտնաբերումը, DHCP-ի թարմացումը կամ VPN-ի վերջնակետի մեկնարկային ուղին կարող են հասանելի մնալու կարիք ունենալ, և այդ բացառությունները պետք է նշվեն քաղաքականության մեջ, ոչ թե հայտնաբերվեն խափանման ժամանակ։ Արտահոսքի փորձարկումը, որը ձախողվում է, որովհետև թունելը չի կարող նորից բարձրանալ, անվտանգության բացահայտում չէ, այն կապակցվածության բացահայտում է։