Pi-ն որպես VPN հաճախորդ՝ մեկ կառավարիչ, թե սեփական սկրիպտ:
Համեմատեք NetworkManager-ի պրոֆիլը ձեռքով գրված հաճախորդի սկրիպտի հետ Raspberry Pi-ի վրա՝ ներառյալ ամբողջական թունելը, DNS-ը, IPv6-ը և վարքը, երբ թունելն ընկնում է:
Raspberry Pi-ն, որին պետք է պաշտպանել միայն իր իսկ ելքային երթևեկությունը, ունի երկու իրատեսական ձևավորում՝ թողնել, որ ցանցի կառավարիչը տիրի թունելին, կամ պահել սկրիպտ, որը տիրում է դրան։ Երկուսն էլ կարող են կրել երթևեկություն։ Նրանք ձախողվում են տարբեր տեղերում, և այն խափանումը, որը կարող եք գիշերվա երկուսին հեռակա ախտորոշել, այն է, որն արժե ընտրել։ Համեմատեք նրանց ըստ սեփականության, ըստ այն բանի, թե ինչ է նշանակում ամբողջական թունել, երբ ներգրավված են IPv6-ը և DNS-ը, և ըստ այն բանի, թե ինչ է տեղի ունենում այն պահին, երբ թունելն ընկնում է։
Երկու տեր մեկ թունելի համար
Ձևավորում A-ն պրոֆիլ է համակարգի ցանցային կառավարչի ներսում՝ ներմուծված OpenVPN պրոֆիլ կամ բնիկ WireGuard միացում, որն ակտիվանում է բեռնման ժամանակ նույն ծառայության կողմից, որը բարձրացնում է Ethernet-ը և Wi-Fi-ը։ Ձևավորում B-ն ձեր սեփական միավորն է, որն ուղղակիորեն գործարկում է հաճախորդը, խմբագրում է լուծիչի կազմաձևը և տեղադրում իր երթուղիներն ու firewall-ի կանոնները։ Երկուսն էլ օրինական ձևավորումներ են, տարբերվում են նրանով, թե ում է թույլատրված փոխել երթուղային աղյուսակը։
Խափանումները տարբերվում են, որովհետև տերերը տարբերվում են։ A-ի դեպքում չակտիվացող պրոֆիլը թողնում է ինտերֆեյսը բարձրացված, իսկ թունելը՝ իջեցված, և կառավարչի մատյաններն ասում են, թե ինչու։ B-ի դեպքում կիսով չափ հաջողված սկրիպտը թողնում է երթուղիներ, որոնք վերապրում են դրանք ստեղծած գործընթացից։ Երկուսը միասին աշխատեցնելը վատագույն ելքն է՝ երկու գործընթաց գրում են լռելյայն երթուղին, երկու լուծիչի խմբագրում մրցում են բեռնման ժամանակ, և պտտման կարիք ունեն երկու գաղտնիքների հավաքածու։
Ընտրեք մեկ տեր յուրաքանչյուր թունելի համար և անջատեք մյուսը, նախքան որևէ բան փորձարկելը։ Երկու տեր նշանակում է նաև երկու տեղ, որտեղ նայել, երբ թունելը բարձրացված է, և ոչինչ չի լուծվում։ Այդ մեկ կանոնը կանխում է Pi VPN քննարկումներում նկարագրված շփոթեցնող վիճակների մեծ մասը։
Ինչ է ստեղծում ներմուծումը, և ինչ՝ ոչ
Raspberry Pi OS Bookworm-ում և ավելի նոր տարբերակներում ցանցի կազմաձևման լռելյայն գործիքը NetworkManager-ն է, ուստի պրոֆիլը հաճախորդի թունելի բնական տունն է։ Ներմուծումը պահանջում է համապատասխան հավելվածի տեղադրում, առանց դրա ներմուծումը ձախողվում է չաջակցվող միացման տեսակի մասին հաղորդագրությամբ, ինչը կանգ առնելու և հավելվածը տեղադրելու ազնիվ ազդանշանն է։
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
Ներմուծումը պահում է պրոֆիլ։ Այն չի ապացուցում, որ մյուս կողմը հասանելի է, և չի երաշխավորում, որ ֆայլի յուրաքանչյուր հրահանգ վերապրել է փոխակերպումը։ Կարդացեք ստացված միացումը և ստուգեք ինքնություն և վստահություն կրող մասերը՝ վկայականը, հեռավոր հոսթը և պորտը, և արդյոք գաղտնաբառը հարցվում է, թե պահվում։
--ask-ով ակտիվացումը գաղտնաբառային արտահայտությունը պահում է shell-ի պատմությունից դուրս համօգտագործվող մեքենայի վրա։ Առանց հսկողության Pi-ի համար ի վերջո կցանկանաք, որ պրոֆիլը բարձրանա բեռնման ժամանակ, ինչը առանձին որոշում է ձեռքով մեկ անգամ բարձրացնելուց։
Ամբողջական թունել՝ երկու ձևավորումների համեմատությամբ
Ամբողջական թունելը պնդում է երթուղիների մասին, ոչ մտադրության, և երկու ձևավորումներն այն արտահայտում են տարբեր կերպ։ Պրոֆիլի մոտեցումը խնդրում է կառավարչին տեղադրել լռելյայն երթուղի և իր լուծիչի կարգավորումները, սկրիպտի մոտեցումն անում է այն, ինչ ասում է սկրիպտը՝ ներառյալ ոչինչ։ Ոչ մի ձևավորում չի ծածկում IPv6-ը, եթե դա չասվի, և անձեռնմխելի IPv6 լռելյայն երթուղին ուրախությամբ կտանի երթևեկությունը թունելից դուրս, մինչ IPv4-ը կատարյալ տեսք ունի։
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
Երթուղու որոնման համար օգտագործեք փաստաթղթային հասցե և փոխարինեք այն հոսթով, որն ձեզ թույլատրված է ստուգել։ Առաջին հրամանը ցույց է տալիս, թե որ ինտերֆեյսը Pi-ն կօգտագործեր սովորական նպատակակետի համար, երկրորդը ցույց է տալիս, թե արդյոք IPv6 լռելյայն երթուղին դեռ գոյություն ունի, երրորդն ապացուցում է, թե որ լուծիչը պատասխանեց։ Կարդացեք բոլոր երեքը, նախքան ամբողջական թունելի մասին որևէ պնդման հավատալը։
Եթե մատակարարի հրահանգները խոստանում են ամբողջական թունել, բայց IPv6 լռելյայն երթուղին մնում է, Pi-ն արտահոսում է։ Անջատեք IPv6-ը վերին կապում կամ խնդրեք պրոֆիլին պահանջել այն, և որոշեք գիտակցաբար՝ փոխարենը ավելի ուշ հայտնաբերելու։
Բաց խափանում՝ փակի դեմ
Երբ թունելն ընկնում է, լռելյայն երթուղին կորցնող երթուղային աղյուսակը պարզապես վերադառնում է ֆիզիկական վերին կապին, և երթևեկությունը շարունակվում է բաց։ Դա բաց խափանում է, և դա երկու ձևավորումների լռելյայն վարքն է, եթե ինչ-որ բան չկանխի։ Մարդկանց մեծ մասը դա հայտնաբերում է շաբաթներ անց՝ կարդալով firewall-ի մատյանը։
Փակ խափանումը ձեզնից խլում է հեռակա հասանելիությունը, երբ թունելն իջեցված է, ուստի կառավարման ուղու համար գիտակցված բացառություն է պետք։ Մի ձև կանոն է, որը թույլ է տալիս միայն VPN գործընկերոջ հասցեն թունելից դուրս։
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
Համեմատեք գործառնական ծախսը ազնվորեն։ Պրոֆիլը սովորաբար չի կարող արտահայտել այս կանոնը, ուստի փակ խափանումը ձեզ մղում է սկրիպտի ձևավորմանը կամ փոքր միավորի, որը տեղադրում է կանոնը թունելից անկախ։ Ամեն դեպքում, մեկ շաբաթ գրանցեք մերժումները, լուռ մերժումը նույն տեսքն ունի, ինչ կոտրված ծառայությունը, և ձեզ պետք կգա հաշվիչը, երբ օգտատերը հայտնի, որ մի կայք դադարել է բեռնվել։
Ընտրություն առանց էկրանի Pi-ի համար
Եթե պատկերն արդեն գործարկում է NetworkManager-ը, թունելին ոչ մի էկզոտիկ բան պետք չէ, և ցանկանում եք, որ այն ինքնաշխատ հետևի վերին կապին, վերցրեք պրոֆիլը։ Եթե ձեզ պետք է քաղաքականության երթուղավորում, յուրաքանչյուր նպատակակետի համար ընտրվող մի քանի թունել, կամ փակ խափանման կանոն, որը պետք է գոյություն ունենա նախքան թունելը բարձրանալը, վերցրեք սկրիպտը և տիրեք դրա յուրաքանչյուր մասին՝ ներառյալ բեռնման կարգը և մաքրումը։ Երկու ձևավորումները խառնելը ավելի թանկ է, քան դրանցից ցանկացածը առանձին։
Նրանց միջև անցումը հիմնականում կարգի հարց է՝ անջատեք հին տիրոջը, հաստատեք, որ ոչ մի հնացած երթուղի կամ լուծիչի գրառում չի վերապրել, ապա միացրեք նորը և երկու անգամ վերագործարկեք։ Մեկ վերագործարկումը կարող է թաքցնել մրցավազք, որը բացահայտում է երկրորդը։ Ավարտեք՝ փորձարկելով Pi-ն, ոչ թե թունելը՝ լուծեք անուն, բերեք ինչ-որ բան IPv4-ով, բերեք IPv6-ով, եթե պահել եք այն, ապա գցեք թունելը և հաստատեք, որ ձեր ընտրած վարքն իսկապես տեղի է ունենում։ ip link-ում ինտերֆեյսը թեստի սկիզբն է, ոչ վերջը։