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

მიჰყევით ერთ პაკეტს კლიენტიდან პროცესამდე, სანამ ავთენტიფიკაციაში რამეს შეცვლით.

სამი რიცხვი, ერთი კავშირი

ეს სამი რიცხვია დისტანციური დანიშნულება, რომელსაც კლიენტი იყენებს, ჰოსტზე გამოქვეყნებული რუკა და კონტეინერის შიგნით მდებარე მსმენელი. ისინი არ უნდა იყოს ტოლი, მაგრამ უნდა ქმნიდნენ ჯაჭვს. ტოლი რიცხვები განსაკუთრებული შემთხვევაა, რომელიც შემთხვევით ყველაზე გავრცელებულია, ამიტომ შეუსაბამობა ადვილია ერთხელ დაწერო და რთული მოგვიანებით დაინახო.

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

LocationExample
Remote client destinationHost address, UDP 1194
Published mappingHost UDP 1194 to container UDP 1195
Container listenerOpenVPN on UDP 1195

რას ამბობს სინამდვილეში მოკლე სინტაქსი

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

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

ports:
  - 1194:1195/udp

სად შეიძლება გაჩერდეს პაკეტი

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

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

მიბმის მისამართები განსაზღვრავენ ხელმისაწვდომობას

loopback-ზე მიბმული გამოქვეყნებული რუკა ხელმისაწვდომია მხოლოდ ჰოსტიდან, ხოლო ყველა ინტერფეისზე მიბმული — ყველგან, სადაც ცეცხლის კედელი დაუშვებს. ორივე ერთნაირად გამოიყურება Compose ფაილში, რომელიც მისამართს გამოტოვებს, და Docker-ის ნაგულისხმევი ფართოა.

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

წაიკითხეთ გაშვებული მდგომარეობა

შეამოწმეთ გაშვებული კონტეინერის ფაქტობრივი რუკა და მსმენელი მის ქსელურ სახელთა სივრცეში. Compose ფაილი შეიძლება შეცვლილი იყოს კონტეინერის გაშვების შემდეგ, იმიჯის მეტამონაცემებმა შეიძლება გამოაცხადოს პორტი გამოქვეყნების გარეშე, და მეორე კონტეინერმა შეიძლება უკვე დაიკავოს ჰოსტის პორტი. იმიჯში პორტის გამოცხადება არ არის მისი გამოქვეყნება, და არც ერთი მათგანი არ არის იგივე, რაც მოსმენა.

სამი სხვადასხვა მდგომარეობა, სამი სხვადასხვა ბრძანება, და მხოლოდ უკანასკნელი ეხება OpenVPN-ს.

როცა რუკა სწორია

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

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

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