WireGuard. երկու կիսով երթուղիներն ընդդեմ 0.0.0.0/0-ի wg-quick-ում
Երկու /1 միջակայքերը ծածկում են նույն հասցեները, ինչ /0-ն, սակայն wg-quick-ը դրանք երթուղավորում է այլ կերպ։ Փոփոխելուց առաջ ստուգեք քաղաքականության կանոնները, նշանները և վերջնակետի ուղին։
Երկու /1 նախածանցեր ծածկում են ճիշտ նույն IPv4 հասցեները, ինչ մեկ /0-ը, և այդ հավասարությունը գործում է միայն հավասարակցի թույլատրված նախածանցների ցանկի ներսում։ Այն դադարում է գործել այն պահին, երբ կարգավորման գործիքը որոշում է, թե ինչպես երթուղավորել, որովհետև Linux-ի wg-quick-ը լռելյայն նախածանցը մշակում է որպես հատուկ դեպք, այլ ոչ որպես թվաբանություն։ Հատուկ ճյուղը տեղադրում է առանձին աղյուսակ, երկու քաղաքականության կանոն, վարդակի նշան և հակադարձ ուղու կարգավորումներ, որոնք կիսով երթուղիների զույգը երբեք չի ստանում։ Այնպես որ, երբ փոփոխությունից հետո վստահված սերվերը կամ զննարկիչը դադարում է աշխատել, նախածանցերն ամենաքիչ հետաքրքիր մասն են փոփոխության։
Նախածանցների ցանկը ամբողջ կարգավորումը չէ
AllowedIPs-ը միաժամանակ երկու աշխատանք է կատարում, և դրանցից միայն մեկն է ծածկույթի մասին։ Հենց WireGuard-ի համար ցանկը գաղտնաբանային երթուղավորում է՝ այն որոշում է, թե որ նշանակետերն են գաղտնագրվում հավասարակցի ուղղությամբ և որ աղբյուրային հասցեներ կարող է օգտագործել այդ հավասարակիցը։ wg-quick-ի համար նույն ցանկը ծառայում է նաև որպես երթուղիների ճշգրտում, և այն երթուղին, որն այն ստեղծում է, կախված է նրանից, թե ցանկը որ ճյուղին է պատահաբար համապատասխանում։ Ուստի երկու տարբեր ցանկերի ձևերի դեպքում նույնական ծածկույթը ոչինչ չի ասում հոսթի նույնական վիճակի մասին։
Լռելյայն կարգավորումը այդ որոշումը վերցնում է ձեր ձեռքից, որովհետև Table-ը լռելյայն ինքնաշխատ է, և գործիքն ինքն է ընտրում, թե որտեղ իջնեն երթուղիները։ Այլ ցանցային կառավարիչը, բաշխման փաթաթան կամ հատուկ Table արժեքը նորից փոխում են արդյունքը, և դրա համար էլ մեկ հոսթի համար գրված խորհուրդը կարող է սխալ թվալ հաջորդի վրա։
Ինչ է ավելացնում լռելյայն ճյուղը երթուղուց բացի
/0 գրառումը wg-quick-ը ուղարկում է իր լռելյայն երթուղու ուղի՝ առանձին երթուղավորման աղյուսակ ստանում է լռելյայնը, մեկ քաղաքականության կանոն այնտեղ է ուղարկում չնշված երթևեկությունը, երկրորդ կանոնը հիմնական աղյուսակի ավելի կոնկրետ երթուղիները պահում է հեղինակավոր, և ինտերֆեյսը ստանում է հրդեպատի նշան իր իսկ վարդակի վրա։ Այդ նշանն է օղակի պահապանը։ Թունելի երթևեկությունը կրող գաղտնագրված դատագրամները դուրս են գալիս նշանը դրված, որպեսզի մնացած ամեն ինչ թունել մղող կանոնը չկուլ տա թունելի սեփական տրանսպորտային փաթեթները։
Փոխարենը /1 գրառումների զույգը գնում է սովորական երթուղու ուղիով։ Կարգավորված աղյուսակում իջնում են երկու երթուղի, և շրջապատի մեքենայության ոչ մի մաս չի հայտնվում՝ ոչ այն պատճառով, որ այն ավելորդ է, այլ այն պատճառով, որ այդ կոդի ուղին երբեք չի մտցվել։
Որտեղ են տարանջատվում երկու դասավորությունները
Տարբերությունը սկզբում երևում է որպես ռեկուրսիա։ Երբ կիսով երթուղիները հիմնական աղյուսակում են, հավասարակցի սեփական տրանսպորտային հասցեն ընկնում է թունելի նախածանցի մեջ, ուստի այն փաթեթը, որը պետք է կրի թունելը, համապատասխանում է թունելի ներսը մատնանշող երթուղու։ Ինչ-որ բան պետք է այն բացառի՝ ընթացիկ վերջնակետի համար հոսթային երթուղի, ձեռքով կիրառված նշան կամ ինտերֆեյսին հատուկ կանոն։ Հոսթային երթուղին աշխատում է այնքան ժամանակ, քանի դեռ վերջնակետի հասցեն չի փոխվում՝ ինչն էլ տեղի է ունենում DNS-ի վրա հիմնված վերջնակետերի, թափառող հաճախորդների և բազմահավասարակից կարգավորումների դեպքում։
Երկրորդ՝ ամեն ինչ, որ նշանների մասին է դատում, փոխում է իր վարքը։ Տեղայնորեն կապերը վերահասցեավորող թափանցիկ վստահված սերվերը ստեղծում է նոր վարդակներ, որոնց նշաններն ու աղբյուրները տարբերվում են սկզբնական հաճախորդի հոսքից, և լռելյայն ճյուղի ստեղծած քաղաքականության կանոնները մաս էին կազմում այն բանի, ինչը բաժանեց այդ հոսքերը։ Վստահված սերվերի սեփական ելքային կապը կարդալը այլ վարժություն է, քան ստուգելը, թե արդյոք սկզբնական նշանակետը հասանելի է։
Կարդացեք կանոններն ու նշանները նախքան փոփոխելը
Արձանագրեք ընթացիկ վիճակը, քանի դեռ թունելը առողջ է, ապա նորից փոփոխությունից հետո, և համեմատեք երկու արտածումները՝ կարգավորման ֆայլից դատելու փոխարեն։ Ներառեք քաղաքականության կանոնները, ամեն աղյուսակ, ինտերֆեյսի նշանը և արձանագրված վերջնակետերը։
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
Եթե արտածման առաջին տողը կորցրել է չնշված երթևեկության կանոնը, և առանձին աղյուսակը դատարկ է, ապա լռելյայն ճյուղը չի աշխատում, և նախածանցների ոչ մի թվաբանություն չի վերականգնի դրա ազդեցությունները։ Զրոյական նշանը ինտերֆեյսի վրա, որը նախկինում նշան էր կրում, նույն ազդանշանն է՝ տեսանելի մեկ արժեքի մեջ։
Փորձարկեք թունելի կորուստը թողարկումից առաջ
Եթե կիսով երթուղիների դասավորությունը գիտակցված ընտրություն է, այն պետք է բացահայտ տրամադրի բացակայող մասերը՝ հասցեների փոփոխություններին դիմացող վերջնակետի ուղի, թունելի անկման դեպքում նախատեսված վարքը և IPv6-ի համարժեք մշակումը։ Գրեք դրանք որպես պահանջներ՝ դրանք ընդհատման ընթացքում հայտնաբերելու փոխարեն։ Ապա փորձարկեք խափանումը, որովհետև լուռ կերպով ֆիզիկական վերին կապին վերադարձող ամբողջական թունելը ավելի վատ է, քան աշխատանքը դադարեցնողը։
sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1
Երթուղու որոնումը պետք է վերջնակետը լուծի ֆիզիկական ինտերֆեյսից՝ առանց թունելը հատելու, և ինտերֆեյսն իջեցնելը պետք է հոսթը թողնի այն վիճակում, ինչ խոստացել էր նախագիծը։ Փոխարինումից հետո աշխատող վստահված սերվերը ապացուցում է, որ ստեղծված հոսթի վիճակը կարևոր էր, սակայն չի ապացուցում, որ օղակի կանխարգելումը և անջատված վիճակի վարքը վերապրել են փոփոխությունը։