Meshnet, Docker და მათ შორის არსებული ნებართვა
ქსელის პირი, რომელიც გამოქვეყნებულ კონტეინერს აღწევს, გადის ჰოსტის ნებართვას და Docker-ის თარგმანს. განიხილეთ ორივე ცალ-ცალკე, თორემ არასწორ მოცულობას დაამტკიცებთ.
ორი URL შეიძლება ერთნაირად გამოიყურებოდეს პირის ბრაუზერიდან და სულ სხვადასხვა რამ ნიშნავდეს ქსელური დაცვისთვის. ერთი მიუთითებს სერვისზე, რომელიც თავად ჰოსტზე უსმენს. მეორე მიუთითებს ჰოსტის მისამართზე, რომლის პორტი კონტეინერის ქსელშია გამოქვეყნებული, სადაც თარგმანის ნაბიჯი კავშირს სხვა IP-ს გადასცემს. პირ-პირთან ქსელში, რომელიც ადგილობრივ ქსელზე წვდომას თითოეული პირის ნებართვით აკონტროლებს, ეს განსხვავება მთელი განხილვაა.
ნებართვა ჰოსტის საბოლოო წერტილს ეხება, თარგმანი Docker-ს ეხება, ხოლო შესვლა აპლიკაციას ეხება. სამი გადაწყვეტილება, სამი ადგილი საყურადღებო.
თვალი ადევნეთ დანიშნულებას გამოქვეყნების შემდეგ
აიღეთ Linux Docker ჰოსტი, რომელიც კონტეინერის 80 პორტს ჰოსტის 8080 პორტზე აქვეყნებს. პირი 8080-ზე ჰოსტის ქსელურ მისამართს უკავშირდება, ჰოსტი კავშირს იღებს და დანიშნულების თარგმანი მას კონტეინერის ხიდის მისამართისკენ გადაწერს, ჩვეულებრივ რაღაც 172.17.0.2-ის მსგავსს, 80 პორტზე.
როცა წესი ამ ნაკადს ამოწმებს, საინტერესო დანიშნულება კონტეინერია და არა ჰოსტი. პოლიტიკა, რომელიც მხოლოდ «ამ მანქანაზე არსებულ სერვისზე» მსჯელობს, არასწორ ობიექტზე მსჯელობს. მოთხოვნა ჰოსტზე დაეშვა, მაგრამ სხვაგან მიეწოდება.
ამიტომ ქსელის დოკუმენტაცია Docker კონტეინერებს იმ რესურსებს შორის ასახელებს, რომლებსაც Linux-ზე ადგილობრივი ქსელის ნებართვა მართავს. ნებართვა არ არის VPN-ის დაშვებულთა სიის ჩვეულებრივი ჩანაწერის სინონიმი და ეს ორი კონტროლი ერთმანეთს არ ცვლის. ერთი წყვეტს, შეუძლია თუ არა პირს საერთოდ ადგილობრივ რესურსებზე მისვლა; მეორე წყვეტს, რომელი დანიშნულებები გადააქვს გვირაბულ მარშრუტს.
გადაწყვიტეთ, რამდენ ადგილობრივ წვდომას იძლევა ნებართვა
პირისთვის ადგილობრივ ქსელზე წვდომის მიცემა ერთი კონტეინერის გადაწყვეტილება არ არის. მან შეიძლება გაამჟღავნოს სხვა გამოქვეყნებული სერვისები იმავე ჰოსტზე და უფრო შორსაც მიაღწიოს იმის მიხედვით, თუ როგორ გადასცემს ჰოსტი. გადახედეთ ფაქტობრივ მოცულობას ერთი დაფისთვის გადამრთველის დაჭერამდე.
შემდეგ ნახეთ, სად აქვეყნებს Docker პორტს. 0.0.0.0-ზე გამოქვეყნება ქმნის მსმენელს ჰოსტის ყველა მისამართზე, რაც შეიძლება ქსელური ჩანაწერის გვერდით ჩვეულებრივი LAN ჩანაწერიც დაამატოს. თუ მოთხოვნა მხოლოდ ქსელია, მიაბით გამოქვეყნება თქვენ მიერ განზრახულ კონკრეტულ მისამართს ან ინტერფეისს და უფრო ფართო მიბმას ცალკე აღმოჩენად მოეკიდეთ და არა როგორც მოხერხებულობას.
შეინარჩუნეთ ჰოსტის გადაცემის პოლიტიკა და აპლიკაციის საკუთარი ავთენტიფიკაცია საკმარისად ვიწრო სერვისისთვის. კერძო იერსახის URL არ არის წვდომის კონტროლი და კონტეინერი, რომელიც თავის ხიდურ ქსელში ყველა წყაროს ენდობა, არ არის დაცული იმით, რომ ქსელის პირი დამტკიცდა. აპლიკაციის ავთენტიფიკაცია მესამე გადაწყვეტილებაა და ერთადერთია, რომელმაც იცის, ვინ არის მომხმარებელი. ჰოსტის დონის ნებართვას ამ ცოდნის მიცემა არ შეუძლია.
შეამოწმეთ ნებართვა და არა მხოლოდ URL
დამტკიცებული პირიდან გახსენით ზუსტად ის სერვისი და დაადასტურეთ, რომ მუშაობს. შემდეგ სცადეთ დანიშნულება, რომელიც უარყოფილი უნდა დარჩეს, და დაადასტურეთ, რომ არ მუშაობს. მხოლოდ ბედნიერი გზის შემოწმება გეუბნებათ, რომ ნებართვა მიეცა; ის არ გეუბნებათ, რომ საზღვარი სწორედ იქ არის, სადაც ფიქრობთ.
ცალკე შეადარეთ ჰოსტისთვის დამახასიათებელი სერვისი. თუ მონაცემთა ბაზა ჰოსტზე უსმენს და დაფა კონტეინერში მუშაობს, ისინი ერთი და იმავე ნებართვის გავლით სხვადასხვა გზას გადიან და შეიძლება ჰოსტის გადაცემის პოლიტიკა მათ თანაბრად არ მართავდეს. ჩაწერეთ, რომელი რომელია, განხილვის ჩანაწერის დაწერამდე.
ნუ გაასუფთავებთ Docker-ის ცხრილებს ან ქსელის კლიენტის წესებს წვდომის «გადასაყენებლად». ორივე პროდუქტი საკუთარ პოლიტიკის ინტეგრაციას აყენებს და მისი წაშლა ქმნის ჰოსტს, რომელიც თითქოს მუშაობს, მაგრამ გვერდს უვლის იმ კონტროლებს, რომელთა შეფასებაც მოგთხოვეს. თუ წესი არასწორად გეჩვენებათ, წაიკითხეთ ის და შეცვალეთ სწორედ ის წესი. თუ ვერ ხსნით, რას აკეთებს წესი, ეს არის აღმოჩენა და არა მისი წაშლის მიზეზი.
დაწერეთ აღმოჩენა თავად სისტემის ტერმინებით
მთავარია ის განსხვავება, რომელსაც პროდუქტი რეალურად ახორციელებს და არა ის, რაც განხილვის შაბლონშია: ნებართვა ჰოსტის საბოლოო წერტილზე მისვლისთვის, ნებართვა მარშრუტიზებულ კერძო რესურსებზე მისვლისთვის და ნებართვა აპლიკაციის გამოყენებისთვის. პორტის გამოქვეყნება ამ სამ გადაწყვეტილებას ზუსტად იქ ტოვებს, სადაც იყო, და მიმომხილველი, რომელიც მათ ერთად მიიჩნევს, არასწორ მოცულობას დაამტკიცებს.
ერთსა და იმავე წინადადებაში მიუთითეთ ჰოსტის მისამართი, გამოქვეყნებული პორტი, კონტეინერის დანიშნულება და პირის ნებართვა. ამ წინადადების შემოწმება სხვას შეუძლია და სწორედ ეს ხდის მას აღმოჩენად და არა აზრად.