Name collision เกิดขึ้นเมื่อพยายาม resolve ชื่อที่ใช้ใน private namespace เช่น Top-Level Domain หรือ unqualified name ทำให้เกิด query ไปยัง public Domain Name System (DNS) เมื่อขอบเขตการบริหารของ private และ public namespaces ทับซ้อน การ resolve ชื่ออาจให้ผลลัพธ์ที่ไม่ได้ตั้งใจหรือเป็นอันตราย
สาเหตุของ ERR_ICAN_NAME_COLLISION
อาจเกิดจาก hostname ส่วนใหญ่ แต่อาจมีสาอื่น เช่น:
- Syntax หรือ Names ผิด: ปัญหาพื้นฐานเช่นชื่อ hosts file ควรเป็น hosts ไม่ใช่ host โดยไม่มีนามสกุล Syntax ผิดเพียงอย่างเดียวอาจทำให้โปรแกรมทั้งหมดเสียหาย
- White spaces: ห้โค้ดคัดลอกมาจากที่อื่น อาจมีช่องว่างหลายช่อง
- Permissions และ Proxies: บางครั้งมีปัญหา permission บนไฟล์หรือ file attributes หากมี proxy ตั้งค่าบนระบบ อาจ bypass hosts file การไม่ใช้ proxy เป็นตัวเลือกที่ดีกว่าเพื่อลดปัญหา
ตอนนี้เข้าใจลักษณะปัญหาแล้ว เราจะไปต่อที่วิธีแก้
วิธีที่ 1: ตรวจสอบให้แน่ใจว่า hosts File ถูกต้อง
ก่อนตรวจสอบปัญหาที่อื่น ตรวจสอบว่า hosts file ทำงานถูกต้อง การแก้ไขพื้นฐานของ hosts file:
- ชื่อไฟล์ควรเป็น "hosts" ไม่ใช่ host
หา hosts file ได้ที่:C:\Windows\System32\drivers\etc

- ไม่ควรมีนามสกุลสำหรับ hosts file
หมายเหตุ: ตรวจสอบนามสกุล เนื่องจาก Windows มีตัวเลือกซ่อนนามสกุลในแท็บ view
หาแท็บ view ในแถบเมนู file explorer's
- Syntax ใน hosts file ควรถูกต้อง
- ตรวจสอบ variants ทั้งหมด (www.example.com และ example.com) บางครั้งอันหนึ่งทำงานแต่อีกอันไม่ทำงาน เพิ่มทั้งคู่เพื่อความปลอดภัย

ตรวจสอบว่า hosts file ทำงานหรือไม่โดยพิมพ์คำสั่งต่อไปใน CMD (Admin Mode)
- ไปที่ CMD ใน Start menu หรือค้นหาในแถบค้นหา
หมายเหตุ: Windows เก่าจะเป็น: Start > All Programs > Accessories
- คลิกขวา CMD เลือก "Run as Administrator"

- พิมพ์คำสั่งนี้ใน cmd และ enter:
ipconfig /flushdns
จะลบข้อมูลเก่าที่อาจถูกใช้
- พิมพ์ entry address ที่เพิ่มใน hosts file เพื่อตรวจสอบว่าใช้ IP ถูกต้อง
ping example.com –n 1 ping -6 ipv6.example.com –n 1

- หาก IP ถูกต้อง แปลว่า hosts file ทำงานดี และปัญหาอยู่ที่อื่น
- แต่ถ้า IP test ล้มเหลว สามารถ reset NetBios cache ด้วยคำสั่งนี้ใน cmd (admin mode):
nbtstat –r
- ตรวจสอบข้อมูลปัจจุบันใน DNS cache ด้วยคำสั่งใน cmd (normal mode):
ipconfig /displaydns | more

