Ինչու է wg-quick-ը վերագրում wg0.conf-ը, երբ դադարեցնում եք ինտերֆեյսը
SaveConfig-ը անջատման պահին պահպանում է, ոչ թե ֆոնային սինխրոնացում։ Խմբագրեք ֆայլը, երբ թունելը միացված է, և վերագործարկումը կարող է հին վիճակը գրել դրա վրա։
Դուք peer եք ավելացնում /etc/wireguard/wg0.conf-ին, գործարկում եք systemctl restart wg-quick@wg0-ը, և հաջորդ անգամ նայելիս peer-ը բացակայում է ֆայլից։ Ոչինչ ոչինչ չվնասեց։ Վերագործարկումը դադարեցում է, որին հաջորդում է մեկնարկ, և դադարեցման քայլը կարող է ընթացիկ գործարկման վիճակը գրել այն ֆայլի վրա, որը հենց նոր խմբագրեցիք։ Պատասխանատու կարգավորումը ապրում է հենց այն ֆայլում, որը խմբագրում էիք, և դա է, որ ցիկլը դարձնում է այդքան շփոթեցնող առաջին անգամ դրան հանդիպելիս։
Երկու վիճակ, մեկ ֆայլ և պահպանում անջատման պահին
WireGuard-ի գործարկման վիճակը և wg-quick-ի կոնֆիգուրացիայի ֆայլը կապված են, բայց տարբեր։ Ֆայլը մուտք է՝ wg-quick-ը կարդում է այն, ստեղծում ինտերֆեյսը, սահմանում հասցեներ և ուղիներ և կարգավորում peer-երը։ Միջուկի սարքը կենդանի օբյեկտն է, և wg-ով արված ցածր մակարդակի փոփոխությունները երբեք իրենք իրենց հետ չեն գրվում։
Բացառությամբ մեկ ուղղության։ Երբ ինտերֆեյսի բաժնում հայտնվում է SaveConfig = true-ը, wg-quick-ը պահպանում է կենդանի կոնֆիգուրացիան ֆայլում՝ որպես ինտերֆեյսն իջեցնելու մաս։ wg-quick-ի ձեռնարկը հենց այս մասին է զգուշացնում՝ ինտերֆեյսի միացված ժամանակ ֆայլում արված փոփոխությունները կարող են վերագրվել, երբ այն հեռացվի։ Սա պահպանում է անջատման պահին, ոչ թե ֆոնային ժամաչափ, ուստի այն գործում է միայն այն ժամանակ, երբ ինչ-որ բան դադարեցնում է ինտերֆեյսը։
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
Կարդացեք աղյուսակը որպես զգուշացում հերթականության մասին։ Այս ոլորտում յուրաքանչյուր պատահական կորուստ գալիս է պահպանումից առաջ արված խմբագրումից, ոչ թե դրանից հետո։
Նախ դադարեցրեք, երկրորդը խմբագրեք, վերջում մեկնարկեք
Եթե ֆայլը ձեր ճշմարտության աղբյուրն է, ֆայլը հեղինակավոր դարձրեք կառուցմամբ, ոչ թե հույսով։ Իջեցրեք ինտերֆեյսը, հաստատեք, որ այն գնացել է, ապա խմբագրեք, ապա նորից բարձրացրեք։ Կանոնը պարզ է՝ ոչ մի խմբագրում գոյություն չունի, քանի դեռ պահպանումը դեռ կարող է աշխատել։
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
Պահուստային տողը արարողություն չէ։ Եթե թունելը ձեր ճանապարհն է դեպի այս մեքենան, իջեցման քայլը կարող է վերջ տալ ձեր նստաշրջանին, և սկավառակի վրա պատճենը գումարած վահանակը կամ արտաբազային ուղին միակ աշխատող հետադարձն է։ Ստուգեք այդ երկրորդ տողը նախքան դրան վստահելը՝ հին ինտերֆեյսի անունը լուռ ձախողվող սկրիպտում հենց այն է, ինչպես մարդիկ խմբագրում են դեռ կենդանի ֆայլը։
Սովորական իջեցումից առաջ SaveConfig = false-ը սահմանելը մյուս ընդունելի ուղին է, և այն պետք է արվի այն ֆայլում, որը wg-quick-ը իրականում կարդում է։ Այն կանխում է այդ մեկ ավտոմատ պահպանումը։ Այն չի ստիպում առանձին NetworkManager պրոֆիլին, երթուղիչի արտահանմանը կամ կոնտեյների մուտքի կետին վերաբեռնել ձեր խմբագրումները, որովհետև այդ կառավարիչները բոլորովին չեն կարդում այս ֆայլը։
Կիրառեք peer-երի փոփոխությունները՝ չպատռելով ինտերֆեյսը
Ոչ բոլոր խմբագրումն է ընդհատում պահանջում։ Peer-ի մակարդակի փոփոխությունները կարելի է կիրառել աշխատող ինտերֆեյսի վրա՝ ֆայլը կոնֆիգուրացիայի վերածելով և սինխրոնացնելով այն, ինչը լիովին խուսափում է իջեցման քայլից և հետևաբար՝ պահպանումից:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip քայլը կարևոր է։ Այն տպում է ֆայլը՝ հեռացված լինելով միայն wg-quick-ին պատկանող բանալիները, որպեսզի հասցեները, DNS-ը և երթուղման հրահանգները չհայտնվեն մի գործիքի մեջ, որը չի հասկանում դրանք։ Այնուհետև սինխրոնացումը կիրառում է peer-երն ու բանալիները կենդանի սարքի վրա՝ առանց ինտերֆեյսը նորից ստեղծելու, ուստի գոյություն ունեցող նստաշրջաններն ու ուղիները պահպանվում են։
Եղեք ճշգրիտ սահմանների հարցում։ Peer-երի սինխրոնացումը չի փոխում ինտերֆեյսի հասցեն, wg-quick-ի ավելացրած ուղիները կամ լուծիչի կոնֆիգուրացիան, որովհետև դրանցից ոչ մեկը չի պատկանում WireGuard սարքին։ Ենթացանց ավելացնելը AllowedIPs-ին և սպասելը, որ միջուկը կերթուղավորի այն, դասական սխալ ընթերցում է՝ ուղին պետք է ավելացնի wg-quick-ը բարձրացման պահին կամ դուք։
Ստուգեք, թե ում է պատկանում ինտերֆեյսը, նախքան որևէ բան խմբագրելը
Կոնֆիգուրացիայի համակարգով կառավարվող աշխատասեղանի կամ սերվերի վրա ֆայլը կարող է լինել ելք, ոչ թե մուտք։ NetworkManager-ի միացումը, երթուղիչի ստեղծած պրոֆիլը կամ կոնտեյների մեկնարկային սկրիպտը կարող են բոլորը տիրել նույն ինտերֆեյսի անվանը, և այդ դեպքում անթերի wg-quick հաջորդականությունը դեռևս խմբագրում է սխալ արտեֆակտը։
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
Երրորդ հրամանը տպում է կենդանի կոնֆիգուրացիան ֆայլի նույն ձևաչափով՝ ներառյալ մասնավոր բանալին, ինչը օգտակար է համեմատության համար և վտանգավոր տոմսի մեջ։ Ծածկեք այն նախքան տեղադրելը՝ մասնավոր բանալին աջակցության թեմայում մշտական փոխզիջում է, ոչ թե տառասխալ։
Եթե ծառայության միավորը ոչ ակտիվ է, բայց ինտերֆեյսը գոյություն ունի, ինչ-որ այլ բան է ստեղծել այն, և ֆայլը հեղինակավոր չէ։ Այդ մեկ դիտարկումը խնայում է մեկ ժամ՝ խմբագրելով ֆայլ, որը ոչինչ չի կարդում։
Ստուգեք հաջորդ վերագործարկումը, ապա պահեք հետադարձ
Թեստը, որն իսկապես ապացուցում է ուղղումը, երկրորդ վերագործարկումն է, որովհետև հենց այդ հաջորդականությունն է ձախողվել առաջին անգամ։ Համոզվեք, որ peer-ը վերապրում է այն և որ կենդանի կոնֆիգուրացիան դեռ համապատասխանում է սկավառակի վրա եղածին:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
Գործարկեք վերագործարկումը երկու անգամ։ Մեկ մաքուր անցումը կարող է բախտ լինել՝ առաջին վերագործարկումը կարող է սպառել գործարկման փոփոխություն, որը դեռ չէր պահպանվել, ուստի երկրորդն է, որ ձեզ ասում է՝ ֆայլն ու գործարկումը համաձայնել են առաջինի վերջում։
Պահեք պահուստը գործընթացի սկզբից մինչև կրկնակի վերագործարկումն ավարտեք, ապա ջնջեք այն կամ տեղափոխեք կոնֆիգուրացիայի պանակից դուրս։ Իրական ֆայլի կողքին մնացած wg0.conf.bak-ը անվնաս է wg-quick-ի համար և շփոթեցնող է հաջորդ մարդու համար, ով ի վերջո կխմբագրի սխալը։