როგორ შევამოწმოთ, რას მარშრუტიზაციას უკეთებს VPN რეალურად Windows-ში PowerShell-ით
დაკავშირებული VPN ბარათი დაფარვას არ ამტკიცებს. წაიკითხეთ შენახული პროფილის დროშა, ცოცხალი მარშრუტების ცხრილი და NRPT წესები ამ თანმიმდევრობით.
Windows 11-ის ლეპტოპზე VPN კლიენტი დავაკავშირე, ბარათი Connected-ზე გადავიდა, შიდა ფაილის გაზიარება გაიხსნა, ხოლო საჯარო საიტი კვლავ პირდაპირ ოფისის Wi-Fi-დან იტვირთებოდა. ეს ნაზავი გატეხილ გვირაბს ჰგავს. სინამდვილეში ეს ნორმალური შედეგია პროფილისა, რომელიც ტრაფიკის ნაწილს VPN-ით აგზავნის, დანარჩენს კი ფიზიკურ ადაპტერზე ტოვებს. იძულებითი გვირაბიზაცია ცვლის, თუ რომელ ნაგულისხმევ მარშრუტს ანიჭებს Windows უპირატესობას; ის არ შლის უფრო კონკრეტულ მარშრუტებს და არ გვპირდება, რომ კავშირის გაწყვეტისას ტრაფიკი შეწყდება. შემდეგია თანმიმდევრობა, რომლითაც ვმუშაობ, როცა კლიენტი დაფარვას ამტკიცებს: კლიენტის მდგომარეობა, შენახული პროფილი, გამოყენებული მარშრუტები, ამომხსნელი, შემდეგ რეალური ნაკადები.
დაიწყეთ კლიენტით, შემდეგ შეწყვიტეთ მისი ნდობა
კლიენტი სწორი დასაწყისია მხოლოდ იმიტომ, რომ გეუბნებათ, რომელი პროფილია აქტიური. გახსენით კავშირის თვისებები და ჩაიწერეთ პროფილის ზუსტი სახელი, შექმნილია ის მიმდინარე მომხმარებლისთვის თუ მანქანის ყველასთვის, და რომელი ადაპტერი ჩნდება ncpa.cpl-ში დაკავშირების შემდეგ. ჩემს სატესტო ლეპტოპზე ადაპტერს პროფილის სახელი ერქვა, რაც მარშრუტების გამოსავლის კითხვას აადვილებდა. სხვა მანქანებზე ის WAN Miniport ჩანაწერად ჩანს და სახელი არაფერს გეუბნებათ.
რასაც კლიენტი ვერ გეტყვით, დაფარვაა. დაკავშირებული ბარათი აღწერს გვირაბის მდგომარეობას და არა დანიშნულებების ინვენტარს. მესამე მხარის კლიენტები საკუთარ კონფიგურაციასაც ინახავენ, ამიტომ შეიძლება Windows-ის მშობლიურ პროფილს და მისგან წაკითხულ ყველა თვისებას არაფერი ჰქონდეს საერთო იმასთან, რაც ამ კლიენტმა დააყენა. თუ VPN მოვიდა AnyConnect-ით, OpenVPN GUI-ით, WireGuard-ით ან მომწოდებლის აგენტით, ქვემოთ მოცემული PowerShell შემოწმებები ძირითადად არ ვრცელდება და ნაცვლად ამისა უნდა წაიკითხოთ იმ კლიენტის საკუთარი split-tunnel და მარშრუტიზაციის პარამეტრები.
წაიკითხეთ შენახული პროფილი და არა ბარათი
მშობლიური Windows პროფილისთვის (IKEv2, L2TP, SSTP ან MDM-ის მიერ გაგზავნილი) შენახული split-tunnel გადაწყვეტილება ერთი თვისებაა:
Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix
დაამატეთ -AllUserConnection, როცა პროფილი მოწყობილობის ყველასთვის შეიქმნა. ამის გარეშე კითხულობთ მიმდინარე მომხმარებლის სიას, რომელიც შეიძლება ცარიელი იყოს ან მსგავსი სახელის სხვა ჩანაწერი შეიცავდეს. მნიშვნელობა False SplitTunneling-ში ნიშნავს, რომ პროფილი სრულ გვირაბად შეინახა: Windows აყენებს ნაგულისხმევ მარშრუტს VPN ადაპტერის გავლით. True ნიშნავს split tunnel-ს და დაფარვა მაშინ მთლიანად დამოკიდებულია მარშრუტებსა და სახელების ამოხსნის წესებზე, რომლებსაც ეს პროფილი აგზავნის.
მოეპყარით ამ მნიშვნელობას, როგორც კონფიგურაციას და არა დაკვირვებას. ის აფიქსირებს, რა მოითხოვა პროფილმა დაკავშირებისას. Windows შეიძლება სხვა გამოყენებული მარშრუტებით დარჩეს, სხვა ინტერფეისის უფრო კონკრეტული მარშრუტის, პოლიტიკის პარამეტრის ან წინა კავშირიდან დარჩენილი ჩანაწერის გამო, ამიტომ ბულის მნიშვნელობა კითხვას მარტო ვერ წყვეტს.
შეადარეთ შენახული მნიშვნელობა გამოყენებულ მარშრუტების ცხრილს
დაკავშირების შემდეგ ჩამოთვალეთ მარშრუტები გვირაბის ადაპტერზე, ნაცვლად მთელი ცხრილის გადახვევისა:
$vpn = Get-NetAdapter | Where-Object InterfaceDescription -match 'VPN|WAN Miniport'
Get-NetRoute -InterfaceIndex $vpn.ifIndex | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.20.4.15 | Select-Object -First 1
Find-NetRoute სასარგებლო ნახევარია. ის პასუხობს კითხვას, რომელსაც კლიენტი არასოდეს პასუხობს: ამ დანიშნულებისთვის რომელ ინტერფეისს და რომელ წყაროს მისამართს გამოიყენებს Windows რეალურად? გაუშვით ის შიდა ჰოსტისთვის, საჯარო ჰოსტისთვის და ყველაფრისთვის, რაც გგონიათ განზრახ გამონაკლისად. სრული გვირაბის პროფილმა საჯარო მისამართისთვის უნდა აჩვენოს გვირაბის ინტერფეისი. split tunnel პროფილი ჩვეულებრივ იქ აჩვენებს ფიზიკურ ადაპტერს, სანამ შიდა პრეფიქსები კვლავ VPN-ში იხსნება.
ორი ხაფანგი ხსნის „არასწორი მიმართულებით მარშრუტიზაციის“ შეტყობინებების უმეტესობას. ყველაზე კონკრეტული პრეფიქსი ყოველთვის იმარჯვებს, ამიტომ ფიზიკურ ადაპტერზე /24 სძლევს VPN-ის ნაგულისხმევ მარშრუტს, რაც არ უნდა დაბალი იყოს გვირაბის მეტრიკა. მეტრიკა მხოლოდ ერთი და იმავე პრეფიქსის მარშრუტებს შორის წყვეტს თანასწორობას. ხოლო IPv4 და IPv6 ცალ-ცალკე წყდება: 0.0.0.0/0-ის დამფარავ პროფილს შეუძლია IPv6 ლოკალურ ბმულზე დატოვოს, რის გამოც ორმაგი სტეკის საიტი ნახევრად გვირაბიზებულად გამოიყურება. სანამ დაასკვნით, რომ გვირაბი რიგზეა, შეამოწმეთ Get-NetRoute -AddressFamily IPv6.
| What you see | Most likely cause | Check next |
|---|---|---|
| Public traffic leaves the physical adapter while SplitTunneling reads False | A more specific route on that adapter wins over the tunnel default | Find-NetRoute for the exact destination, then look for a /24 or host route on the physical interface |
| Internal name fails, internal IP works | No NRPT rule for that namespace, or a broader rule matches first | Get-DnsClientNrptPolicy and the namespace order |
| A dual-stack site opens directly while IPv4 uses the tunnel | The profile covers only the IPv4 default route | The IPv6 route table on both interfaces |
| Routes look right but one app still goes direct | The app uses its own proxy, or the client keeps a per-app list | The app's proxy settings and the client's application list |
სახელების ამოხსნა ცალკე შეამოწმეთ NRPT-ით
შიდა სახელები, რომლებიც ვარდება, მაშინ როცა შიდა IP მისამართები მუშაობს, მიუთითებს ამომხსნელის პოლიტიკაზე და არა მარშრუტიზაციაზე. Windows DNS-ს ყოველი სახელთა სივრცისთვის სახელების ამოხსნის პოლიტიკის ცხრილით წყვეტს, რომელიც დამოუკიდებელია მარშრუტების ცხრილისგან:
Get-DnsClientNrptPolicy -Effective | Select-Object Namespace, NameServers
Get-DnsClientServerAddress -InterfaceIndex $vpn.ifIndex
როცა წესი ემთხვევა *.corp.example-ს, ამ სახელთა სივრცის მოთხოვნები მიდის გვირაბის DNS სერვერებზე, თუნდაც split tunnel რეჟიმში ამ სერვერებამდე მონაცემთა გზა ფიზიკურ ადაპტერზე დარჩეს. ეს არის დიზაინი და ამიტომ საჯარო საიტის გამხსნელი ბრაუზერის ტესტი შიდა სახელებზე არაფერს გეუბნებათ. თუ ადაპტერი ჩამოთვლის მოსალოდნელ სერვერებს, მაგრამ ძებნა მაინც სხვაგან მიდის, შეადარეთ NRPT წესების რიგი და შეამოწმეთ, ხომ არ ემთხვევა პირველად უფრო კონკრეტული სახელთა სივრცე.
შეამოწმეთ ნაკადები, შემდეგ გადაწყვიტეთ, რა ითხოვეთ სინამდვილეში
გაიარეთ დანიშნულებები ფიქსირებული თანმიმდევრობით, რათა შედეგები მანქანებს შორის შედარებადი იყოს: საჯარო მისამართი, შიდა მისამართი, შიდა სახელი და ერთი განზრახ გამონაკლისი, მაგალითად ლოკალური პრინტერი ან ვიდეოზარი. ჩაიწერეთ ინტერფეისი და წყაროს მისამართი, რომელსაც Find-NetRoute აბრუნებს თითოეულისთვის. ნებისმიერი პოლიტიკის ცვლილების შემდეგ ხელახლა დაუკავშირდით და გაიმეორეთ იგივე ოთხი შემოწმება; ხელახალი დაკავშირების შემდეგ მარშრუტების ცხრილი ერთადერთი მტკიცებულებაა, რომ ახალი პროფილი ძალაში შევიდა.
შემდეგ გამოყავით მარშრუტიზაცია აღსრულებისგან. იძულებითი გვირაბიზაცია უპირატესობას ანიჭებს გვირაბს დაფარული ტრაფიკისთვის, სანამ ის ზემოთაა. ეს kill switch არ არის. თუ მოთხოვნაა, რომ გვირაბის ვარდნისას მანქანიდან არაფერი გავიდეს, ეს უნდა მოვიდეს ბლოკავი დიზაინიდან: გვირაბის მდგომარეობაზე მიბმული firewall პროფილი, ყოველთვის ჩართული პროფილი ტრაფიკის ფილტრებით ან მომწოდებლის კლიენტის საკუთარი წარუმატებლობისას დახურვის ოფცია. იძულებითმა გვირაბიზაციამ VPN სერვერის საკუთარი მისამართიც უნდა დატოვოს ხელმისაწვდომი გვირაბის გარეთ, და მისი დაბლოკვა „ყველაფრის იძულების“ სახელით საიმედო გზაა თავი ჩაკეტოთ იმ კავშირიდან, რომლის აღსრულებასაც ცდილობთ.
სანამ რამეს შეცვლით, გაიარეთ ეს სია. ყოველი წარუმატებელი პუნქტი ავიწროებს, სად არის ნამდვილი პრობლემა.
- პროფილის სახელი და ფარგლები დადასტურებულია,
-AllUserConnectionგამოყენებულია მანქანისმასშტაბური პროფილებისთვის. SplitTunnelingწაკითხულია და განხილულია როგორც კონფიგურაცია და არა დაფარვის მტკიცებულება.- გვირაბის ადაპტერის მარშრუტები ცალ-ცალკე ჩამოთვლილია IPv4-ისა და IPv6-ისთვის.
Find-NetRouteგაშვებულია ერთი საჯარო, ერთი შიდა და ერთი გამონაკლისი დანიშნულებისთვის.- NRPT წესები შემოწმებულია მანამ, სანამ მარშრუტებს სახელის წარუმატებლობაში დაადანაშაულებდეთ.
- ბლოკირების მოთხოვნა ხელახლა წაკითხულია: სასურველი მარშრუტიზაცია არ არის იგივე, რაც აღსრულებული ბლოკირება.
სრული თუ split გვირაბის გადაწყვეტილება პროფილის მფლობელს ეკუთვნის, და Microsoft-ის მარშრუტიზაციის შენიშვნები აღწერს იმ ქცევას, რომელსაც Windows ახორციელებს, როცა პროფილი ადგენს მას. Microsoft: იძულებითი და split გვირაბიზაცია არის ის ბმული, რომელსაც ღიად ვტოვებ გამოსავლის კითხვისას.