การหมดเวลาของ VPN หนึ่งครั้งพิสูจน์ว่าไม่มีคำตอบที่ใช้งานได้มาถึง และไม่ได้พิสูจน์อะไรเกี่ยวกับสาเหตุ โปรไฟล์อาจระบุพอร์ตผิด เซิร์ฟเวอร์อาจล่ม หรือคำขออาจมาถึงโดยไม่มีเส้นทางกลับที่ทำงานได้ แต่ละกรณีทิ้งร่องรอยต่างกัน และร่องรอยนั้นคือสิ่งที่บอกว่าต้องแตะกฎข้อใด ทำสี่ขั้นตอนด้านล่างตามลำดับ หยุดทันทีเมื่อขั้นตอนใดอธิบายอาการได้

ขั้นตอนที่ 1: ยืนยันเซิร์ฟเวอร์และการรับส่ง

อ่านชื่อเซิร์ฟเวอร์ การรับส่ง และพอร์ตจากโปรไฟล์ปัจจุบันของผู้ให้บริการ ไม่ใช่จากการแก้ไขในเครื่อง พอร์ตที่เปลี่ยนบนแล็ปท็อปของคุณไม่สามารถสร้างตัวรับฟังบนเซิร์ฟเวอร์สาธารณะได้ และความไม่ตรงกันนั้นให้ผลการหมดเวลาเหมือนกับการบล็อก หากโปรไฟล์มีการรับส่งทางเลือกที่รองรับ ให้บันทึกไว้เป็นทางเลือกสำรองไม่ใช่เป็นวิธีแก้ไข แปลงชื่อและเปรียบเทียบคำตอบกับที่อยู่ที่ผู้ให้บริการเผยแพร่

ระเบียน DNS ที่เก่าส่งไคลเอนต์ไปยังโฮสต์ที่ไม่เคยตอบสนอง นี่คือข้อบกพร่องอีกอย่างที่เลียนแบบตัวกรอง และการตัดออกใช้เพียงหนึ่งคำถาม

เขียนค่าทั้งสองลงในตั๋ว การเปรียบเทียบในภายหลังทุกครั้งใช้ค่าเหล่านี้ และตั๋วที่ไม่มีค่าเหล่านี้จะเริ่มการสอบสวนใหม่

ขั้นตอนที่ 2: พิสูจน์เส้นทางด้วยการเปรียบเทียบที่ควบคุมได้หนึ่งครั้ง

เก็บอุปกรณ์และโปรไฟล์ไว้ไม่เปลี่ยนแปลงและลองเครือข่ายการเข้าถึงที่เชื่อถือได้อื่น หากอุโมงค์ขึ้นที่นั่น ความแตกต่างคือเส้นทางเดิมหรือนโยบายของเส้นทางนั้น หากอุปกรณ์ที่อนุมัติเครื่องที่สองทำงานบนเครือข่ายเดิม ความแตกต่างคืออุปกรณ์เครื่องแรก หนึ่งในการเปรียบเทียบสองครั้งนี้แทบจะเป็นการชี้ขาดเสมอ

ทำการลงชื่อเข้าใช้เครือข่ายที่ถูกต้องให้เสร็จก่อน เพราะพอร์ทัลที่ดักจับดูเหมือนการบล็อกจนกว่าจะเสร็จ

ทดสอบพอร์ตที่คุณใช้จริง และถือผลลัพธ์ TCP เป็นข้อมูลเกี่ยวกับ TCP เท่านั้น

Resolve-DnsName vpn.corp.example
tracert -h 8 -w 500 vpn.corp.example
Test-NetConnection vpn.corp.example -Port 443 -InformationLevel Detailed

การจับมือ TCP ที่สำเร็จบนพอร์ต 443 หมายความว่ามีตัวรับฟังตอบที่นั้น ไม่ได้บอกอะไรเกี่ยวกับตัวรับฟัง UDP บน 51820 และไม่ได้บอกว่าการเจรจาเสร็จสมบูรณ์หรือไม่

ขั้นตอนที่ 3: อ่านเหตุการณ์ความปลอดภัย ณ เวลาที่ล้มเหลว

เหตุการณ์ไฟร์วอลล์เป็นหลักฐานที่แข็งแกร่งที่สุดที่มี และมีข้อควรระวังที่ควรกล่าวก่อน การบันทึกถูกปิดในโปรไฟล์เริ่มต้นหลายแบบ ดังนั้นตรวจสอบว่าโปรไฟล์ที่เกี่ยวข้องบันทึกการทิ้งหรือไม่ก่อนอ่านบันทึกว่างเป็นหลักฐานของความบริสุทธิ์ เมื่อเปิดการบันทึก เหตุการณ์ระบุกฎ ทิศทาง และที่อยู่ ซึ่งเป็นสิ่งที่การเปลี่ยนกฎต้องการพอดี กฎแอปพลิเคชันและกฎพอร์ตเป็นออบเจกต์แยกกัน และนโยบายที่จัดการอาจแทนที่การตั้งค่าในเครื่อง ยืนยันว่ากฎครอบคลุมไคลเอนต์ใดและบริการใดจริง

