როგორ ჩავკეტოთ Linux-ის გასასვლელი, რომ VPN-ის ჩავარდნისას არაფერი გაიჟონოს
მარშრუტიზაცია და ფილტრაცია ცალკე გადაწყვეტილებებია. ჩაკეტეთ გასასვლელი კაუჭი, შემდეგ შეზღუდეთ ბოლო წერტილის, DNS-ისა და მართვის გამონაკლისები, რომლებიც გვირაბს ხელახლა დაკავშირებისთვის სჭირდება.
წარმოიდგინეთ მედია ყუთი სახლის ხაზზე, რომელიც ინტერნეტს მხოლოდ გვირაბის გავლით უნდა მიაღწიოს. როცა გვირაბი ვარდება, აპლიკაცია უნდა გაჩერდეს და არა ჩუმად გააგრძელოს ფიზიკური ინტერფეისით. ამ ქცევის მიღწევა firewall-ის და არა მარშრუტიზაციის პრობლემაა, და განსხვავება მნიშვნელოვანია, რადგან მარშრუტი შეიძლება შეიცვალოს დემონის გადატვირთვით, ხოლო ფილტრი რჩება იქ, სადაც დადეთ. შემდეგ ვნახავთ, როგორ წყვეტს სინამდვილეში პაკეტის გზა და შემდეგ როგორ შემოვზღუდოთ ის გამონაკლისები, რომლებიც გვირაბს ხელახლა დაკავშირებულს ინახავს.
ლოკალური გასასვლელი სხვა კაუჭია, ვიდრე გადაცემა
პაკეტი, რომელიც ტოვებს მანქანაზე მყოფ აპლიკაციას, გადის გასასვლელ კაუჭში; პაკეტი, რომელსაც მანქანა სხვა ჰოსტისთვის მარშრუტიზაციას უკეთებს, გადის გადაცემაში. პოლიტიკა, რომელიც მხოლოდ forward-ს ახსენებს, ზღუდავს მეორეს და პირველს სრულად ღიად ტოვებს, ამიტომ ბევრი გასასვლელი კეტი სწორად გამოიყურება და არაფერს აკეთებს. ინტერფეისის შედარება იმავე წესში შედის: oifname "tun0" accept გაატარებს ტრაფიკს, რომელიც უკვე გვირაბიდან არის მარშრუტიზებული. მარშრუტიზაცია და ფილტრაცია ასევე ცალკე გადაწყვეტილებებად რჩება, ამიტომ ზედა ხაზის მარშრუტი შეიძლება არსებობდეს, სანამ ფილტრი პაკეტს უარყოფს. სწორედ ამ განცალკევებას ეყრდნობით.
ჭიშკარს, რომელიც სხვა მოწყობილობებისთვის გადასცემს, ორივე კაუჭი სჭირდება. მხოლოდ გასასვლელის ჩაკეტვა იცავს თავად მანქანას და ქვედა დონის ყველა კლიენტს გაჟონვის თავისუფლებას უტოვებს.
გამონაკლისების სია დაწერეთ ბოლო წერტილიდან გარეთ
დაიწყეთ გვირაბის ბოლო წერტილიდან: ერთი დანიშნულების მისამართი ან მცირე დამტკიცებული ნაკრები, ტრანსპორტის პროტოკოლი და დანიშნულების პორტი, მაგალითად udp dport 1194 ip daddr 203.0.113.7 accept. თუ კლიენტი ჰოსტის სახელს წყვეტს, საწყის DNS გაცვლას საკუთარი წესი სჭირდება, შეზღუდული რეზოლვერითა და 53 პორტით და არა ფართო ნებართვა იმ რეზოლვერის მისამართზე. ყოველმა გამონაკლისმა უნდა დაასახელოს მისი არსებობის მიზეზი. ნებართვა მთელ UDP ტრაფიკზე VPN პორტისკენ ბევრად მეტს ფარავს, ვიდრე ის ერთი ავთენტიფიცირებული სერვისი, რომელიც მხედველობაში გქონდათ.
საწყისი ამოხსნა სწორედ ის ადგილია, სადაც კეტები ჩვეულებრივ ლპება. ტაიმერით განახლებად ნაკრებს განსაზღვრული ქცევა სჭირდება, როცა განახლება ვერ ხერხდება, და ეს ქცევა არ შეიძლება იყოს ხაზის გახსნა წარმატებამდე. განაახლეთ გვირაბის გავლით, სანამ გვირაბი დგას, სხვა შემთხვევაში დაუბრუნდით ბოლო ცნობილ ჯანსაღ ბოლო წერტილს.
ლოკალურ მართვას იგივე მოპყრობა სჭირდება. მართვის ქვექსელი სანდო არ არის მხოლოდ იმიტომ, რომ მისი მისამართები კერძოა, და წესი, რომელიც მას ენდობა, კეტის გარშემო მეორე გზას იწვევს.
ინტერფეისის შედარება ჯანსაღი გვირაბის დამტკიცება არ არის
წესები, რომლებიც იღებენ ყველაფერს, რაც tun0-დან გამოდის, ვარაუდობენ, რომ ამ ინტერფეისის პაკეტი გვირაბიდან მოვიდა. ინტერფეისების სახელები ხელახლა იქმნება, და სახელი კრიპტოგრაფიული იდენტობა არ არის. პარტნიორი შეიძლება წასული იყოს, სანამ ინტერფეისი ზემოთ რჩება, რაც წესს ძალიან დამაჯერებელ უმოქმედობად აქცევს.
კავშირების თვალყურის დევნება მსგავს ხაფანგს ამატებს. დამყარებული კავშირების ფართო წესი იმეორებს იმ ნებართვას, რომელიც ნაკადმა ადრე მიიღო, ამიტომ გვირაბის ვარდნამდე დაწყებული სესია შემდეგაც აგრძელებს მუშაობას. შეზღუდეთ მდგომარეობითი მიღება მხოლოდ იმ ინტერფეისებითა და მისამართებით, რომლებიც ნამდვილად გულისხმობთ, თორემ ააგეთ კეტი, რომელიც თავისით იხსნება. შესვლისა და გასვლის წესები სხვადასხვა კითხვას პასუხობს, და ერთის გამკაცრება მეორის იგნორირებით მანქანას ხელმისაწვდომს ტოვებს იმ მიმართულებით, რომელიც არ გაითვალისწინეთ.
რა გადაურჩება დემონის ავარიას
ფილტრი, რომელსაც ამონტაჟებს სკრიპტი, გვირაბის აწევის შემდეგ გაშვებული, ქრება გვირაბთან ერთად, ზუსტად იმ მომენტში, როცა საჭირო იყო. ჩატვირთეთ კეტი ჩატვირთვისას და დემონს მხოლოდ საკუთარი გამონაკლისების მართვა დაუტოვეთ.
ნაგულისხმევი მარშრუტის წაშლა ასევე შემცვლელი არ არის. მარშრუტი მდგომარეობაა, რომელსაც დემონი ფლობს და გადაწერს, და მისი მოცილება შეიძლება წაიღოს ხელახლა დაკავშირებისთვის საჭირო გზა. IPv6-ს საკუთარი გეგმა სჭირდება, რადგან მეზობლების აღმოჩენა და მარშრუტიზატორის განცხადებები ბმულის სერვისებია, რომლებიც უნდა გააგრძელონ მუშაობა, სანამ ჩვეულებრივი ტრაფიკი დაბლოკილია. DHCP იმავე კატეგორიაშია. ჩაწერეთ ესენი როგორც მიზნის მქონე გამონაკლისები, ნაცვლად იმისა, რომ მოგვიანებით შეფერხებებად აღმოაჩინოთ.
აღდგენის გზა განლაგებამდე
გამოსცადეთ კეტი ისე, როგორც ის ჩავარდება: ჩატვირთვა გვირაბის გარეშე, დემონის მოკვლა, ბოლო წერტილის შეცვლა და ხელახლა დაკავშირება. ყოველმა შემთხვევამ აპლიკაციები უნდა გააჩეროს და აღდგენის არხი მუშა დატოვოს. გააკეთეთ ეს კონსოლიდან, რადგან დისტანციური გარსი სწორედ ის სესიაა, რომელიც ყველაზე სავარაუდოდ თქვენივე წესით ჩაიკეტება.
შემდეგ შეამოწმეთ, სად შეიძლება ჯერ კიდევ მოხვდეს ჩვეულებრივი აპლიკაცია, უვნებელი დანიშნულებითა და შესამოწმებელი მოთხოვნით. სასურველი შედეგია უარი ხაზზე და წარმატება გვირაბით, და არა ორაზროვანი დროის ამოწურვა, რომელიც ორივეს ნიშნავდეს შეიძლება. წესების ნაკრები იმავე მფლობელის ქვეშ შეინახეთ, როგორც firewall-ის დანარჩენი ნაწილი, ნაცვლად მთელი ცხრილის shell სკრიპტიდან ჩანაცვლებისა. პოლიტიკა, სადაც ყოველ ნებართვას შეუძლია თავის გამართლება, უფრო ღირებულია, ვიდრე გრძელი წესების ნაკრები, რომელსაც ვერავინ ახსნის.