ภารกิจของผมคือสร้างหลาย IP subnet ภายในและกำหนดค่า Routing ระหว่างพวกเขาบน Hyper-V stand-alone ของผม โดยค่าเริ่มต้น Hyper-V ไม่ได้ทำ routing ระหว่างเครือข่ายบน virtual switches ดังนั้นเพื่อแก้ปัญหาแบบนี้ คุณต้องสร้างเครื่องเสมือนที่มีอินเทอร์เฟซเครือข่าย 2 ตัวบน Hyper-V switches ที่ต่างกัน (ในเครือข่ายที่ต่างกัน) และกำหนดค่า routing ระหว่างอินเทอร์เฟซโดยใช้ซอฟต์แวร์ Guest OS (อาจเป็น VM ที่รัน Windows Server ด้วยบทบาท RRAS หรือโฮสต์ Linux พร้อมตาราง Routing เฉพาะ) วิธีนี้ไม่ค่อยสะดวก เพราะคุณต้องรัน VM แยกต่างหากเพื่อวัตถุประสงค์ Routing เท่านั้น และเมื่อเพิ่ม IP subnet ใหม่ คุณจะต้องกำหนดค่าตาราง Routing บน VM เพิ่มเติมของคุณใหม่ อย่างไรก็ตาม ผมสามารถค้นพบวิธีกำหนดค่า Hyper-V host ให้ทำงานเป็น Router ระหว่าง virtual switches/เครือข่าย/IP subnet ที่ต่างกันได้
ดังนั้น ผมมีเครื่องเสมือน 2 ตัวที่สร้างในเครือข่ายภายในที่ต่างกันบน Hyper-V host ด้วยที่อยู่ IP ดังนี้:
- mun-dc01:
192.168.13.11/24(gateway 192.168.13.1) - hh-dc02:
192.168.113.11/24(gateway 192.168.113.1)
เพื่อให้ Routing ทำงานบน Windows Server คุณต้องเปิดใช้งานพารามิเตอร์ Registry พิเศษ — IPEnableRouter (มีการอภิปรายในบทความเกี่ยวกับการกำหนดค่า Port Forwarding ใน Windows)
เปิด PowerShell ในฐานะผู้ดูแลระบบบน Hyper-V host แก้ไข Registry และรีสตาร์ทโฮสต์:
Set-ItemProperty -Path HKLM:\system\CurrentControlSet\services\Tcpip\Parameters -Name IpEnableRouter -Value 1
Restart-computer

ในขั้นตอนถัดไป สร้าง Hyper-V internal virtual switches 2 ตัวใหม่ คุณสามารถสร้างได้ทั้งใน Hyper-V Manager หรือด้วย PowerShell:
New-VMSwitch -Name vSwitchIntMUN -SwitchType Internal
New-VMSwitch -Name vSwitchIntHH -SwitchType Internal

เรียนรู้เพิ่มเติมเกี่ยวกับวิธีกำหนดค่า Hyper-V จาก PowerShell
จากนั้นเปิด Control Panel -> Network and Internet -> Network Connections บน Hyper-V host คุณจะเห็นรายการ Network adapters บนโฮสต์ของคุณ มี Virtual adapters 2 ตัวใหม่ (Hyper-V Virtual Ethernet Adapter) สำหรับ virtual switches ที่คุณสร้าง กำหนดที่อยู่ IP ให้พวกเขาโดยใช้ PowerShell หรือผ่านคุณสมบัติ Network adapter
New-NetIPAddress -InterfaceAlias 'vEthernet (vSwitchIntMUN)' -IPAddress 192.168.13.1 -PrefixLength 24
New-NetIPAddress -InterfaceAlias 'vEthernet (vSwitchIntHH)' -IPAddress 192.168.113.1 -PrefixLength 24
ตามที่เห็น เราได้กำหนดที่อยู่ IP ของ Default Gateway บนแต่ละ Subnet ให้กับอินเทอร์เฟซเหล่านี้

เชื่อมต่อแต่ละ VM กับ Virtual Switch ของมัน (หากคุณยังไม่ได้ทำ):
Connect-VMNetworkAdapter -VMName mun-dc01 -SwitchName vSwitchIntMUN
Connect-VMNetworkAdapter -VMName hh-dc03 -SwitchName vSwitchIntHH
จากนั้น VMs ของคุณจะส่ง Traffic ผ่านอินเทอร์เฟซเหล่านี้ของ Virtual Switches
ตรวจสอบว่า Hyper-V Virtual Machines จากเครือข่ายภายในที่ต่างกันเห็นกัน ตรวจสอบ Routing โดยใช้ tracert และความพร้อมของ Port โดยใช้ PowerShell cmdlet Test-NetConnection:
Test-NetConnection 192.168.13.11 -port 445
tracert 192.168.13.11

ตามที่เห็น โฮสต์ตอนนี้ตอบสนอง ICMP ping และ TCP โปรดทราบว่าการตั้งค่า Windows Defender Firewall ใน VMs ของคุณอาจบล็อก Traffic ตรวจสอบให้แน่ใจว่าคุณได้อนุญาต ICMP traffic ใน Windows Firewall และเพิ่มกฎ Firewall อื่นๆ ที่อนุญาต
ดังนั้น เราได้กำหนดค่า Routing ระหว่างเครือข่ายเสมือนหลายเครือข่ายบน Hyper-V host วิธีนี้ใช้ได้กับ Hyper-V บน Windows 10 และ Windows Server 2016/2019