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

อ่านรหัสข้อผิดพลาดเป็นขั้นตอน ไม่ใช่คำตัดสิน

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

What the client saysStage that failedFirst thing to run
868, name did not resolveDNS, before any packet leaves for the serverResolve-DnsName vpn.example.net
721 or 806, remote computer did not respondOuter protocol filtered, typically GRE or UDPA capture on the local interface
809, server not respondingA device in the path is dropping the outer flowThe same capture, from a second network
789, security layer errorThe security exchange started and was rejectedCertificate and proposal settings on both ends

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

จงระวังอย่างเหมาะสมถ้าไคลเอนต์ไม่ใช่ Windows ไคลเอนต์ของบุคคลที่สามรวบส่วนใหญ่ของสิ่งนี้เป็น "เชื่อมต่อล้มเหลว" นั่นคือเหตุผลที่สองขั้นตอนถัดไปไม่พึ่งข้อความเลย

ตรวจสอบชื่อก่อนโทษอุโมงค์

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

Resolve-DnsName vpn.example.net -Type A
nslookup vpn.example.net 1.1.1.1
ipconfig /all | findstr /i "DNS Servers"

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

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

หาว่าแพ็กเก็ตภายนอกใดหายไป

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

pktmon filter remove
pktmon filter add -p 500 -t UDP
pktmon start --capture --pkt-size 128
pktmon stop
pktmon etl2txt PktMon.etl

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

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

เปลี่ยนทรานสปอร์ตหนึ่งอย่างแล้วทดสอบใหม่

เมื่อคุณรู้ว่าการไหลภายนอกถูกทิ้ง คำถามเชิงปฏิบัติคือเครือข่ายอนุญาตการไหลใด เครือข่ายที่จำกัดส่วนใหญ่อนุญาต TCP 443 ขาออกเพราะไม่อย่างนั้นพวกมันทำงานไม่ได้ ดังนั้นการย้ายตัวรับฟังไปที่นั่นจึงเป็นคำตอบปกติ บน OpenVPN นี่คือสวิตช์ฝั่งไคลเอนต์จนกว่าเซิร์ฟเวอร์จะถูกเปลี่ยน:

openvpn --config corp.ovpn --proto tcp-client --remote vpn.example.net 443 --verb 4

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

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

ตรวจสอบโปรไฟล์เดียวกันบนเครือข่ายที่สอง

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

pktmon filter add -p 443 -t TCP
pktmon start --capture
Get-VpnConnection -Name "Corp" | Select-Object ConnectionStatus, TunnelType, ServerAddress

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

จากนั้นเขียนสิ่งที่พบในที่ที่คนถัดไปจะดู "โปรไฟล์องค์กรต้องใช้ TCP 443 ที่ไซต์นี้ UDP 500 ถูกกรองโดยโรงแรม" เป็นประโยคที่เพื่อนร่วมงานลงมือทำได้ "VPN ไม่เสถียรในโรงแรม" ไม่ใช่ และมันรับประกันว่าชั่วโมงเดิมจะถูกใช้ไปอีกในเดือนหน้า

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