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

สามความล้มเหลวสวมข้อผิดพลาดเดียวกัน

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

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

SymptomLayer to inspect
IP works, hostname times outDNS or subnet overlap
TCP 445 opens, logon refusedSMB signing policy
Hangs after reconnectSession state and timers

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

แปลงชื่อก่อนแตะต้องแชร์

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

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

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

> ipconfig /all | findstr /i "DNS Servers"
> nslookup files.corp.internal
Server: 10.90.0.2
Address: 10.90.0.2
Name: files.corp.internal
Address: 10.90.0.15

ถ้าการค้นหานั้นคืนที่อยู่ที่คาดไว้ การแปลงชื่อก็จบ และปัญหาอยู่สูงขึ้นไปในสแตก

อ่านข้อกำหนดลายเซ็นทั้งสองฝั่ง

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

คุณอ่านการตั้งค่าไคลเอนต์ได้โดยไม่ต้องค้นในตัวแก้ไขนโยบาย:

> Get-SmbClientConfiguration | Select-Object RequireSecuritySignature
RequireSecuritySignature
-------------------------
True
> Get-SmbConnection

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

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

ล้างเซสชันเก่าก่อนปรับตัวจับเวลา

แชร์ที่ค้างเฉพาะหลัง VPN หลุดและเชื่อมต่อใหม่มักถือเซสชันที่เซิร์ฟเวอร์ทิ้งไปแล้ว เซิร์ฟเวอร์ปิดเซสชัน SMB ที่ไม่ได้ใช้งานตามตัวจับเวลา Autodisconnect ใต้ LanmanServer\Parameters ซึ่งโดยค่าเริ่มต้นคือ 15 นาที ขณะที่ไคลเอนต์มี SessTimeout ของตัวเองใต้ LanmanWorkstation\Parameters การขาดช่วงที่นานกว่าค่าเหล่านั้นทำให้แต่ละฝั่งมีภาพเซสชันต่างกัน

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

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

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

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