როგორ მივცეთ ერთ სატესტო LAN-ს საკუთარი WireGuard გასასვლელი
შეზღუდეთ ერთი LAN WireGuard გასასვლელზე გამოყოფილი მარშრუტიზაციის ცხრილითა და მიუწვდომელი მცველით, სანამ კარიბჭე ინარჩუნებს ჩვეულებრივ WAN ნაგულისხმევ მარშრუტს.
სამი დიზაინი ერთსა და იმავე ლაბორატორიულ პრობლემას წყვეტს: პატარა LAN უნდა გავიდეს WireGuard თანამოაზრის გავლით, სანამ თავად კარიბჭე ინარჩუნებს ჩვეულებრივ ზედა არხს. მაცდური მოკლე გზაა მარშრუტიზატორის ნაგულისხმევი მარშრუტის გვირაბში გადატანა, მაგრამ ეს ამტვრევს ყუთის საკუთარ მართვის გზას და ყველაფერს, რასაც ის გადასცემს. საინტერესო ვარიანტია პოლიტიკით მარშრუტიზაცია, შეზღუდული ერთი ინტერფეისითა და ერთი პრეფიქსით. აირჩიეთ მათ შორის სამი კითხვის პასუხით იმ მანქანაზე, რომელიც ნამდვილად გაქვთ.
გადაწყვიტეთ, სად ცხოვრობს გასასვლელი
პირველი კითხვა: გადასცემს ეს ჰოსტი სხვა რამესაც? გამოყოფილ ლაბორატორიულ კარიბჭეს შეუძლია იცხოვროს ნაგულისხმევად ყველაფრის უარმყოფი გადაცემის პოლიტიკით. საწარმოო მოვალეობების მქონე მარშრუტიზატორს არ შეუძლია, ხოლო კონკურენტული წესების ნაკრების მართულ ფაირვოლზე დადება ზუსტად ის გზაა, რომლითაც შეწყვეტები იგეგმება. მეორე: შეგიძლიათ ფლობდეთ ორ პოლიტიკის ობიექტს და მათ რიგს გადატვირთვებს შორის? მესამე: თქვენი თანამოაზრე ნებას რთავს თქვენი გვირაბის წყაროს მისამართს და გთავაზობთ ინტერნეტ გასასვლელს? თანამოაზრე, რომელიც მხოლოდ კერძო ქსელს ამჟღავნებს, სხვა პროდუქტია და ვერც ერთი ლოკალური მარშრუტიზაციის ცვლილება ვერ ასწორებს ამას. თუ რომელიმე პასუხი არაა, გასასვლელი სახელთა სივრცეში ან ერთჯერად ვირტუალურ მანქანაში მოათავსეთ.
სახელთა სივრცე ან VM მეხსიერება ღირს და სუფთა აფეთქების რადიუსს გაძლევთ. პოლიტიკით მარშრუტიზაცია ორი წესი ღირს და გიტოვებთ ერთ ყუთს გამართვისთვის.
აირჩიეთ გასასვლელი, რომელიც თქვენს წყაროს ნებას რთავს
ამ ლაბორატორიაში წარუმატებლობების უმეტესობა ხდება მანამ, სანამ ერთი ფაირვოლის წესიც კი არსებობს. გასასვლელის ოპერატორმა უნდა მიიღოს ის წყაროს მისამართი, რომელსაც თქვენი პაკეტები ტრანსლაციის შემდეგ ატარებენ, და ამ დიზაინში ეს გვირაბის მისამართია და არა LAN პრეფიქსი. ამიტომ შენიღბვა დიზაინის ნაწილია თავიდანვე და არა გვიანი დამატება.
დაადასტურეთ სამი რამ ოპერატორთან: თანამოაზრე ნებას რთავს თქვენი გვირაბის მისამართს, ის გადასცემს IPv4-ს და არ მთავრდება საკუთარ თავზე, და იყენებს გამავალ NAT-ს. პირველის გარეშე თქვენი პაკეტები აღწევს და ქრება. მესამის გარეშე ისინი კერძო წყაროთი გადიან და შემდეგ ნაბიჯზე იღუპებიან. შემდეგ შეამოწმეთ, რომ wg-quick არ აყენებს საკუთარ ნაგულისხმევ მარშრუტს, რასაც Table = off ხელს უშლის; ეს პარამეტრი თრგუნავს მარშრუტების შექმნას და არა თანამოაზრის AllowedIPs შემოწმებებს ან მის DNS დამუშავებას.
ორი პოლიტიკის ობიექტი ახორციელებს წარმართვას
წარმართვას ცხრილი და წესი სჭირდება. ცხრილი ორ მარშრუტს ინახავს: LAN პრეფიქსს LAN ინტერფეისიდან გარეთ და ნაგულისხმევს გვირაბიდან გარეთ. წესი ცხრილში აგზავნის იმ ტრაფიკს, რომელიც LAN ინტერფეისზე მოდის და ამ პრეფიქსს ატარებს. გამოიყენეთ iif სელექტორი წყაროს დამთხვევასთან ერთად, რადგან კარიბჭის საკუთარი WireGuard პაკეტები ლოკალურად წარმოიქმნება და არასოდეს ემთხვევა შემომავალ ინტერფეისს.
მცველი ძიებამდე მოდის და არა მის შემდეგ. ეს რიგი დიზაინის მთელი უსაფრთხოების თვისებაა.
მცველი მეორე წესია იმავე სელექტორზე, რომლის განაჩენი unreachable-ია. მიეცით მას უფრო მაღალი რიცხვითი პრიორიტეტი, რომ ძიებამ მაინც მოიგოს, სანამ გვირაბი აწეულია. როცა გვირაბის მარშრუტი ქრება, ძიება არაფერს აბრუნებს და მცველი აჩერებს ძებნას, ნაცვლად იმისა, რომ საშუალება მისცეს მას ჩავარდეს მთავარ ცხრილში არსებულ WAN ნაგულისხმევამდე.
ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0
დახურეთ უკანდახევის ნაპრალი, სანამ გახსნით
ჯერ მცველი დააყენეთ, შემდეგ ძიება. საპირისპიროდ კეთება ტოვებს წამების სიგრძის ფანჯარას, რომლის დროსაც სატესტო კლიენტის ტრაფიკმა შეიძლება ზედა არხს მიაღწიოს.
ფილტრი ასრულებს სურათს. forward კაუჭში მიიღეთ მიმართულება LAN-იდან გვირაბისკენ სატესტო პრეფიქსისთვის და დამკვიდრებული დაბრუნების მიმართულება, შემდეგ უარყავით დანარჩენი ყველაფერი; ამ პრეფიქსის NAT გვირაბის ინტერფეისზე postrouting-შია. სწორედ policy drop-ის გადაცემის ჯაჭვზე დატოვება აქცევს დაკარგულ მარშრუტს გაჟონვის ნაცვლად სიჩუმედ. საპირისპირო გზის ფილტრაციას გვირაბის ინტერფეისზე ფხვიერი რეჟიმი სჭირდება, რადგან დეკაპსულაციის შემდეგ მოსული საჯარო წყაროს საუკეთესო საპირისპირო მარშრუტი WAN მხარეს აქვს. Linux იღებს უფრო მაღალს all-ისა და ინტერფეისის მნიშვნელობებს შორის, ამიტომ გვირაბის ინტერფეისის დაყენება არ არის იგივე, რაც ყველგან ვალიდაციის შესუსტება.
დაამტკიცეთ ეს წარუმატებლობის შემთხვევით
ჰკითხეთ ბირთვს ზუსტი კითხვა, დაასახელეთ კლიენტის წყაროს მისამართი და ის ინტერფეისი, რომლითაც ის მოდის. ორივეს გარეშე ძიება სხვა კითხვას პასუხობს და ორივე შემთხვევაში სწორად გამოჩნდება. შემდეგ შეხედეთ ფაირვოლის მთვლელებს, თანამოაზრის გადაცემის მდგომარეობას და თავად კლიენტის სერვისს.
სწორად გამოსცადეთ მოცილება. შეაჩერეთ გვირაბი, წესი და ფილტრი ადგილზე დატოვებული: კლიენტი უნდა შეჩერდეს და კარიბჭის საკუთარი ტრაფიკი უნდა განაგრძოს მუშაობა. შემდეგ შეაჩერეთ თანამოაზრე ლოკალურ ინტერფეისზე ხელის შეუხებლად, და ეს არის ის შემთხვევა, რომელიც იჭერს მხოლოდ მარშრუტის არსებობაზე დაყრდნობილ დიზაინებს. ბოლოს გადატვირთეთ და კვლავ შეამოწმეთ წესების რიგი, რადგან მცველის მომხსნელი დაშლის კაუჭი მთელ დიზაინს მთავარ ცხრილს უბრუნებს. ჩაწერეთ ცხრილის ნომერი, პრიორიტეტები და ინტერფეისების სახელები ცვლილების ბილეთზე, რადგან შემდეგი ადამიანი, ვინც წესს დაამატებს, სწორედ ის დაამტვრევს ამას.