Pi-ն Wi-Fi-ից մալուխի անցկացնելը հինգ րոպեի գործ է թվում, և այդպես է մնում միայն այն դեպքում, երբ տեղափոխումը դիտարկում եք որպես չորս առանձին կարգավորում՝ մեկի փոխարեն։ Այն վերջնակետի անունը, որին զանգահարում են ձեր հաճախորդները, կարող է մնալ ճիշտ նույնը, մինչ դրա տակի հասցեն փոխվում է։ Իրականում կոտրվում է հին հասցեին կապված լսողը, դեռևս անլար լիզինգին ուղղված պորտի վերափոխումը կամ վերադարձի ուղին, որը դուրս է գալիս այն ինտերֆեյսից, որը կարծում էիք, թե դուրս եք բերել։ Այս ուղեցույցը յուրաքանչյուր քայլում բաց է պահում վերականգնման ուղին, ուստի ձախողված անցումը արժենա միայն վերագործարկում։

Գրանցեք չորս պատասխանատուներին, նախքան ինչ-որ բան անջատելը

Չորս կարգավորում որոշում են՝ անցումը կդիմանա՞, թե՞ ոչ՝ Pi-ի հասցեն, կապակցման հասցեն OpenVPN, երթուղիչի վերահասցեավորման թիրախը և այն ուղին, որով գնում են պատասխանները։ Գրանցեք բոլոր չորսը, նախքան մալուխին դիպչելը, որովհետև անլար լիզինգը անհետանալուց հետո հին արժեքներն այլևս չեք կարող կարդալ մեքենայից։ Մալուխային ինտերֆեյսը չի ժառանգում անլար պրոֆիլը, և Bookworm-ում հասցեն ապրում է NetworkManager-ում, մինչդեռ Bullseye-ն այն պահում է dhcpcd.conf-ում։ Այն վերապահումը, որը կապել էր անլար MAC հասցեն, ոչինչ չի ասում eth0-ի մասին։ Նոր հասցեն ընդունեք որպես նոր նշանակում, որն ունի իր սեփական ապացույցի կարիքը։

Old wireless lease:   10.42.7.24/24 on wlan0
New wired address:    10.42.7.31/24 on eth0
Client endpoint:      vpn.lab.example:1194/udp

Լսողը երկրորդ պատասխանատուն է։ Եթե ծառայությունը մեկնարկել է կոնկրետ կապակցման հասցեով, սոկետը մահանում է հին ինտերֆեյսի հետ միասին՝ եթե այն կապում է բոլոր հասցեները, սոկետը գոյատևում է, և երթուղիչի կանոնը դառնում է միակ բանը, որ մնում է ուղղել։

Վերահասցեավորման թիրախը և վերադարձի ուղին այն պատասխանատուներն են, որոնց մարդիկ բաց թողնում են։ Վերափոխումը, որը դեռևս ցույց է տալիս 10.42.7.24-ին, ժամանող ձեռքսեղմումներն ուղարկում է մի հասցեի, որը Pi-ն այլևս չունի, ուստի հաճախորդները ժամանակային սահմանի են հասնում առանց սերվերի կողմում մեկ տող լոգի։ Վերադարձի ուղին կարևոր է, երբ երկու կապերն էլ կարճ ժամանակ ակտիվ են, որովհետև Pi-ն պատասխանում է այն ինտերֆեյսից, որը նախընտրում է երթուղիների աղյուսակը, և դա միշտ չէ այն ինտերֆեյսը, որով եկել է փաթեթը։ Ստորև երթուղու որոնումը ցույց է տալիս, թե որ աղբյուրն է ընտրում միջուկը։

Կարդացեք իրական սոկետը, նախքան նոր հասցեին վստահելը

Կոնֆիգուրացիայի ֆայլերը նկարագրում են մտադրությունը, իսկ սոկետը՝ իրականությունը։ Հարցրեք աշխատող ծառայությանը, թե ինչին է այն կապված, փոխարենը վստահելու հիշած կոնֆիգուրացիային։ OpenVPN 2.6-ի ձեռնարկը --local-ը սահմանում է որպես մեկ հասցեին կապակցում և նշում, որ այն բաց թողնելը կապում է բոլոր ինտերֆեյսները։

sudo systemctl cat openvpn-server@server | grep -n -- '--local'
sudo ss -lunp '( sport = :1194 )'

Կարդացեք տեղական հասցեի սյունակը՝ վիճակի սյունակի փոխարեն։ 10.42.7.24:1194 ցույց տվող տողը նշանակում է, որ սոկետը կապված է այն հասցեին, որը դուք պատրաստվում եք հեռացնել, մինչդեռ 0.0.0.0:1194 կամ *:1194 նշանակում է, որ դեմոնն ինքն է հետևելու ինտերֆեյսի փոփոխությանը։ Եթե հասցեն կապված է, խմբագրեք պրոֆիլը և վերագործարկեք միավորը՝ ձեռքով ակտիվ սոկետը վերաշարադրելու փոխարեն, ապա հաստատեք, որ ծառայությունը դեռ հասնում է իր սերտիֆիկատի և բանալու ֆայլերին։

Անցեք տեղափոխումը ձեզ հասանելի պահող հերթականությամբ

Հերթականությունն այստեղ ավելի կարևոր է, քան արագությունը։ Բարձրացրեք մալուխային կապը, մինչ անլարը դեռ աշխատում է, հաստատեք նոր հասցեն և վերադարձի ուղին, և միայն դրանից հետո դուրս բերեք անլար պրոֆիլը։ Այդ հաջորդականությունը բաց է պահում աշխատող սեսիան, մինչև փոխարինողն ապացուցված լինի։

