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

ორი გზა იმის გადასაწყვეტად, რა შედის გვირაბში

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

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

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

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

პოლიტიკაზე დაფუძნებული: სელექტორი ხელშეკრულებაა

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

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

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

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

მარშრუტზე დაფუძნებული: ინტერფეისი ხელშეკრულებაა

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

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

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

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

სად იყოფა ეს ორი დიზაინი სინამდვილეში

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

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

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

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

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

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

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

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

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