რატომ პასუხობს VPN კლიენტის უკან მდგარი სერვერი გვირაბის გავლით
შემომავალი კავშირები ფუჭდება, როცა პასუხები VPN-ის ნაგულისხმევ მარშრუტს მიჰყვება ჩამოსვლის გზის ნაცვლად. პოლიტიკური მარშრუტიზაცია ან წყაროს NAT აღადგენს დაბრუნების გზას.
შემომავალი კავშირები ჰოსტთან, რომელიც VPN კლიენტსაც უშვებს, ძალიან სპეციფიკურად ფუჭდება: ხელის ჩამორთმევა აღწევს, დემონი პასუხობს, და კლიენტი ვერაფერს იღებს უკან. პორტს არაფერი ბლოკავს. პასუხი გვირაბიდან გავიდა, რადგან გვირაბი ფლობს ნაგულისხმევ მარშრუტს და ბირთვი პასუხებს დანიშნულების მიხედვით მარშრუტიზებს და არა იმის მეხსიერებით, საიდან მოვიდა მოთხოვნა. სწორედ ეს ერთი გამოტოვება ხსნის ყველა შემდგომ სიმპტომს.
პასუხი მარშრუტიზდება და არ იმახსოვრება
VPN კლიენტი, რომელიც ნაგულისხმევ მარშრუტს აყენებს, ამატებს ჩანაწერს, რომელიც აღემატება LAN კარიბჭეს, ან მეტრიკით, ან სივრცის ორ უფრო კონკრეტულ ნახევრად გაყოფით. გამავალი პაკეტები ახლა გვირაბის ინტერფეისს ირჩევენ. ბირთვი არასდროს კითხულობს, საიდან მოვიდა თავდაპირველად ის პაკეტი, რომელზეც პასუხობს. ეს ერთი გამოტოვება ხსნის ყველა შემდგომ სიმპტომს.
წინსვლის მიმართულება დანიშნულების მიხედვით მარშრუტიზდება, უკანა მიმართულებაც. პასუხი მიმართულია საჯარო კლიენტზე, რომელსაც გვირაბი სიამოვნებით გადაიტანს. შორეული მხარე იღებს პაკეტს, რომლის წყაროც მას არ ეკუთვნის, ყრის მას, და საწყისი კლიენტი დროის ამოწურვამდე ელოდება.
მკაცრი უკუგზის ფილტრაციამ შეიძლება ჩამოაგდოს შემომავალი პაკეტი მანამ, სანამ დემონი წაიკითხავს. ჯერ ის მრიცხველი შეამოწმეთ, რადგან ფილტრის ჩამოგდება და მარშრუტიზაციის შეცდომა გარედან ერთნაირად გამოიყურება.
ip route show default sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter nft list ruleset | grep -A3 'hook forward'
პირველი ბრძანება აჩვენებს, რომელი ნაგულისხმევი მარშრუტი იმარჯვებს ახლა. მეორე იტყობინება, მოქმედებს მკაცრი ფილტრაცია გლობალურად თუ თითოეული ინტერფეისისთვის, ხოლო მესამე აჩვენებს გადაცემის ჯაჭვის ნებისმიერ წესს, რომელიც შეიძლება ჩართული იყოს.
დაბრუნების გზის შენარჩუნების სამი გზა
სერვისის დანიშნულების გვირაბიდან გამორიცხვა ყველაზე ვიწრო ვარიანტია. LAN კარიბჭისკენ მიმართული ჰოსტის მარშრუტი, პლუს დემონი, რომელიც ფიზიკურ მისამართზეა მიბმული და არა ყველა მისამართზე, იმ ერთ ნაკადს გვირაბის გარეთ ინახავს. ცვლილება ლოკალურია და ადვილად შექცევადი.
პოლიტიკური მარშრუტიზაცია ზოგადი პასუხია. წყაროს მისამართზე ან firewall-ის ნიშანზე დაფუძნებული წესი ირჩევს ცხრილს, რომლის ნაგულისხმევი WAN კარიბჭისკენ მიუთითებს, ხოლო ჰოსტის საკუთარი კავშირები გვირაბს აგრძელებს. შეინახეთ პრიორიტეტი ცხადი, რომ წესი მოგვიანებით არ დაჩრდილოს.
ip rule add from 203.0.113.25/32 table 100 priority 100 ip route add default via 192.0.2.1 dev eth0 table 100 ip route get 198.51.100.7 from 203.0.113.25
პირველი ორი ბრძანება აშენებს ალტერნატიულ გზას საჯარო მისამართიდან მომავალი პასუხებისთვის. მესამე ბირთვს ეკითხება, რომელ გზას გაივლიდა ზუსტად ის წყარო და დანიშნულება, და ასე ადასტურებთ, რომ წესს რაიმე ეფექტი აქვს.
წყაროს თარგმნა მესამე ვარიანტია და ერთადერთი, რომელიც უძლებს სერვისის წინ უკვე NAT-ის შემსრულებელ როუტერს. პასუხი უნდა დაბრუნდეს იმ როუტერთან, და WAN ინტერფეისზე ნიღბვა ამას აღწევს და კლიენტს სერვისის ჟურნალებს მალავს. დაკავშირების შემდეგ ნაგულისხმევი მარშრუტის ხელით შეცვლა დიაგნოსტიკაა, რადგან კლიენტი ცხრილს შემდეგ ხელახლა დაკავშირებისას გადაწერს.
როცა ყუთი LAN-ისთვისაც მარშრუტიზებს
იგივე მარცხი ერთი ნახტომით შორს ჩნდება, როცა ჰოსტი უკან მდგარი მოწყობილობებისთვის მარშრუტიზებს. შემომავალი კავშირი გადაეცემა შიდა მოწყობილობას, რომლის ერთადერთი დაბრუნების გზა გვირაბია, და პასუხი გარე კლიენტს პროვაიდერის მისამართიდან აღწევს. შიდა მოწყობილობა მთელი დროის განმავლობაში სწორად მუშაობს.
მაშინ კავშირების თვალთვალი ხედავს პასუხს ნაკადზე, რომელიც არასდროს ჩაუწერია, და ყრის მას. დანიშნულების თარგმნა შემომავალ კავშირს მოწყობილობამდე აწვდის, ხოლო წყაროს თარგმნა პასუხს ისე აჩვენებს, თითქოს თავად როუტერიდან მოდის.
პოლიტიკური მარშრუტი, რომელიც გადაცემულ პორტს WAN-ზე ინახავს, სანამ თავად როუტერის ტრაფიკი გვირაბს იყენებს, უფრო სუფთა ეკვივალენტია. წყაროს თარგმნის გარეშე პასუხი გარე კლიენტზეა მიმართული, და შიდა მოწყობილობას საერთოდ არ აქვს მარშრუტი ამ მისამართზე.
სამი გამოკვლევა, რომლებიც მიზეზებს ჰყოფს
ჩაატარეთ სამი გამოკვლევა: კავშირი ყუთში ინტერნეტიდან, კავშირი მისგან გარეთ საჯარო ჰოსტთან და სახელის ძიება. როცა პირველი ორი არ ეთანხმება, დაბრუნების გზაა დამნაშავე. როცა სახელები ორივე მიმართულებით ფუჭდება, ამომხსნელი სხვა ხარვეზია, რომელიც მხოლოდ გვირაბს იზიარებს.
ჯერ მარშრუტიზაციის საკითხი გაასწორეთ, შემდეგ სახელებს შეხედეთ. ორივეს შერევა ის გზაა, რომლითაც მომუშავე სერვერს გატეხილ ამომხსნელში ადანაშაულებენ.
ჩაწერეთ, რომელ ინტერფეისს ასახელებს გამონაკლისი, და კონფიგურაცია ვერსიების კონტროლქვეშ შეინახეთ. ინტერფეისის წინააღმდეგ დაწერილი წესი, რომელსაც განახლების შემდეგ გადაარქმევენ, დღეს გაივლის და შემდეგი გადატვირთვის შემდეგ ჩავარდება.