Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

ความละเอียด DNS ผ่าน VPN ไม่ทำงานบน Windows 10

เซิร์ฟเวอร์ DNS และส่วนต่อท้ายที่กำหนดค่าสำหรับการเชื่อมต่อ VPN ถูกใช้ใน Windows 10 เพื่อแก้ไขชื่อโดยใช้ DNS ใน Force Tunneling โหมด (“ใช้เกตเวย์เริ่มต้นบนเครือข่ายระยะไกล ” เปิดใช้งานตัวเลือก) หากการเชื่อมต่อ VPN ของคุณเปิดใช้งานอยู่ ในกรณีนี้ คุณไม่สามารถแก้ไขชื่อ DNS ในเครือข่ายท้องถิ่นของคุณ หรือมีการเข้าถึงอินเทอร์เน็ตโดยใช้ LAN ภายในของคุณ

ในเวลาเดียวกัน คุณสามารถ ping ทรัพยากรใดๆ บน LAN ของคุณ (ลอง ping เกตเวย์ของคุณ คอมพิวเตอร์ที่อยู่ใกล้เคียง หรือที่อยู่ IP ของเครื่องพิมพ์) ใช้ได้เฉพาะตามที่อยู่ IP เท่านั้น แต่ไม่สามารถใช้ได้ตามชื่อโฮสต์ ความจริงก็คือ Windows 10 พยายามแก้ไขชื่อโฮสต์ในเครือข่ายท้องถิ่นของคุณผ่านเซิร์ฟเวอร์ DNS ที่ระบุในการตั้งค่าการเชื่อมต่อ VPN

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

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

คุณต้องเข้าใจว่า Windows ส่งแบบสอบถาม DNS จากอินเทอร์เฟซเครือข่ายซึ่งมีลำดับความสำคัญสูงสุด (ค่าที่ต่ำกว่าของตัวชี้วัดอินเทอร์เฟซ) ตัวอย่างเช่น การเชื่อมต่อ VPN ของคุณทำงานในโหมด Split Tunneling (คุณต้องการเข้าถึงอินเทอร์เน็ตจาก LAN และทรัพยากรขององค์กรของคุณผ่าน VPN)

ตรวจสอบค่าของเมตริกอินเทอร์เฟซเครือข่ายทั้งหมดจาก PowerShell:

Get-NetIPInterface | Sort-Object Interfacemetric

ความละเอียด DNS ผ่าน VPN ไม่ทำงานบน Windows 10

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

นอกจากนี้ ควรกล่าวถึงคุณลักษณะใหม่ของไคลเอ็นต์ DNS สำหรับ Windows 8.1 และ Windows 10 ที่นี่ การจำแนกชื่อแบบหลายบ้านอัจฉริยะ เพิ่ม (SMHNR) ในระบบปฏิบัติการเวอร์ชันเหล่านี้เพื่อให้ตอบสนองต่อคำขอ DNS ได้เร็วขึ้น ตามค่าเริ่มต้น SMHNR จะส่งคำขอ DNS พร้อมกันไปยังเซิร์ฟเวอร์ DNS ทั้งหมดที่ระบบรู้จัก และใช้การตอบกลับที่ได้รับก่อน (ส่งการสืบค้น LLMNR และ NetBT ด้วย) ไม่ปลอดภัยเนื่องจากเซิร์ฟเวอร์ DNS ภายนอก (ที่ระบุสำหรับการเชื่อมต่อ VPN ของคุณ) อาจเห็นการรับส่งข้อมูล DNS ของคุณ (การรั่วไหลของคำขอ DNS ของคุณ) คุณสามารถปิดการใช้งาน SMHNR ใน Windows 10 ผ่าน GPO:Computer Configuration -> Administrative Templates -> Network -> DNS Client-> ปิด Smart multi-homed name resolution =เปิดใช้งาน

ความละเอียด DNS ผ่าน VPN ไม่ทำงานบน Windows 10

