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

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

ორი გზა, რომლითაც ქსელს შეუძლია თქვენზე ზემოქმედება

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

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

expected:  app -> tunnel device -> encapsulation -> internet
observed:  app -> wlan0        -> plaintext     -> internet

საიდან შეიძლება მოვიდეს მარშრუტი გვირაბის არსებობამდე

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

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

IPv6 იმსახურებს ცალკე გავლას, რადგან როუტერის განცხადებები ნაგულისხმევ მარშრუტს სხვა კოდით ატარებენ, ვიდრე DHCPv4-ის ოფცია. ტესტი, რომელიც მხოლოდ v4 ცხრილს ამოწმებს, ამას არ ფარავს.

შეამოწმეთ გზა, რომელსაც ბირთვი რეალურად ირჩევს

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

ip route get 203.0.113.10
ip route show table all | grep -E '^(default|203\.0\.113)'
ip rule show
resolvectl query example.com

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

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

გადაწყვიტეთ, სად უნდა იცხოვროს აღსრულებამ

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

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

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

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