ორი VPN კლიენტი ერთ სამუშაო მაგიდაზე: რა ეჯახება და რა მუშაობს
ორი კლიენტი იბრძვის ნაგულისხმევი მარშრუტის, გადამწყვეტისა და ფილტრის დრაივერებისთვის. ჩაწერეთ, ვინ ფლობს გამოსავალს, შემდეგ გამოყავით მეორე გვირაბი VM-ით ან netns-ით.
თქვენი მეორე კლიენტი უკავშირდება, პირველის რესურსები წყვეტს გადაწყვეტას, და ბილეთში ნათქვამია, რომ სამუშაო VPN-მა პირადი გატეხა. არაფერი არ არის გატეხილი ხარვეზის მნიშვნელობით: ორივე კლიენტმა გააკეთა ის, რისთვისაც შეიქმნა, და მანქანას აქვს მხოლოდ ერთი მარშრუტიზაციის ცხრილი. შეჯახება ეხება ოთხ რესურსს, რომლებსაც თითოეული კლიენტი საკუთრად მიიჩნევს. გაიარეთ ისინი რიგით, და გამოსწორება ჩვეულებრივ ხდება დიზაინის არჩევანი და არა შეკეთება.
ნაბიჯი 1: გაარკვიეთ, რომელი კლიენტი ფლობს გამოსავალს
წაიკითხეთ მიმდინარე გამოსავლის გადაწყვეტილება, სანამ რამეს შეცვლით. საჯარო მისამართის მარშრუტის ძიება გეუბნებათ, რომელი ინტერფეისი და რომელი შემდეგი ნახტომი გამოიყენებდა პაკეტს ახლა, და ეს არის პასუხი იმაზე, ვინ მოიგო. შეადარეთ ის კლიენტების მიერ შექმნილ ინტერფეისების სახელებს, რომლებიც ჩვეულებრივ პროდუქტის ან პროტოკოლის სახელს ატარებს. თუ ძიება მიუთითებს გვირაბზე, რომელსაც არ ელოდით, შეჯახება უკვე იპოვეთ.
ip route get 1.1.1.1
ip route show default
route print
ზოგიერთი კლიენტი საერთოდ არ ცვლის ნაგულისხმევ მარშრუტს; ისინი ამატებენ ორ ნახევარს, ერთს მისამართების სივრცის ქვედა ნახევრისთვის და ერთს ზედა ნახევრისთვის, რომლებიც ერთად ფარავს ყველაფერს. ეს ტოვებს თავდაპირველ ნაგულისხმევ მარშრუტს ხილვადს და ხელით შეკეთებას სწორად აჩენს, მაშინ როცა ტრაფიკი კვლავ გვირაბიდან გადის. წაიკითხეთ მეტრიკა და პრეფიქსის სიგრძე, და არა მხოლოდ ნაგულისხმევი ჩანაწერის არსებობა.
შეჩერდით, თუ ორივე კლიენტი ითხოვს ერთსა და იმავე პრეფიქსს იმავე მეტრიკით. ბირთვი აირჩევს ერთს, და მეორე დაკავშირებულად გამოჩნდება, თუმცა არაფერს ატარებს.
ნაბიჯი 2: შეამოწმეთ გადამწყვეტი და გადაფარული პრეფიქსები
DNS მეორე შეჯახებაა და გამოიმუშავებს გამორჩეულ სიმპტომს: სახელები ვერ წყდება, მისამართები კი მუშაობს. თითოეული კლიენტი ახდენს თავისი გადამწყვეტის თავს მოხვევას, და შემდგომი მოთხოვნებისთვის ბოლო დამწერი იმარჯვებს. ჰკითხეთ გადამწყვეტ სამსახურს, რას იყენებს თითოეული კავშირისთვის, იმის ნაცვლად რომ წაიკითხოთ კლიენტის პარამეტრების გვერდი.
resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example
შემდეგ შეადარეთ პირადი პრეფიქსები, რომლებსაც ორი ქსელი იყენებს. თუ ორივე მხარე ერთი და იმავე დიაპაზონიდან ანაწილებს, ვერც ერთი კლიენტის მხრიდან მოწყობა ვერ გამოასწორებს, რადგან მანქანა ვერ იტყვის, რომელი 10.0.0.0/8 დანიშნულება რომელ გვირაბს ეკუთვნის. ერთი მხარე უნდა გადანომრდეს ან ითარგმნოს, და ეს ქსელის მფლობელებთან საუბარია და არა კონფიგურაციის ცვლილება. გადაფარვა ერთადერთი შეჯახებაა, სადაც პატიოსანი პასუხი ისაა, რომ დიზაინი უნდა შეიცვალოს.
შეჩერდით აქ, თუ პრეფიქსები გადაფარავს. ამ სიაში ყველა შემდგომი ითვალისწინებს, რომ ისინი არ გადაფარავს.
ნაბიჯი 3: აირჩიეთ გამიჯვნის შაბლონი, რომელიც ძლებს
საიმედო შაბლონები თავს არიდებს ორი კლიენტის ერთი მარშრუტიზაციის ცხრილის წინააღმდეგ მუშაობას. ერთი კლიენტი გაყოფილი გვირაბის პოლიტიკით, რომელიც ორივე პირად ქსელს აღწევს ყველაზე მარტივია, იმ პირობით, რომ დანიშნულებები არ გადაფარავს და პოლიტიკის მფლობელი თანახმაა. ვირტუალური მანქანა ან ქსელის სახელთა სივრცე შემდეგი ნაბიჯია, რადგან თითოეული იღებს საკუთარ ცხრილს და საკუთარ გადამწყვეტს.
sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/
სახელთა სივრცე იძლევა იგივე გამიჯვნას, რაც ვირტუალური მანქანა, მეორე ოპერაციული სისტემის გარეშე, მაგრამ აქვს უხეში კიდეები: გვირაბის მოწყობილობა უნდა გადავიდეს მასში, და აპლიკაცია უნდა გაეშვას მის შიგნით. ცალკე ფიზიკური მოწყობილობა ხშირად ყველაზე ნაკლებად გასაკვირი არჩევანია პირადი VPN-ისთვის მართული სამუშაო კლიენტის გვერდით. ერთი გვირაბის მეორეში ფენად დაწყობა გამიჯვნის შაბლონი არ არის; შიდა ბოლო წერტილი უნდა დარჩეს მისაწვდომი გარე გვირაბის მეშვეობით, და ეს წყობა ზემოდან ამატებს MTU-სა და შეყოვნების პრობლემებს.
აირჩიეთ ერთი შაბლონი და ჩაწერეთ რატომ. ერთი აპლიკაციისთვის სახელთა სივრცის და დანარჩენებისთვის გაყოფილი გვირაბის შერევა თავდაპირველ შეჯახებას უფრო რთულად გამართვადი ფორმით ხელახლა ქმნის.
ნაბიჯი 4: გადაამოწმეთ ორივე ქსელი ერთი სესიიდან
გამოსცადეთ ერთი რესურსი თითოეულ პირად ქსელში იმ გარემოდან, სადაც აპლიკაცია ნამდვილად მუშაობს, და არა თქვენი გარსიდან, თუ აპლიკაცია სახელთა სივრცეში მუშაობს. შეამოწმეთ გამოსავლის ინტერფეისი, გადაწყვეტილი მისამართი და პასუხის კოდი ერთად, რადგან სამიდან ერთში წარმატებამ შეიძლება დანარჩენებში მარცხი დამალოს. გაიმეორეთ გადატვირთვის შემდეგ, რადგან კლიენტების გაშვების რიგი წყვეტს, ვინ მოიგებს. სწორედ ეს რიგი ავიწყდებათ ხალხს ჩაწერა.
curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40
ჩაწერეთ კლიენტების ვერსიები, ინტერფეისები, გადამწყვეტის მდგომარეობა და თითოეული ქსელის პრეფიქსები. როცა კლიენტი განახლდება და ცვლის მარშრუტის ქცევას, ეს ჩანაწერი განსხვავებაა ხუთწუთიან გამოსწორებასა და ხელახლა აშენებას შორის. შემდეგი ადამიანი არ გაიზიარებს თქვენს მეხსიერებას იმის შესახებ, რომელი გვირაბი ავიდა პირველი.
სია სრულია, როცა შეგიძლიათ დაასახელოთ ნაგულისხმევ მარშრუტს მფლობელი ინტერფეისი, გადამწყვეტი, რომელსაც თითოეული სახელი იყენებს, მეორე გვირაბის გამომყოფი შაბლონი და გადატვირთვის შემდეგ თითოეულ ქსელზე ერთი მოთხოვნის შედეგი. ყველაფერი ნაკლები არის კონფიგურაცია, რომელიც დღეს შემთხვევით მუშაობს.