หรือคุณสามารถปิดใช้งาน SMHNR โดยใช้คำสั่งต่อไปนี้ (ใน Windows 8.1):

Set-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient" -Name DisableSmartNameResolution -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name DisableParallelAandAAAA -Value 1 -Type DWord

ใน Windows 10 Creators Update (1709) และใหม่กว่า คำขอ DNS จะถูกส่งไปยังเซิร์ฟเวอร์ DNS ที่รู้จักทั้งหมดทีละตัว (ไม่ขนานกัน) คุณสามารถเพิ่มลำดับความสำคัญของ DNS เฉพาะได้หากคุณลดเมตริกลง

ดังนั้นการเปลี่ยนเมตริกอินเทอร์เฟซจึงทำให้คุณสามารถส่งคำขอ DNS ผ่านการเชื่อมต่อ (LAN หรือ VPN) โดยที่การจำแนกชื่อเป็นสิ่งสำคัญที่สุดสำหรับคุณ

ดังนั้น ยิ่งต่ำกว่าคือค่าของตัวชี้วัดอินเทอร์เฟซ ยิ่งสูงคือลำดับความสำคัญของการเชื่อมต่อ Windows กำหนดตัวชี้วัดของอินเทอร์เฟซ IPv4 โดยอัตโนมัติขึ้นอยู่กับความเร็วและประเภท ตัวอย่างเช่น การเชื่อมต่อ LAN ที่มีความเร็ว> 200 Mbit/s มีค่าเมตริกเท่ากับ 10 และการเชื่อมต่อ Wi-Fi ที่มีความเร็ว 50-80 Mbit/s มีค่า 50 (ดูตาราง  https:/ /support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-route)

คุณสามารถเปลี่ยนเมตริกอินเทอร์เฟซจาก Windows GUI, PowerShell หรือใช้ netsh คำสั่ง

ตัวอย่างเช่น คุณต้องการส่งคำขอ DNS ของคุณผ่านการเชื่อมต่อ VPN คุณต้องเพิ่มเมตริกของการเชื่อมต่อ LAN เพื่อให้ค่าเกิน 100 (ในตัวอย่างของฉัน)

ไปที่ แผงควบคุม -> เครือข่ายและอินเทอร์เน็ต -> การเชื่อมต่อเครือข่าย เปิดคุณสมบัติของการเชื่อมต่ออีเทอร์เน็ต เลือกคุณสมบัติ TCP/IPv4 และไปที่ การตั้งค่า TCP/IP ขั้นสูง แท็บ ยกเลิกการเลือกเมตริกอัตโนมัติ ตัวเลือกและเปลี่ยนเมตริกอินเทอร์เฟซเป็น 120 .

ความละเอียด DNS ผ่าน VPN ไม่ทำงานบน Windows 10

คุณสามารถทำเช่นเดียวกันโดยใช้คำสั่ง PowerShell ต่อไปนี้ (ใช้ดัชนีของอินเทอร์เฟซ LAN ของคุณที่คุณได้รับด้วย Get-NetIPInterface cmdlet):

Set-NetIPInterface -InterfaceIndex 11 -InterfaceMetric 120

หรือใช้ netsh (ระบุชื่อการเชื่อมต่อ LAN ของคุณ):

netsh int ip set interface interface="Ethernet0" metric=120

ในทำนองเดียวกัน คุณสามารถลดค่าเมตริกในคุณสมบัติของการเชื่อมต่อ VPN ได้

ความละเอียด DNS ผ่าน VPN ไม่ทำงานบน Windows 10

นอกจากนี้ คุณสามารถเปลี่ยนการตั้งค่าการเชื่อมต่อ VPN ของคุณโดยเปลี่ยนโหมดเป็น Split Tunneling และระบุส่วนต่อท้าย DNS สำหรับการเชื่อมต่อโดยใช้ PowerShell:

Get-VpnConnection
Set-VpnConnection -Name "VPN_work" -SplitTunneling $True
Set-VpnConnection -Name "VPN_work" -DnsSuffix yourdomainname.com