วิธีที่ 2: ตรวจสอบ Whitespace
ช่องว่างเพียงช่องเดียวแม้ในบรรทัดว่างระหว่างสองบรรทัด ก็ทำให้สิ่งต่างๆ เสียหาย Notepad++ ช่วยแสดงตัวอักษรและตรวจสอบจำนวน whitespace characters หากคัดลอก host entries จากที่อื่น อาจมีช่องว่างหลายช่อง เพื่อให้แน่ใจว่า spaces ไม่ทำให้เสียหาย ใช้ spaces หรือ tabs อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งคู่ และจบไฟล์ด้วยบรรทัดว่าง
วิธีที่ 3: ตรวจสอบและแก้ไข Registry
หา key ใน Registry Editor ที่ระบุตำแหน่งของ hosts file สามารถตรวจสอบ entry ใน key ได้ หากไม่ถูกต้อง สามารถแก้ไขได้ นอกจากนี้ สำหรับผู้ที่ขาด key ใน registry หรือ entry อื่นๆ หลายอย่าง สามารถสร้างได้หรือคัดลอกจากเครื่องอื่นที่มีอยู่แล้ว
- เปิด "Run" โดยกด Windows + R
- พิมพ์ regedit และ enter

- ไปที่ไดเรกทอรีต่อไปใน Registry Editor:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

- DataBasePath คือ key ที่จะตรวจสอบ entry ในมันควรเป็น:
C:\\Windows\System32\drivers\etc
วิธีที่ 4: สร้าง hosts File ใหม่พร้อม Default Permissions
Permission ของ hosts file ที่มีอยู่อาจมีปัญหา สามารถสร้างใหม่และคัดลอกเนื้อหาเดิมไปไฟล์ใหม่ hosts file เก่าจะมีเครื่องหมายถูกสีเทา ในขณะที่ใหม่จะเป็นสีดำ นี่จะทำให้ระบบสร้างไฟล์ใหม่ด้วย default permissions ทำตามขั้นตอน:
- สร้าง text file ใหม่บน Desktop
- เปิด Notepad เป็น Administrator

- คลิก File แล้ว Open
- ไปที่ตำแหน่ง:
C:\\Windows\System32\drivers\etc
- หา "hosts" file เปิด เลือกข้อความทั้งหมด copy

- วาง paste ลงใน text file ที่สร้างบน Desktop
- เปลี่ยนชื่อเป็น "hosts" โดยไม่มีนามสกุล
- ขั้นตอนนี้มีลูกเล่น ต้อง copy (อย่าย้าย) hosts file ใหม่ไปทับไฟล์เดิม
หมายเหตุ: บางคน copy ได้ บางคน move ได้ ลอง copy ก่อน
หากอ่าน hosts file เก่าไม่ได้ ทำตามขั้นตอน:
- ไปที่ไดเรกทอรี:
C:\\Windows\System32\drivers\etc
- คลิกขวา "hosts" file เลือก "Properties"
- ไปแท็บ "Security"
- ในกล่อง "Group or usernames" หา
%COMPUTERNAME%\Users

- ตรวจสอบ permissions ในกล่องด้านล่าง ดูว่า User ได้รับอนุญาตหรือไม่
- หาก User ไม่ได้รับอนุญาต คลิก "Edit" ติ๊กกล่องต่อไปนี้เพื่ออนุญาต User:
Read & Execute

- ตอนนี้จะแก้ไข hosts file ใน notepad ได้โดยเปิดเป็น Administrator
วิธีที่ 5: ตรวจสอบปัญหา Proxy
วิธีนี้เกี่ยวกับ: หากมี proxy ตั้งค่าบนระบบซึ่งอาจ bypass hosts file ในวิธีนี้ เราจะตรวจสอบว่าระบบรัน proxy อยู่หรือไม่ ตรวจสอบได้ใน Internet Explorer ด้วยขั้นตอน:
- ค้าง Windows Key กด R พิมพ์ inetcpl.cpl คลิก OK
- เลือก แท็บ Connections คลิก LAN settings
- ตรวจสอบว่า "Automatically detect settings" ติ๊ก และ Proxy server ไม่ติ๊ก หลังตรวจสอบ proxy settings ดูว่าปัญหาแก้ไขได้หรือไม่
