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

რა არის მოწყობილობა და რა არა

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

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

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

ააშენეთ ერთი სწორი თანმიმდევრობით

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

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

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'

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

შეინარჩუნეთ IKE და ESP გვირაბის მარშრუტის გარეთ

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

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

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

შეამოწმეთ მრიცხველები ორ ადგილას, სანამ დაშიფვრას დაადანაშაულებთ

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

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

ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sas

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

გადაწყვიტეთ, ვინ აყენებს მარშრუტებს

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

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

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

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