Վերադառնալ
Ինքնահոսթինգ CGNAT-ի պայմաններում՝ VPS կամուրջ և WireGuard թունել
SiTech AI Team2 წთ. საკითხავი

Ինքնահոսթինգ CGNAT-ի պայմաններում՝ VPS կամուրջ և WireGuard թունել

IPv4 հասցեների պակասուրդի պատճառով օպերատորները մեկ հանրային հասցե են կիսում ամբողջ թաղամասերի միջև, և տանը պորտերի փոխանցումն այլևս չի աշխատում։ Հեղինակն առաջարկում է էժան VPS կամուրջ և WireGuard թունել։

Նախկինում տանը ծառայություններ գործարկելու համար բավական էր երթուղիչի վրա բացել պորտը և դինամիկ DNS-ը ուղղել հանրային հասցեին։ IPv4 հասցեների պակասուրդը փոխեց դա. օպերատորներն այժմ մեկ հանրային հասցե են կիսում ամբողջ թաղամասերի միջև և հարցումներն անցկացնում են իրենց ցանցի ներսում գտնվող NAT-ի երկրորդ շերտով՝ carrier-grade NAT (CGNAT): Երթուղիչի հասցեն մասնավոր է և դուրս գալիս փոխակերպվում է, ուստի հանրային հասցեն պատկանում է օպերատորին, և պորտերի փոխանցումն այլևս չի աշխատում։

Բլոգի գրառման մեջ Դևիդ Ալվարես Ռոսան պատմում է, թե ինչպես է այնուամենայնիվ ծառայությունները պահում տանը. դրանք աշխատում են Իսպանիայի հյուսիսում՝ մոր նկուղում գտնվող միջին դասի մեքենայի վրա, և ինտերնետ են դուրս գալիս Ֆրանսիայի տվյալների կենտրոնում կամուրջի դեր կատարող էժան VPS-ի միջոցով։

Կամուրջ, ոչ թե հոսթինգի մատակարար

Երկու մեքենաների միջև կապը երկկողմանի WireGuard թունելն է. այն բոլոր փաթեթները բոլոր պորտերով փոխանցում է կամրջից տան մեքենային և հակառակ ուղղությամբ։ Հիմնական առավելությունն այն է, որ թունելը նախաձեռնում է հենց տան մեքենան, ուստի տանը ստատիկ առանձնացված IP անհրաժեշտ չէ։ Իսպանական օպերատորից ստատիկ հասցե գնելը վավեր այլընտրանք է՝ ամսական մոտ 20 եվրոյով, իսկ կամրջի գինը լրացուցիչ 39 միլիվայրկյան RTT է։

Կոնֆիգուրացիա՝ DNAT, առանձին երթուղավորման աղյուսակ և իրական IP-ներ

Կամրջի կողմում wg0 ինտերֆեյսն ունի 10.0.0.1/24 հասցե և լսում է 51820 պորտը մեկ peer-ով՝ 10.0.0.2/32։ PostUp-ը iptables-ի միջոցով NAT-ի և փոխանցման կանոններ է սահմանում միջուկի մակարդակում, իսկ PostDown-ը հեռացնում է դրանք, երբ թունելն ընկնում է։ Առաջին երկու կանոնները բացառում են 2222 (SSH) և 51820 (հենց թունելը) պորտերը, մնացածը ողջ թրաֆիկը բոլոր պորտերով ուղղում է տան մեքենային։ Նպատակակետի հասցեն վերագրվում է, բայց աղբյուրինը՝ ոչ, այդպիսով տան մեքենան տեսնում է հաճախորդների իրական IP-ները։

Տան կողմում wg0-ն ունի 10.0.0.2/24 հասցե և Table = off. PostUp-ը 200 երթուղավորման աղյուսակում ավելացնում է լռելյայն երթուղի թունելի միջով և ip rule կանոն 10.0.0.2-ից եկող թրաֆիկի համար։ Այդպիսով պատասխանները վերադառնում են կամրջի միջով, իսկ տան մեքենայի սեփական թրաֆիկը մնում է տան երթուղիչի վրա։ Դրանից հետո ssh.alvarezrosa.com-ին 22 պորտով SSH-ը հասնում է տան մեքենային, իսկ 2222 պորտը՝ կամրջին։ Թունելը պահում են AllowedIPs 0.0.0.0/0 և PersistentKeepalive 25 կարգավորումները։

Ինչը կարող է ձախողվել

Երեք բաղադրիչ կարող են խափանվել։ Տան մեքենայի cron առաջադրանքը ստուգում է՝ արդյոք SSH-ը դեռ պատասխանում է, և եթե ոչ՝ վերագործարկում է մեքենան։ Եթե կամուրջը ձախողվի, հեղինակը խորհուրդ է տալիս պահուստային մուտքի կետ՝ օրինակ Cloudflare tunnel կամ ուղիղ դեպի տան մեքենան ուղղված Tailscale։ Թունելի կարճ ընդհատումն ինքնուրույն վերականգնվում է, իսկ ավելի երկար խափանումները ծածկվում են նախորդ երկու դեպքերով։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։