Կարդացեք WireGuard-ի կոնֆիգը տող առ տող՝ Interface-ից Peer
Interface-ի բանալիները պատկանում են այս ծայրին, peer-ի բանալիները՝ մյուս կողմին։ Կարդացեք յուրաքանչյուր տողը որպես մեկ ուղղություն, ապա ստուգեք, թե wg-quick-ը ինչ ավելացրեց արձանագրության շուրջ։
WireGuard-ի կոտրված կոնֆիգների մեծ մասը սխալվում է ոչ թե արժեքի մեջ, այլ ճիշտ արժեքը դնում է սխալ կողմում։ Անձնական բանալին պատկանում է այս մեքենային, peer-ը կրում է մյուս մեքենայի հանրային բանալին, իսկ հասցեն նստում է interface բլոկում, թեև նկարագրում է, թե որտեղ է ապրում թունելը։ Կարդացեք ֆայլը որպես երկու հանդիպող ուղղություն, ապա ստուգեք, թե օժանդակ սկրիպտը ինչ ավելացրեց վերևում։ Արձանագրությունն ինքն ունի ավելի քիչ դաշտեր, քան ֆայլը, և լրացուցիչները արժե առանձին իմանալ։
Interface-ի բանալիները նկարագրում են այս մեքենան
interface բլոկը պահում է այս ծայրի սեփական ինքնությունը։ PrivateKey այդ ինքնությունն է և երբեք չի լքում հոսթը՝ դրանից ածանցվում է համապատասխան հանրային բանալին, և հենց այն են թվարկում մյուս peers-ը։ ListenPort այն տեղն է, որտեղ այս կողմը ընդունում է ձեռքսեղմումներ, ուստի մեկ հասցեի հետևում գտնվող երկու հաճախորդի տարբեր պորտեր են պետք։
Address այն թունելի հասցեն է, որին պատասխանում է այս հոսթը՝ գրված նախածանցի երկարությամբ, քանի որ այն նաև այն աղբյուրն է, որը կօգտագործի։ Այստեղ նախածանցը սխալ դնելը փոխում է, թե որ ուղղությունները հոսթը համարում է ուղղակիորեն միացված, և դա առաջացնում է խափանումներ, որոնք նման են երթուղավորման, ոչ թե կոնֆիգի։
Մնացած ամեն ինչ [Interface] բլոկում իրական հաճախորդի հետ սովորաբար ավելացնում է wg-quick-ը՝ DNS, MTU, Table, և կեռիկների տողերը։ Դրանք արձանագրության դաշտեր չեն, և մերկ wg կարգավորումը լիովին անտեսում է դրանք։
Յուրաքանչյուր peer գրառում նկարագրում է մեկ այլ կողմ
[Peer] բլոկը հեռավոր կողմն է։ PublicKey այդ կողմի ածանցված բանալին է, երբեք նրա անձնական բանալին, և PresharedKey ընտրովի լրացուցիչ գաղտնիք է, որը երկու կողմերը պետք է պահեն նույնական։ Endpoint այն է, թե ուր ուղարկել, և PersistentKeepalive խնդրում է այս հոսթին փաթեթ ուղարկել միջակայքից հետո, երբ ուրիշ ոչինչ դուրս չի գնում։
Այստեղ շփոթության մեծ մասը բացատրում են երկու սխալ։ Սեփական անձնական բանալին peer բլոկում պատճենելը ստիպում է երկու ծայրերին կիսել մեկ ինքնություն, և ձեռքսեղմումը ձախողվում է այնպես, որ վատ է գրանցվում։ Endpoint-ը հաճախորդի վրա բաց թողնելը սովորաբար դիտավորություն է, քանի որ սերվերը հասցեն սովորում է ներգնա ձեռքսեղմումից՝ այն բաց թողնել սերվերի վրա, որը պետք է սկսի, այդպես չէ։ Հիշեք նաև, որ keepalive-ը բաց է պահում NAT-ի քարտեզագրումը, և այն չի բարելավում թողունակությունը և չի նվազեցնում ուշացումը, ուստի երեսուն վայրկյան լրացուցիչ փաթեթներ ոչինչ չեն գնում, երբ երթևեկությունն արդեն հոսում է։
AllowedIPs-ը երթուղավորում է, ոչ թե թույլտվությունների ցանկ
AllowedIPs WireGuard-ի գաղտնաբանալի երթուղավորումն է։ Դուրս գնալիս այն որոշում է՝ որ peer-ը կստանա փաթեթը՝ ըստ նշանակման։ Ներս գալիս այն որոշում է՝ արդյոք այդ peer-ից եկող փաթեթը կընդունվի՝ ըստ աղբյուրի։ Նույն դաշտը կատարում է երկու աշխատանքը, դրա համար այն ոչ մուտքի վերահսկման ցանկ է, ոչ էլ թույլատրված կայքերի ցանկ։
Նեղ AllowedIPs սերվերի վրա հաճախորդի համար նշանակում է, որ սերվերը կընդունի միայն այն փաթեթները, որոնք հավակնում են այդ աղբյուրներին, և կուղարկի միայն այդ նշանակումները այդ հաճախորդին։ Ընդարձակեք մի կողմը՝ չընդարձակելով մյուսը, և կստանաք թունել, որը բարձրանում է և ոչինչ չի անցկացնում։
Ինչ է ավելացնում wg-quick-ը արձանագրության շուրջ
wg-quick կարդում է նույն ֆայլը և կատարում ցանցային քայլերը, որոնք արձանագրությունը թողնում է օպերացիոն համակարգին։ Այն նշանակում է interface-ի հասցեն, ավելացնում է AllowedIPs-ից ածանցված երթուղիներ, գրում է լուծիչի կարգավորումները և հերթով կատարում կեռիկի հրամանները։
Այդ շերտը բացատրում է դասական ասիմետրիան։ 0.0.0.0/0 և DNS տողով ֆայլը հաճախորդին տալիս է լռելյայն երթուղի և լուծիչ, և այն բացարձակապես ոչինչ չի անում սերվերի փոխանցման կամ NAT-ի կանոններին։ Դրանք պատկանում են սերվերի սեփական կոնֆիգին, և ոչ մի հաճախորդի ֆայլ չի կարող դրանք ապահովել։
Ֆայլի համար պահեք մեկ սեփականատեր։ Այն ձեռքով խմբագրելը, քանի դեռ SaveConfig միացված է, նշանակում է, որ ձեր խմբագրումը կվերանա հաջորդ անգամ, երբ interface-ը իջնի, և interface-ը ձեզ չի ասի, որ դա տեղի է ունեցել։
Ստուգեք կիրառված վիճակը, ոչ թե ֆայլը
Ֆայլը մտադրություն է։ Կիրառված վիճակը այն է, ինչ պահում է միջուկը, և դրանք տարանջատվում են ամեն անգամ, երբ օժանդակ միջոցը, drop-in-ը կամ կեռիկը ինչ-որ բան խմբագրել է ակտիվացումից հետո։
Կարդացեք կենդանի վիճակը և հասցեավորումը միասին, ապա համեմատեք երկուսն էլ ձեր գրածի հետ՝
sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.confԵթե peer-ների ցանկը դատարկ է, interface-ը ստեղծվել է առանց դրա կոնֆիգը կիրառելու։ Եթե հասցեներ և երթուղիներ կան, բայց հաշվիչները մնում են զրոյի վրա, ֆայլը բեռնվել է և ձեռքսեղմումը ձախողվում է, ինչը բանալիի կամ ծայրակետի խնդիր է, ոչ թե բաժինների հերթականության։ Համեմատեք երկու տեսքը խմբագրելուց առաջ, որովհետև նրանց միջև եղած բացը սովորաբար իրական խափանումն է։