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

წესები ირჩევს ცხრილს, შემდეგ ცხრილი ირჩევს მარშრუტს

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

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

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

წაიკითხეთ წესების ნაკრები როგორც მიმდევრობა, და არა როგორც სია

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

ip rule show
ip route show table all | sed -n '1,60p'
ip route get 198.51.100.20 from 10.8.0.2
ip route get 198.51.100.20 from 10.8.0.2 mark 0x1

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

ნიშნები და სოკეტები: ორი გზა, რომლითაც კლიენტები ტრაფიკს ყოფენ

ზოგი კლიენტი პაკეტებს firewall-ში ნიშნავს და ამატებს წესს, რომელიც ნიშანს ემთხვევა. სხვები იყენებენ მარშრუტიზაციას სოკეტის დონეზე და მარშრუტს სოკეტზე აყენებენ სანამ ის დაუკავშირდება. პირველი ჩანს ip rule-ში; მეორე არა, და ის ზოგად ძიებაში არ გამოჩნდება.

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

თვალყური ადევნეთ მფლობელობას კიდევ ერთი წესის დამატებამდე

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

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

დაამტკიცეთ მოცულობა ორი ნაკადით, და არა ერთით

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

ip route get 198.51.100.20 from 192.0.2.44
ip route get 198.51.100.21 from 192.0.2.44
tcpdump -ni any host 198.51.100.21 and port 443

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

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

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