აქ სამი ტრანსპორტი ეწყობა ერთმანეთზე და თითოეულს საკუთარი ჩარჩო აქვს. VPN-ის დატვირთვა TLS სესიის შიგნით მოძრაობს, ეს TLS სესია loopback პორტისკენ TCP კავშირის შიგნით მოძრაობს, და ამ კავშირის ბაიტები SSH-ის შიგნით relay ჰოსტისკენ მოძრაობს, რომელიც VPN მსმენელისკენ ნამდვილ TCP კავშირს ხსნის. ამ განლაგებაში არაფერი ცვლის იმას, რასაც OpenVPN ავთენტიფიცირებს, და მასში არაფერი ხდის UDP მსმენელს TCP-ით ხელმისაწვდომს. დანარჩენი წაიკითხეთ როგორც ბაიტების გზის აღწერა, და არა როგორც ქსელური კონტროლის არიდების რეცეპტი.

რას გადააქვს რეალურად ლოკალურ გადაგზავნას

SSH კლიენტი ლოკალურ პორტზე უსმენს. როცა ლოკალური პროცესი უკავშირდება, კლიენტი ბაიტებს თავის დაშიფრულ არხში ალაგებს, და სერვერის მხარე ახალ TCP კავშირს ხსნის გადაგზავნის მოთხოვნაში დასახელებული დანიშნულებისკენ.

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

SSH სესიის დაწყება მხოლოდ იმას ამტკიცებს, რომ relay ხელმისაწვდომი და ავთენტიფიცირებულია. ის არაფერს ამბობს იმაზე, ჩართულია თუ არა შემდეგი მსმენელი, იღებს თუ არა კავშირს relay-სა და მსმენელს შორის არსებული firewall, ან მიიღებს თუ არა VPN თქვენს პროფილს.

მიმართეთ კლიენტი ლოკალურ მსმენელს

გამოცხადებული მაგალითი: relay-ს შეუძლია მიაღწიოს TCP მსმენელს gw.internal.example:443-ზე, და მაღალი ლოკალური პორტი ამ გზას მხოლოდ ამ მანქანისთვის ამჟღავნებს.

ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]

OpenSSH-ის სახელმძღვანელო ლოკალურ გადაგზავნას აღწერს როგორც TCP კავშირების ლოკალურად მიღებას და შემდეგი კავშირის შორეული მხრიდან გახსნას. მსმენელი loopback-ზე მიამაგრეთ და არა ყველა ინტერფეისზე, რადგან ქსელიდან ხელმისაწვდომი გადაგზავნა ღია relay-ია თქვენი სახელით. wildcard მიმაგრება პორტს ნებისმიერი სხვა ლოკალური ანგარიშისთვისაც ამჟღავნებს საერთო მანქანაზე.

შემდეგ VPN კლიენტი TCP რეჟიმში გადაიყვანეთ და 127.0.0.1:24011-ზე მიმართეთ. თუ პროფილი UDP-ს იყენებს, ეს დიზაინი ვერ დაეხმარება: გადაგზავნა ბაიტების ნაკადს გადააქვს და მასში datagram-ის გზა არ არის.

ორი ავთენტიფიკაცია ცალკე შეინახეთ

SSH relay ჰოსტს ავთენტიფიცირებს. OpenVPN კვლავ ავთენტიფიცირებს VPN თანამოსაუბრეს, და loopback დანიშნულება ამ მოთხოვნას არ ცვლის. სერტიფიკატის შემოწმებების გამორთვა იმიტომ, რომ სოკეტი ახლა localhost-ზე მიუთითებს, ამ დიზაინში ყველაზე ცუდი მოკლე გზაა. ის ტრანსპორტის შეთანხმებას ნდობის შეთანხმებად აქცევს, და მეორეს არავინ დაეთანხმა.

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

relay-ს მოეპყარით როგორც ნდობის ისტორიის მეორე მხარეს: მის ადმინისტრატორს შეუძლია კავშირების მეტამონაცემები ნახოს და გადაგზავნა გადაამისამართოს, თუ კონფიგურაცია შეიცვლება. განლაგებას სჭირდება როგორც relay-ის, ასევე VPN სერვისის მფლობელის თანხმობა, და არა მხოლოდ მისი, ვისაც დღეს სჭირდება.

არ ააგოთ მარყუჟი გვირაბის ქვეშ

მას შემდეგ, რაც VPN მარშრუტებს დააყენებს, მისი მატარებელი SSH კავშირი მაინც საჭიროებს relay-მდე გზას, რომელიც გვირაბში არ გადის. თუ ნაგულისხმევი მარშრუტი VPN-ზე გადადის და relay მხოლოდ იმავე გვირაბით არის ხელმისაწვდომი, ტრანსპორტი იშლება და VPN-იც მასთან მიდის. ჩავარდნა ჩამონგრეულ გვირაბს ჰგავს და არა მარშრუტიზაციის შეცდომას, ამიტომ მას არასწორად დიაგნოსტირებენ.

ჩვეულებრივი გამოსწორებაა host მარშრუტი relay-ის მისამართზე, რომელიც გვირაბის აწევამდე ფიზიკურ ინტერფეისზეა მიმაგრებული, პლუს შემოწმება, რომ მარშრუტი ხელახალ დაკავშირებას გადაურჩება. შეამოწმეთ ის relay-ის მისამართის მარშრუტის ძიებით და არა იმ დაშვებით, რომ თანმიმდევრობა სწორი იყო.

ასევე მოელიეთ, რომ ეს დასტა პირდაპირ კავშირზე ნელი და მყიფე იქნება, რადგან ახლა ორი დალაგებული ტრანსპორტი და კიდევ ერთი ბოლო წერტილია მოსავლელი. ეს ქსელური საზღვრის გადაკვეთის ხერხია და არა წარმადობის ტექნიკა.

დაასრულეთ და დახურეთ მსმენელი

შეწყვიტეთ SSH სესია, როცა გვირაბი აღარ არის საჭირო, და დაადასტურეთ, რომ ლოკალური პორტი გათავისუფლდა. დავიწყებული გადაგზავნა ავთენტიფიცირებულ გზას ღიად ტოვებს მანქანაზე, რომელიც შეიძლება გაზიარებული იყოს.

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

დაკავშირებული სტატიები