ორი VPN აპი ერთდროულად: რომელი kill switch რეალურად მოქმედებს?
მეორე VPN კლიენტი არასდროს მემკვიდრეობით იღებს პირველის kill switch-ს. რომელი პოლიტიკა მოქმედებს, სამი პირობა წყვეტს და როგორ შეამოწმოთ თქვენი.
ორი VPN კლიენტი შეიძლება გვერდიგვერდ მუშაობდეს, მაგრამ მათი kill switch-ები ერთ პოლიტიკად არ იშლება. თითოეული კლიენტი საკუთარი გვირაბისთვის აყენებს წესებს და არცერთმა არ იცის, რომ მეორე არსებობს. მე ამას შევხვდი, როცა ჯერ სამუშაო კლიენტი იყო დაკავშირებული: მეორე აპმა ხელის ჩამორთმევა ვერ დაასრულა, ათი წუთი „Connecting“-ზე გაჩერდა და პირველმა გვირაბმა ყველაფერი ჩუმად გადაიტანა. დაცული იქნება თუ არა მეორე აპი, სამ პირობაზეა დამოკიდებული და არა იმაზე, აჩვენებს თუ არა ორივე ხატულა დაკავშირებულს.
რაზეა kill switch რეალურად შემოფარგლული
ოპერაციულ სისტემაში ერთი kill switch დროშა არ არსებობს. კლიენტი, რომელიც ასეთს რეკლამირებს, აყენებს წესების ერთობლიობას: გადაყარე ყველაფერი, რაც ჩემი გვირაბიდან არ გადის და ხშირად fail closed მოიქეცი, როცა გვირაბი ქრება. Linux-ზე ეს ჩვეულებრივ nftables ან iptables ჯაჭვია, Windows-ზე Windows Filtering Platform ფილტრების ნაკრები, Android-სა და iOS-ზე თავად გვირაბის სერვისის მარშრუტიზაცია პლუს სისტემური პარამეტრი, რომელიც VPN-ის გარეშე კავშირებს ბლოკავს. Android VPN სახელმძღვანელო ამ სერვისის მოდელს აღწერს, თუ პლატფორმის ხედვა გაინტერესებთ.
ფარგლები მთავარი ნაწილია. წესს, როგორიცაა „დაუშვი მხოლოდ პაკეტები wg0 გამავალ ინტერფეისზე“, არ აინტერესებს, არსებობს თუ არა მეორე გვირაბი. თუ სხვა კლიენტი აამაღლებს wg1-ს, პირველი კლიენტის წესები ამ პაკეტებს ჩვეულებრივ ტრაფიკად მიიჩნევს: ჩვეულებრივ იშლება, ზოგჯერ ნებადართულია. ყოველ შემთხვევაში, გადაწყვეტს პირველი კლიენტი და წარმოდგენა არ აქვს, რომ მეორე აპი ელოდება.
სამი პირობა, რომელიც წყვეტს ვინ დაიფარება
ყველა კომბინაციის ჩამოთვლა საჭირო არ არის. სამი კითხვა ამას რამდენიმე წუთში წყვეტს.
- პლატფორმა საერთოდ უშვებს მეორე გვირაბს? Android ტელეფონებისა და iPhone-ების უმეტესობა მომხმარებლის პროფილზე მხოლოდ ერთ აქტიურ VPN სერვისს იღებს, ამიტომ მეორე აპს არასდროს აქვს გვირაბი და არაფერს აღასრულებს. თქვენ იღებთ ერთ პოლიტიკას: იმ აპისგან, რომელმაც ადგილი მოიგო.
- რომელ პროცესს ეკუთვნის ნაგულისხმევი მარშრუტი? Windows, macOS და Linux ორ გვირაბს ადვილად ატარებს. ნაგულისხმევი მარშრუტი ეკუთვნის იმ კლიენტს, რომელმაც ის ბოლოს ან უკეთესი მეტრიკით დააკონფიგურირა, მეორე კლიენტი კი დაკავშირებულია, მაგრამ უმოქმედო. Linux-ზე wg-quick-ის ნაგულისხმევი მარშრუტის რეჟიმი იყენებს პოლიტიკაზე დაფუძნებულ მარშრუტიზაციას კერძო ცხრილითა და fwmark წესით, ამიტომ მეორე wg-quick გვირაბი პირველის ჩანაცვლების ნაცვლად კონკურენტ წესს ამატებს.
- შეუძლია მეორე კლიენტს საკუთარ სერვერზე მიღწევა? თუ პირველი kill switch ნაგულისხმევად უარმყოფელია, მეორე აპის გარე საბოლოო წერტილი უბრალოდ კიდევ ერთი გადაყრილი სამიზნეა. ის ჩუმად ცდილობს ხელახლა და არასდროს იუწყება შეცდომას.
მოკლე ვერსია, მხარდაჭერის თემებისთვის:
| Setup | What you actually get |
|---|---|
| Second client cannot hold a tunnel | One active policy; the other app only reports that it is waiting |
| Both tunnels up, second took the default route | The first kill switch blocks traffic it never meant to touch; the connection dies, or leaks if its rules are broad |
| First kill switch allows only its own endpoint and interface | Second client never connects; first tunnel unaffected |
| Both up, DNS written by whichever client ran last | Name resolution breaks for one side when either tunnel drops |
ამ სტრიქონებიდან ორი სისტემური უჯრის ხატულიდან ერთნაირად გამოიყურება, ამიტომ ხატულა აქ ხელმისაწვდომი ყველაზე ცუდი მტკიცებულებაა.
რა ფუჭდება პირველი და როგორ გამოიყურება
კლიენტი, რომელიც „Connecting“-ზეა გაჭედილი, სანამ მეორე ჯანსაღია, თითქმის ყოველთვის საბოლოო წერტილის შიმშილია: მოქმედი kill switch მეორე კლიენტის ხელის ჩამორთმევას მისივე სერვერისკენ ისვრის. ეს იაფად დაადასტურეთ პირველი კლიენტის ბლოკირების წესების ერთი ცდით შეჩერებით. თუ მეორე მაშინვე უკავშირდება, კითხვა გადაწყვეტილია.
DNS მეორე უკმარისობაა. კლიენტები რეზოლვერის კონფიგურაციას საკუთარი ინტერფეისისთვის აყენებენ და ზოგიერთი უბრალოდ გადაწერს გლობალურ სიას. ორივე გვირაბის აწეული მდგომარეობით, მოთხოვნები შეიძლება ერთი მხრიდან გავიდეს, სანამ რეზოლვერი მეორეს ეკუთვნის. გათიშეთ რომელიმე აპი და გადარჩენილი მიუწვდომელ სახელების სერვერს ინახავს: გვერდები წუთით იყინება და შემდეგ კვლავ წყდება, VPN კი კვლავ დაკავშირებულს აჩვენებს.
მესამე მარშრუტების რყევაა. ხელახალი დაკავშირებები ნაგულისხმევ მარშრუტს გადაალაგებს და ინტერფეისზე მიბმული kill switch მას არ მიჰყვება. ტრაფიკი, რომელიც წამის წინ გვირაბში იყო, ახლა გადაყრის წესს ემთხვევა, რაც მომხმარებლის მხრიდან ისე იკითხება, თითქოს VPN შემთხვევით წყვეტს მუშაობას.
შეამოწმეთ რომელი პოლიტიკაა რეალურად ძალაში
ეს უვნებელი ტრაფიკით გააკეთეთ, არა იმით, რაც მოგენატრებათ.
Linux-ზე ჰკითხეთ ბირთვს ვინ იმარჯვებს და რაზე იკვრება ფაილვოლი. ip -4 route show default ასახელებს გვირაბს, რომელსაც გასასვლელი ეკუთვნის. ip rule show აჩვენებს, თამაშშია თუ არა პოლიტიკაზე დაფუძნებული მარშრუტიზაცია. sudo nft list ruleset | grep -n oifname აჩვენებს, ინტერფეისის სახელზე, ნიშანზე თუ მთელ გამავალ ჯაჭვზეა მიბმული გადაყრები.
Windows-ზე იგივე ისტორია მარშრუტის მეტრიკასა და ფილტრების სიაში ცხოვრობს: Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Sort-Object RouteMetric და Get-NetFirewallRule -Enabled True | Where-Object DisplayName -match "VPN". macOS-ზე netstat -rn -f inet | head -5 და scutil --dns | head -20.
შემდეგ გააკეთეთ ნაბიჯი, რომელსაც ხალხი გამოტოვებს: განზრახ გააჩერეთ გვირაბი და დაადასტურეთ, რომ ტრაფიკი, რომლის ჩავარდნასაც ელოდებით, ნამდვილად ვარდება. დაკავშირებული ხატულა ინტერფეისის მდგომარეობაა და არა აღსრულება.
როდის არის ორი კლიენტი არასწორი დიზაინი
თუ მეორე აპის უკან ერთადერთი მოთხოვნა მეტი დაცვაა, მოხსენით ის. ორი ურთიერთმოქმედი ბლოკირების პოლიტიკა ერთზე ნაკლებად პროგნოზირებადია და ყოველი ხელახალი დაკავშირება შანსია აღმოჩნდეთ მდგომარეობაში, რომელსაც არც ერთი მომწოდებელი არ ტესტავს.
თუ ნამდვილად გჭირდებათ ჯაჭვური დაკავშირება, მაგალითად კომერციული ნახტომით მიღწეული კორპორატიული კარიბჭე, აირჩიეთ დიზაინი ერთი აღსრულების წერტილით. ეს ჩვეულებრივ ნიშნავს როუტერს ან ერთ კლიენტს, რომელიც ჯაჭვს ეხმარება და არა ორ სამაგიდო აპს, რომლებიც ერთი ნაგულისხმევი მარშრუტისთვის იბრძვიან. მართულ მოწყობილობაზე შეინარჩუნეთ ნებადართული კლიენტი და დანარჩენი ყველაფერი ფარგლებს გარეთ მიიჩნიეთ, რასაც უჯრაში აჩვენებს.
შემოწმების სია სანამ ორივეს შეინარჩუნებთ
სია თანმიმდევრობით გაიარეთ; პირველი ჩავარდნილი პუნქტია გამოსასწორებელი.
- დაადასტურეთ, რომ ნაგულისხმევი მარშრუტი და რეზოლვერი ზუსტად ერთ კლიენტს ეკუთვნის.
- თუ გსურთ მეორე კლიენტი აწეული იყოს, ცალსახად დაუშვით მისი სერვერის საბოლოო წერტილი და ყოველი კლიენტის განახლების შემდეგ ხელახლა შეამოწმეთ.
- ჩაწერეთ მოსალოდნელი შედეგი, როცა რომელიმე გვირაბი ვარდება, და სწორედ ის შემთხვევა გამოსცადეთ.
- შეამოწმეთ მარცხის გზა გადატვირთვის შემდეგ, როცა გაშვების რიგი განსხვავებულია.
- მართულ პროფილზე გაჩერდით და სანამ რამეს დაამატებთ, მფლობელს ჰკითხეთ.
თუ მესამე ნაბიჯი ვარდება, პატიოსანი პასუხია, რომ მხოლოდ ერთი კლიენტი გაძლევთ პოლიტიკას. გადაწყვიტეთ რომელს ენდობით და გაუშვით მეორე.