ในสภาวะแวดล้อมบน Hyper V บนคนอาจเคยประสบปัญหา ไม่สามารถทำการ ping ระหว่างเครื่อง Virtual Machine กับเครื่อง Host ได้ ในวันนี้เราจะมาแก้ปัญหาเหล่านี้กัน
แก้ปัญหาไม่สามารถทำการ Ping ระหว่างเครื่อง Virtual Machine กับเครื่อง Host(Physical Computer) ได้
โดยทั่วไปถ้าทำการคอนฟิกแล้วผ่านทั้ง 3 ข้อนี้ คอมระหว่างเครื่อง VM และเครื่อง Host น่าจะสามารถ ping หากันได้
1.เครื่อง Host และ VM จะต้องมีการเชื่อมต่อกันผ่าน Virtual Switch ที่ถูกต้อง ที่อนุญาติให้ทั้ง 2 เครื่อง(หรือหลายๆเครื่อง) สามารถติดต่อสื่อสารกันได้บน Hyper V
2.จะต้องเช็คเสียก่อนว่าเครื่องคอมพิวเตอร์ ทั้ง 2 เครื่อง หรือหลายๆเครื่องนั้นอยู่บน Network เดียวกันเสียก่อน เพราะถ้าเครื่องทั้ง 2 เครื่องอยู่คนละ Network กับ จะไม่สามารถทำการ ping หากันได้(นอกจากทำ Routing)
3.ตั้งค่า Firewall Rule ทั้ง 2 เครื่องให้อนุญาติ Inbound Traffic เข้าหากันได้
โดยส่วนใหญ่คนจะลืม ตั้งค่า Firewall Rule ทั้ง 2 ฝั่งทำให้ ไม่สามารถ ping หากันได้ แม้จะตั้งค่า IP ให้อยู่ในเครือข่ายเดียวกันแล้วก็ตาม
ตัวอย่างด้านล่าง จะเป็นวิธีการเช็คเป็นขั้นตอนตั้งแต่ข้อ 1 ถึงข้อ 3
ภาพการตั้งค่า Logical Topology ที่ใช้ในบทความนี้
จากภาพด้านบน เป็นตัวอย่างการเชื่อมต่อ และการตั้งค่าบนสภาแวดล้อมของ Hyper V
ข้อแรกตรวจสอบว่า เครื่องโฮส และเครื่อง VM เชื่อมต่อกันบน Virtual Switch ที่ถูกต้องบน HyperV แล้วหรือยัง ผมได้เขียนบทความอธิบาย Virtual Switch แบบต่างๆบน HyperV แล้วว่า มี 4 แบบ โดยแต่ละแบบจะมีคุณสมบัติที่ไม่เหมือนกัน Virtual Switch ที่อนุญาติให้เครื่อง VM และ เครื่อง Host สามารถสื่อสารกันได้ คือ Virtual Internal Switch, Virtual External Switch, และ Virtual Default Switch
ในบทความนี้จะใช้ Virtual Internal Switch ซึ่งเป็น Switch ที่อนุญาติให้เราสามารถสื่อสารกับ VM แต่ละเครื่องได้
เราจะเช็คก่อนโดยมาที่เครื่อง Host(เครื่องคอมพิวเตอร์จริงๆของเรา) เปิด HyperV แล้วเช็คว่าเครื่อง Host ของเราเชื่อมต่อกับ Virtual Internal Switch หรือยัง

เช็คใน HyperV ก่อนว่าเราเชื่อมต่อVirtual Internal Switch หรือยัง

เช็คต่อไปใน Virtual Switch Manager ว่า Switch ที่เราเลือกเป็น Internal Switch จริงไหม
การที่เราสร้าง Internal Switch บน HyperV มาใหม่ ระบบจะสร้าง vEthernet Adaptor ขึ้นมาให้โดยอัตโนมัติ ตามรูป
vEthernet Adaptor ที่ระบบสร้างขึ้นมาครั้งแรกเมื่อเราสร้าง Internal Switch บน HyperV
ข้อที่สอง ตรวจสอบว่า เราตั้ง IP Address บนเครื่อง Host และ VM ถูกต้องหรือไม่ อยู่ใน Network เดียวกันหรือยัง ให้ทำการตั้งและทดสอบ ด้วยคำสั่ง ipconfig บน CMD

คำสั่ง ipconfig บนเครื่อง Host ใช้ IP Address : 10.0.0.3/24
ข้อที่สาม ตรวจสอบว่า ได้มีการ Set Firewall Rule ให้อนุญาติ Inbound ICMPv4 ของทั้ง 2 ฝั่งแล้วหรือยัง เพราะค่าเริ่มต้นใน Windows Server หรือ Windows10 จะ Block ICMP echo request (Inbound) ของแต่ละเครื่องไว้เป็นค่าเริ่มต้น
โดยใน Windows Server สามารถดูได้ที่ Tools > Windows Defender Firewall with Advanced Security > Inbound Rules > Fire and Printer Sharing (Echo Request – ICMPv4-In)

ใน Windows Server ตั้งค่าได้ที่ Windows Defender Firewall with Advanced Security

กดเลือก Enable แล้วกด Apply
สำหรับการตั้งค่าใน Windows10 สามารถตั้งค่าได้ที่ Windows Defender Firewall with Advanced Security เช่นเดียวกัน โดยจะต้องตั้งค่าเช่นนี้ทั้ง 2 ฝั่ง
จากนั้นทดลอง ping หากัน จะพบว่าประสบความสำเร็จ

สามารถ ping ไปยัง 10.0.0.2/24 ซึ่งก็คือเครื่อง VM ได้สำเร็จ
ส่วนที่ต้องระวังเวลาตั้งค่า Firewall Rules คือ บางกฎเดียวกัน มี 2 Profile ซึ่งจะต้องดูให้ดี หากว่าตั้งค่าผิดไปตั้งค่า ใน Profile แบบ Domain สิ่งที่เขียนในบทความนี้จะใช้งานไม่ได้ เพราะเครื่อง Host นี้ยังไม่ได้ Join Domain ดังนั้นในกรณีตัวอย่าง ให้ตั้งค่าในส่วน Private/Public Profile แทน