ip -br addr show eth0
ip route get 203.0.113.10
nmcli -g ipv4.method,ipv4.addresses con show "Wired connection 1"

Առաջին հրամանը պատասխանում է՝ eth0 ստացե՞լ է ձեր նախատեսած հասցեն, իսկ երկրորդը տպում է այն աղբյուրի հասցեն, որը միջուկը կօգտագործեր արտաքին նպատակակետի համար, ուստի գործարկեք այն փոփոխությունից առաջ և հետո։ Եթե այդ աղբյուրը դեռ անլար հասցեն է, մալուխային կապը դեռ նախընտրելի ուղին չէ, և արտաքին թեստը կձախողվի մի պատճառով, որը կապ չունի OpenVPN-ի հետ։ Ուղղեք երթուղային նախապատվությունը, նախքան վերափոխմանը դիպչելը։

Երբ երկու կապերն էլ ակտիվ են, Pi-ն կարող է նախընտրել անլար կանխադրված երթուղին, որովհետև այն առաջինն է տեղադրվել կամ որովհետև մալուխային կապն ավելի բարձր մետրիկա ունի։ Bookworm-ում աջակցվող կարգավորումը ipv4.route-metric-ն է կապակցման վրա, իսկ Bullseye-ում համարժեքը ինտերֆեյսին հատուկ metric տողն է dhcpcd.conf ֆայլում։ Նվազեցրեք անլար կապի առաջնահերթությունը՝ այն անջատելու փոխարեն, որպեսզի հետ վերադարձի ուղին մեկ հրաման հեռավորության վրա մնա։

Ապացուցեք թունելը դրսից, ոչ LAN-ից

Բազմոցից աշխատող VPN կապն ավելի քիչ բան է ապացուցում, քան թվում է։ LAN-ի ներսից դեպի հանրային հասցե տրաֆիկը անցնում է hairpin կամ անդրադարձման կանոններով, որոնք երթուղիչները կիրառում են անհետևողականորեն, ուստի հաջողված LAN թեստը կարող է գոյակցել կոտրված արտաքին ուղու հետ։ Ընդունման թեստի համար օգտագործեք բջջային տվյալներով հեռախոս կամ ցանցից դուրս ցանկացած հոսթ։ LAN փորձը պահեք որպես առանձին ընտրովի ախտորոշում։

Այնուհետև կարդացեք լոգը այն հերթականությամբ, որով ժամանում են փաթեթները։ Ընդհանրապես ոչինչ նշանակում է, որ ձեռքսեղմումը երբեք չի հասել Pi-ին, ուստի վերահասցեավորման թիրախը կամ հոսթի հրային պատը սխալ է։ Սկսվող և կանգ առնող ձեռքսեղմումը մատնանշում է բանալիներ, սերտիֆիկատներ կամ MTU։ Ավարտվող և ընկնող սեսիան սովորաբար նշանակում է վերադարձի ուղին կամ երկրորդ կանխադրված երթուղին, և հաճախորդի լոգի տողը Initialization Sequence Completed ձեզ ասում է, որ թունելն ինքն է բարձրացել։

sudo journalctl -u openvpn-server@server -n 40 --no-pager
sudo tcpdump -ni any udp port 1194 -c 20

Եթե սերվերի լոգում ոչինչ չի հայտնվում, մինչ հաճախորդը կրկին փորձում է, դադարեք կարդալ OpenVPN-ի կոնֆիգուրացիան և վերադարձեք վերահասցեավորման թիրախին։ Գրավումը պատասխանում է ժամանման հարցին վայրկյանների ընթացքում, և առանց պատասխանի մուտքային փաթեթները նեղացնում են խնդիրը մինչև երթուղին։

Պահեք մեկ քայլով հետ վերադարձ և դուրս բերեք անլար պրոֆիլը

Թողեք անլար պրոֆիլը տեղադրված, մինչև մալուխային կարգավորումը հաղթահարի վերագործարկումը։ nmcli con show թվարկում է այն պրոֆիլների անունները, որոնք ձեզ պետք կգան, և ջնջված պրոֆիլը պետք է վերականգնվի հիշողությունից ամենավատ պահին։ Գրանցեք ինտերֆեյսի անունը, հասցեավորման մեթոդը և մետրիկը մյուս չորս արժեքների կողքին։ Գրառումից մուտքագրելի հետ վերադարձն ավելի արժեքավոր է, քան այն, որը պետք է վերակառուցել։

Անլար կախվածությունը դուրս բերելը գույքի փոփոխություն է, ոչ թե ջնջում։ Սահմանելով connection.autoconnect no՝ հավատարմագրերը և հասցեների պատմությունը մնում են անձեռնմխելի, մինչ Pi-ն թույլ չի տալիս նորից միանալ այն ցանցին, որից դուք հեռացել եք։

nmcli con show
sudo nmcli con up "Wired connection 1"
sudo nmcli con mod "previously-used-wifi" connection.autoconnect no

Նախքան աշխատանքը ավարտված հայտարարելը, հաստատեք չորս բան՝ վերահասցեավորման թիրախը համընկնում է մալուխային հասցեի հետ, լսողը վերապրել է վերագործարկումը, դրսի հաճախորդը ավարտում է ձեռքսեղմումը, և Pi-ն վերագործարկումից հետո դեռ պատասխանում է մալուխային հասցեով։ Վերագործարկումը ամենաէժան միջոցն է բռնելու նշանակում, որը գոյություն ուներ միայն աշխատող միջուկում։ Եթե չորսից որևէ մեկը ձախողվի, նորից բարձրացրեք անլար պրոֆիլը sudo nmcli con up հրամանով և համեմատեք գրանցված արժեքները ակտիվների հետ։

Առնչվող հոդվածներ