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

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

გამოყავით ხელის ჩამორთმევა გადაგზავნილი ნაკადისგან

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

გაჩერდით მაშინვე, როცა შეამჩნევთ, რომ ხელის ჩამორთმევიდან მსჯელობთ. ის მხოლოდ საბოლოო წერტილის გზაზე მოწმობს.

წაიკითხეთ პოლიტიკის წესი და არა ნაგულისხმევი ცხრილი

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

ip rule show
ip route show table main
ip -4 route get 203.0.113.9 from 10.30.8.2

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

შეამოწმეთ ნიშანი და თარგმანი ერთად

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

nft list chain inet filter prerouting
conntrack -L -s 10.30.8.2 2>/dev/null | head
ip -s link show dev eth1

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

დააკვირდით, რომელი ინტერფეისი ატარებს პასუხს

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

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

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

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

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

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