ახალი კავშირები ახალ VPN გასასვლელზე, ძველი ნაკადები უცვლელად რჩება
დაგეგმილი გადინება მხოლოდ არაკლასიფიცირებულ ნაკადებს გადაადგილებს. შეადარეთ ის მარშრუტის შეცვლას და ნახეთ ნიშნები, ცხრილები და conntrack მდგომარეობა, რომლებიც მას ინარჩუნებს.
ორი ჯანსაღი VPN გასასვლელი, ერთი გრძელი ატვირთვა უკვე მიმდინარეობს, და მოთხოვნა, რომ შემდეგი კავშირი მეორე გვირაბს გამოიყენოს. ამის შესრულების ორი გზა არსებობს და მათგან მხოლოდ ერთია უსაფრთხო მოქმედ შესასვლელზე. ნაგულისხმევი მარშრუტის შეცვლა ყველა პაკეტს გადაადგილებს, მათ შორის ატვირთვის პაკეტებსაც. დაგეგმილი გადინება ცვლის არჩევანს ახალი კავშირებისთვის და თვალყურის დევნილ ნაკადებს იმ გზაზე ტოვებს, სადაც დაიწყეს.
გასასვლელის შეცვლის ორი გზა
მარშრუტის შეცვლა ერთი ბრძანებაა და წამებში შექცევადია, ამიტომ ინციდენტების დროს გამოიყენება. ის ასევე არაგამიმარჩევნელია: არსებული ატვირთვის პაკეტები უცებ სხვა გვირაბიდან გადიან, სხვა საჯარო წყაროს მისამართით და ცალკე თარგმანის მდგომარეობით.
თუ შორეული მხარე ნაკადებს წყაროს მისამართით ადევნებს თვალს, ატვირთვამ შეიძლება უბრალოდ შეწყვიტოს ამოცნობა. გადინება ამას თავს არიდებს გადაწყვეტილების ერთხელ მიღებით თითო კავშირზე და მისი შენახვით, ასე რომ ძველი ატვირთვა თავის გასასვლელს ინარჩუნებს დასრულებამდე. ეს არის მთელი სავარჯიშოს ღირებულება: შორეული მხარე ვერ ხედავს ცვლილებას, რომელიც უნდა განმარტოს. ის აგრძელებს პაკეტების მიღებას, რომლებიც ემთხვევა უკვე ნაცნობ კავშირს.
ფასი სირთულეა: ორი მარშრუტიზაციის ცხრილი, სწორ კაუჭზე მოქმედი კლასიფიკატორი და ნიშნები, რომლებიც უნდა შეუთანხმდეს მანქანაზე მათ გამომყენებელ ყველაფერს.
მიეცით თითოეულ გასასვლელს თავისი ცხრილი
დაჯავშნეთ მარშრუტიზაციის ცხრილი თითო გასასვლელზე და სხვადასხვა ნიშნის მნიშვნელობა ან ბიტი ორი არჩევანისთვის. თითოეულ ცხრილს სჭირდება თავისი როლის შესაბამისი მარშრუტები და არა მხოლოდ სახელი, და სჭირდება განზრახ წარუმატებლობის შედეგი დაკარგული შემთხვევისთვის. ცარიელი ცხრილი, რომელიც ჩუმად ვარდება მთავარ ცხრილში — ასე გადის ტრაფიკი გასასვლელიდან, რომელიც არავის აურჩევია.
ip rule add fwmark 0x10/0x10 table 101
ip rule add fwmark 0x20/0x20 table 102
ip route add default via 192.0.2.1 dev wg-a table 101
ip route add default via 198.51.100.1 dev wg-b table 102დაამატეთ blackhole მარშრუტი თითოეული ცხრილის ბოლოს, რათა დამთხვევის გარეშე ძებნა ხმამაღლა ჩავარდეს და არ გაიქცეს თქვენ მიერ არჩეულ ნაგულისხმევზე.
აირჩიეთ ერთხელ, პირველ პაკეტზე
დააკლასიფიცირეთ მას შემდეგ, რაც კავშირების თვალყურის დევნება არსებობს, და მნიშვნელოვანი მარშრუტის ძებნამდე. ახალი, არაკლასიფიცირებული LAN კავშირისთვის აირჩიეთ გასასვლელი და შეინახეთ ის კავშირის მდგომარეობაში. შემდგომ პაკეტებზე აღადგინეთ შენახული მნიშვნელობა პაკეტის ნიშანში, რომელსაც პოლიტიკური მარშრუტიზაცია კითხულობს.
დახვეწილი ნაწილი არის რას ნიშნავს ახალი. conntrack-ს ჯერ კიდევ შეუძლია NEW-ის შეტყობინება ადრეული პაკეტებისა და განმეორებითი გაგზავნებისთვის პასუხის დანახვამდე, ამიტომ მხოლოდ ამ მდგომარეობაზე დაფუძნებულმა კლასიფიკატორმა შეიძლება გადაწეროს უკვე მიღებული არჩევანი. სანამ მიანიჭებთ, შეამოწმეთ, რომ კავშირისთვის გასასვლელი არ არის შენახული.
nftables პაკეტისა და კავშირის ნიშნებს ცალ-ცალკე ინახავს, და მეტაინფორმაციის სახელმძღვანელო აღწერს მათ შორის აშკარა კოპირებას. კავშირის ნიშანი თავისთავად არ ხდება ის პაკეტის ნიშანი, რომელსაც თქვენი წესი ემთხვევა, და ეს არის ყველაზე გავრცელებული მიზეზი იმისა, რომ ყურადღებით დაწერილ კლასიფიკატორს ეფექტი არ აქვს.
შეზღუდეთ აღდგენა თქვენ მიერ გულისხმობილ მიმართულებასა და ტრაფიკზე. ინტერნეტ-გასასვლელის ნიშნის დაბრუნებულ პაკეტებზე გამოყენებამ შეიძლება პასუხები LAN-ის ნაცვლად გასასვლელისკენ გაგზავნოს, და სიმპტომია ცალმხრივი კავშირი, რომელიც firewall-ის პრობლემას ჰგავს. წაიკითხეთ პასუხის გზა სანამ firewall-ის წესს შეეხებით, რადგან პაკეტი მარშრუტიზდება, უბრალოდ არა უკან გამომგზავნისკენ.
გადინების ოთხი ფაზა
მოამზადეთ B A-ს შეხების გარეშე: მარშრუტიზაცია, გადაცემა, ავტორიზაცია, NAT და დაბრუნების გზა. დააინსტალირეთ მისი ცხრილი და არჩევის პოლიტიკა შესასვლელის არსებული კონფიგურაციის მეპატრონის მეშვეობით.
შეცვალეთ კლასიფიკატორი, რათა ახალმა, არაკლასიფიცირებულმა კავშირებმა აირჩიონ B, შენახული არჩევანის შენარჩუნებით. nftables-ის ატომური ტრანზაქცია თავიდან ირიდებს ფანჯარას, სადაც ძველი მდგომარეობა უნდა გაიწმინდოს.
დატოვეთ A ჩართული, სანამ მისი ნაკადები დასრულდება. მისი ინტერფეისი, ცხრილი, შორეული გასასვლელი და NAT რუკები ჯერ კიდევ ამ ნაკადების ნაწილია, და NAT წესის რედაქტირება ხელახლა არ აშენებს უკვე არსებულ კავშირებს.
გაიყვანეთ A ექსპლუატაციიდან, როცა გადინების პირობა შესრულებულია, შეფასებული კავშირების მდგომარეობითა და აპლიკაციის ქცევით და არა ერთი წყნარი ინტერვალით.
რასაც გადინება ვერ დაჰპირდება
ბრაუზერის მოთხოვნა ახალი ტრანსპორტული კავშირი არ არის; გაერთიანება მოთხოვნებს ძველზე აგრძელებს გაგზავნას. პირიქით, UDP ნაკადი შეიძლება დაბერდეს conntrack-იდან და მოგვიანებით პაკეტი თავიდან კლასიფიცირდება. გადინება თვალყურის დევნილ ნაკადებს მიჰყვება და არა აპლიკაციის წარმოდგენას სესიაზე.
თუ A ჩავარდა მისი ნაკადების დასრულებამდე, შენახული ნიშანი მათ არ იხსნის. ისინი B-ის გავლით ხელახლა უკავშირდებიან, ან საერთოდ არ უკავშირდებიან. დაგეგმილი გადინება ყიდულობს უწყვეტობას, სანამ საწყისი გზა ჯანსაღია; ეს არ არის მდგომარეობის რეპლიკაცია დამოუკიდებელ გასასვლელებს შორის.
შეამოწმეთ ორივე ნახევარი
დაიწყეთ ხანგრძლივი ნებადართული კავშირი ცვლილებამდე და ნამდვილად ახალი მის შემდეგ. დაადასტურეთ, რომელ გვირაბს იყენებს თითოეული და რომელ საჯარო წყაროს მისამართს ხედავს შორეული მხარე, შემდეგ შეამოწმეთ, რომ დაბრუნების ტრაფიკი ბრუნდება.
ნუ გაასუფთავებთ conntrack ცხრილს, რომ ახალი არჩევანი გამოჩნდეს. ეს ანადგურებს ზუსტად იმ მდგომარეობას, რომელიც გადინებამ უნდა შეინარჩუნოს, და კონტროლირებულ მიგრაციას წყვეტად აქცევს სუფთად მოჩვენებული ტესტით.