უკან დაბრუნება
საკუთარი სერვისების ჰოსტინგი CGNAT-ის პირობებში: VPS-ხიდი და WireGuard გვირაბი
SiTech AI Team2 წთ. საკითხავი

საკუთარი სერვისების ჰოსტინგი CGNAT-ის პირობებში: VPS-ხიდი და WireGuard გვირაბი

IPv4 მისამართების დეფიციტმა ოპერატორებს ერთი საჯარო მისამართის გაზიარება აიძულა და პორტების გადამისამართება უქმნა — ბლოგპოსტში აღწერილია გამოსავალი: იაფი VPS-ხიდი და WireGuard-ის გვირაბი.

სახლის როუტერზე პორტის გახსნა და დინამიური DNS-ის საჯარო მისამართზე მიბმა ადრე საკმარისი იყო იმისთვის, რომ სერვისები სახლიდან გაშვებულიყო. IPv4 მისამართების დეფიციტმა ეს შეცვალა: ოპერატორები ახლა ერთ საჯარო მისამართს მთელ უბნებს უზიარებენ და მოთხოვნებს თავიანთ ქსელში არსებული დამატებითი NAT ფენის — carrier-grade NAT-ის (CGNAT) — გავლით გადააქვთ. როუტერის მისამართი პირადია და გარეთ გასვლისას გარდაიქმნება, ამიტომ საჯარო მისამართი ოპერატორს ეკუთვნის და პორტების გადამისამართება აღარ მუშაობს.

დევიდ ალვარეს როსა ბლოგპოსტში აღწერს, როგორ აგრძელებს სერვისების საკუთარ სახლში ჰოსტინგს: ისინი მუშაობს საშუალო კლასის მანქანაზე ჩრდილოეთ ესპანეთში, დედის სარდაფში, და ინტერნეტთან დაკავშირებულია იაფი VPS-ის მეშვეობით, რომელიც საფრანგეთის მონაცემთა ცენტრში ხიდის როლს ასრულებს.

ხიდი, არა ჰოსტინგის პროვაიდერი

ორ მანქანას შორის კავშირი ორმხრივი WireGuard-ის გვირაბია: ის ყველა პაკეტს ყველა პორტზე გადასცემს ხიდიდან სახლის მანქანისკენ და პირიქით. მთავარი უპირატესობა ისაა, რომ გვირაბს სწორედ სახლის მანქანა იწყებს, ამიტომ სახლში სტატიკური გამოყოფილი IP აღარ არის საჭირო. სტატიკური 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-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.