เก็บสถานะโปรไฟล์และเหตุการณ์ล่าสุดจากเครื่องที่ล้มเหลว ไม่ใช่จากโฮสต์ข้างเคียง

อ่านเวลาของเหตุการณ์เทียบกับเวลาที่คุณทดลอง เพราะชื่อกฎที่ตรงกันแต่เวลาต่างกันคือความบังเอิญ

Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, LogBlocked
Get-NetFirewallRule -Enabled True -Direction Outbound | Where-Object DisplayName -match 'VPN'
Get-WinEvent -LogName 'Microsoft-Windows-Windows Firewall With Advanced Security/Firewall' -MaxEvents 20

บนเซิร์ฟเวอร์ที่คุณดูแล ถามว่าคำขอไปถึงตัวรับฟังหรือไม่ แพ็กเก็ตที่มาถึงโดยไม่มีคำตอบคือปัญหาการส่งต่อหรือเส้นทางกลับ คำขอที่ไม่เคยปรากฏคือปัญหาการกรองหรือการกำหนดที่อยู่

ขั้นตอนที่ 4: ทดสอบการส่งต่อหลังจากอุโมงค์ขึ้นแล้ว

ไฟร์วอลล์สามารถอนุญาตเซสชันและยังปฏิเสธทุกสิ่งที่เซสชันต้องการเข้าถึง sysctl การส่งต่อ กฎ NAT และเส้นทางกลับล้วนอยู่หลังการพิสูจน์ตัวตน และการยกเว้นกว้างสำหรับพอร์ต VPN ไม่ได้แก้ไขสิ่งใดเลย ทดสอบปลายทางภายในหนึ่งแห่งและปลายทางอินเทอร์เน็ตหนึ่งแห่งแยกกัน เพราะมักล้มเหลวด้วยเหตุผลต่างกัน หากชื่อภายในล้มเหลวแต่ที่อยู่ทำงาน ให้ดู DNS ที่ถูกผลักก่อนกฎใด ๆ

เรียกใช้การตรวจสอบสามข้อด้านล่างบนเซิร์ฟเวอร์ขณะไคลเอนต์เชื่อมต่อและพยายามคำขอที่ล้มเหลว

ตัวนับบนอินเทอร์เฟซอุโมงค์คือประเด็น เพราะแสดงว่าแพ็กเก็ตเข้ามาและมีอะไรออกไปหรือไม่

sysctl net.ipv4.ip_forward
nft list ruleset | grep -n -E 'forward|masquerade'
tcpdump -ni tun0 -c 10

เมื่อแพ็กเก็ตมาถึงอุโมงค์และไม่มีอะไรออกไปยังปลายทาง ผู้ต้องสงสัยคือการส่งต่อหรือ NAT เมื่อไม่มีอะไรมาถึง เซสชันขึ้นแต่ไคลเอนต์ไม่ได้ส่ง และจุดที่ต้องดูคือตารางเส้นทางของไคลเอนต์

ตรวจสอบการแก้ไขและลบสิ่งที่ไม่ช่วย

หลังการแก้ไขที่ได้รับอนุมัติ ให้ทำการทดสอบเดิมที่ล้มเหลวซ้ำและบันทึกผลกับโปรไฟล์และอุปกรณ์เดิม จากนั้นลบข้อยกเว้นชั่วคราวใด ๆ ที่ไม่ได้เปลี่ยนผล เพราะข้อยกเว้นที่ไม่ใช้จะสะสมและแต่ละข้อคือการตัดสินใจที่ไม่มีใครจำได้ เก็บสิ่งที่เหลือให้แคบ: ปลายทางหนึ่ง พอร์ตหนึ่ง ทิศทางหนึ่ง ผู้รับผิดชอบหนึ่ง

เรียกใช้คำสั่งสามข้อเดิมอีกครั้งและเปรียบเทียบกับเอาต์พุตที่คุณบันทึกไว้ก่อนการเปลี่ยนแปลง

Test-NetConnection vpn.corp.example -Port 443 -InformationLevel Detailed
tracert -h 8 -w 500 vpn.corp.example
Get-NetFirewallRule -Enabled True | Where-Object DisplayName -match 'VPN' | Select-Object DisplayName, Action

เมื่อเครือข่ายเปรียบเทียบทำงาน เครือข่ายเดิมยังคงล้มเหลว และเหตุการณ์ยังว่างเปล่า ผู้ต้องสงสัยที่เหลือคือเส้นทางไม่ใช่โฮสต์ ส่งมอบให้เจ้าของเครือข่ายเป็นข้อความเฉพาะเจาะจง พร้อมแนบผลการเปรียบเทียบทั้งสอง การหยุดตรงนี้เป็นจุดที่ดีกว่าการปิดโปรไฟล์ไฟร์วอลล์

บทความที่เกี่ยวข้อง