IPv6 ULA Generator: สร้าง /48 Prefix ส่วนตัวตามมาตรฐาน RFC 4193 ออนไลน์
สร้าง IPv6 Unique Local Address ตาม RFC 4193 (fd00::/8) จาก MAC address และ timestamp ผ่าน SHA-1 ได้ /48 prefix พร้อม first และ last host — ทำซ้ำได้และทำงานในเบราว์เซอร์ทั้งหมด
Table of Contents
เมื่อคุณเริ่มวางระบบเครือข่าย IPv6 ส่วนตัว — ไม่ว่าจะเป็น homelab, VPN เชื่อมสองสำนักงาน หรือ lab ทดสอบ — คำถามแรกที่ตามมาทันทีคือ "แล้วจะใช้ prefix อะไรดี?" มาตรฐาน RFC 4193 ตอบคำถามนี้ด้วยช่วง address ที่เรียกว่า Unique Local Address (ULA) ในบล็อก fd00::/8 ซึ่งทำหน้าที่เหมือน private IP ของ IPv4 (RFC 1918 อย่าง 192.168.0.0/16 หรือ 10.0.0.0/8) แต่มีเงื่อนไขสำคัญคือ global ID ต้องมาจากการสุ่มที่มีโอกาสชนกับเครือข่ายอื่นต่ำมาก ไม่ใช่ตั้งเองตามใจชอบ
IPv6 ULA Generator ของเราแก้ปัญหานี้ให้ในไม่กี่วินาที เครื่องมือนำ MAC address ของคุณมารวมกับ NTP-style timestamp แล้ว hash ด้วย SHA-1 ภายใน browser ทั้งหมด ได้ ULA /48 prefix ที่ถูกต้องตามมาตรฐาน พร้อม first host และ last host ของทั้งบล็อก และที่พิเศษกว่านั้นคือรองรับการใส่ seed ตัวเลข เพื่อให้ผลลัพธ์ทำซ้ำได้ — MAC เดิม + seed เดิม = prefix เดิมเสมอ
บทความนี้จะพาไปดูวิธีใช้งานทีละขั้น โครงสร้างของ fd00::/8 แบบเข้าใจง่าย และกรณีใช้งานจริงที่ ULA ตอบโจทย์ได้ดีกว่าการยัดทุกอย่างลงใน 10.0.0.0/8 แบบเดิม
ทำไมต้องใช้ IPv6 ULA Generator?
- ตามมาตรฐาน RFC 4193 จริง — สุ่ม global ID ด้วย SHA-1 จาก MAC address รวมกับ timestamp ตามแนวทางที่ RFC แนะนำ ไม่ใช่การเดาตัวเลขสวย ๆ ที่เสี่ยงชนกับเครือข่ายอื่นเวลา merge กับ VPN ของพาร์ตเนอร์
- ทำซ้ำได้แบบ deterministic — ใส่ MAC เดิมกับ seed (timestamp หน่วย ms) เดิม ก็ได้ prefix เดิมเสมอ เหมาะกับการเขียนเอกสาร รันซ้ำใน CI หรือแชร์สูตรให้ทีม
- ความเป็นส่วนตัวสูงสุด — ทุกการคำนวณเกิดขึ้นใน browser ของคุณ ไม่มีการส่ง MAC address หรือข้อมูลใด ๆ ขึ้นเซิร์ฟเวอร์
- ได้ข้อมูลครบในครั้งเดียว — ไม่ได้แค่ /48 prefix แต่ได้ first host และ last host ของทั้งบล็อกด้วย เอาไปใช้วางแผน subnet ต่อได้ทันที
- /48 ให้พื้นที่เหลือเฟือ — ย่อยเป็น /64 ได้ถึง 65,536 subnet พอสำหรับบ้าน ออฟฟิศ หรือแม้แต่องค์กรขนาดกลาง
- ฟรีและไม่ต้องสมัคร — เปิดใช้ได้ทันที ไม่มีบัญชี ไม่มีลิมิต ใช้กี่ครั้งก็ได้
ฟีเจอร์หลัก
| ฟีเจอร์ | ทำอะไร |
|---|---|
| กรอก MAC address | ใช้ MAC ของอุปกรณ์เป็น input หลักในการสุ่ม global ID ของ ULA |
| Seed (timestamp ms) | ใส่ตัวเลข seed เพื่อให้ผลลัพธ์ทำซ้ำได้ — MAC เดิม + seed เดิม = prefix เดิมเสมอ |
| SHA-1 hashing ใน browser | รวม MAC กับ NTP-style timestamp แล้ว hash ด้วย SHA-1 ทั้งหมดภายในเครื่องคุณ |
| ULA /48 prefix พร้อม host range | ได้ prefix รูปแบบ fd00::/8 เช่น fd9f:3ac2::/48 พร้อม first host และ last host ของ /48 |
รายละเอียดเพิ่มเติม:
- timestamp ช่วยกระจายค่า — แม้ใช้ MAC เดียวกัน แต่คนละ seed ก็ได้ prefix คนละตัว ทำให้สร้าง prefix หลายชุดสำหรับหลาย environment ได้โดยไม่ชนกัน
- privacy by design — ไม่มี request ไปเซิร์ฟเวอร์เลย MAC และ seed ของคุณไม่หลุดออกจากเครื่อง
วิธีสร้าง ULA Prefix
- เปิด IPv6 ULA Generator — tool ทำงานใน browser ทันที ไม่ต้องสมัครหรือติดตั้งอะไรเพิ่ม
- กรอก MAC address — แนะนำให้ใช้ MAC ของ router หรืออุปกรณ์หลักในเครือข่าย เพื่อให้สามารถอธิบายที่มาของ prefix ได้ภายหลัง
- ใส่ seed (ตามต้องการ) — seed เป็นตัวเลข timestamp หน่วย ms เช่น 1718000000000 ถ้าไม่ใส่ ระบบจะใช้เวลาปัจจุบันให้เอง แต่ถ้าอยากให้ทำซ้ำได้ ต้องจด seed นี้ไว้
- กดสร้าง — ระบบรวม MAC กับ timestamp แล้ว hash ด้วย SHA-1 ใน browser แล้วแปลงเป็น global ID ได้ /48 prefix เช่น fd9f:3ac2::/48
- บันทึกผลลัพธ์ — จด prefix, first host, last host และ seed ที่ใช้ไว้ในเอกสารเครือข่าย วันหน้าอยากได้ prefix เดิมก็แค่รันซ้ำด้วย input เดิม
ทำความเข้าใจ RFC 4193 และ fd00::/8
ULA (Unique Local Address) คือช่วง address สำหรับเครือข่ายส่วนตัวในโลก IPv6 ที่นิยามโดย RFC 4193 เทียบได้กับ private IP ของ IPv4 ตาม RFC 1918 แต่ต่างกันตรงที่ ULA ไม่ถูก route ออก internet และไม่ควรถูก NAT ออกไป — มันออกแบบมาเพื่อ "อยู่ในเครือข่ายของคุณเท่านั้น" อย่างชัดเจน
โครงสร้างของ fd00::/8 แบ่งส่วนกันชัดเจน:
- ไบต์แรก fd — ระบุว่าเป็น ULA แบบ locally assigned (อีกแบบคือ fc สำหรับ centrally assigned แต่แทบไม่มีใครใช้ในทางปฏิบัติ)
- global ID 40 บิตถัดมา — ต้องมาจากการสุ่มที่มีเอกลักษณ์สูง นี่คือส่วนที่เครื่องมือสร้างจาก SHA-1 ของ MAC + timestamp
- subnet ID 16 บิต — ใช้แบ่งย่อยภายในองค์กร /48 หนึ่งอันย่อยเป็น /64 ได้ถึง 65,536 subnet
- interface ID 64 บิต — ใช้ระบุ host ภายใน /64 แต่ละ subnet
เหตุผลที่ RFC บังคับให้สุ่ม global ID แทนการกำหนดเอง เพื่อลดโอกาสที่สองเครือข่าย (เช่น บ้านสองหลังที่เชื่อมกันด้วย VPN) จะใช้ prefix เดียวกัน ถ้าสุ่มดี ๆ โอกาสชนของค่า 40 บิตต่ำมากจนแทบไม่ต้องกังวล เวลา merge เครือข่ายจึงไม่ต้อง renumber ให้วุ่นวาย
จุดเด่นของเครื่องมือนี้คือ seed แบบทำซ้ำได้ — การสุ่มแบบ random ล้วนทำซ้ำไม่ได้ แต่เมื่อใช้ MAC + seed คงที่ ผลของ SHA-1 ก็จะเหมือนเดิมทุกครั้ง:
MAC AA:BB:CC:DD:EE:FF + seed 1718000000000
→ SHA-1 → เลือก 40 บิตเป็น global ID
→ ULA prefix: fd9f:3ac2::/48
first host: fd9f:3ac2::
last host: fd9f:3ac2:ffff:ffff:ffff:ffff:ffff:ffff
กรณีใช้งานจริง
ติดตั้ง IPv6 ใน homelab
สมมติคุณมี router ที่รัน OPNsense หรือ OpenWrt และอยากให้ทุกเครื่องในบ้านคุยกันด้วย IPv6 ได้เสถียร ไม่ว่า ISP จะให้ GUA มาหรือไม่ — สร้าง ULA /48 หนึ่งอันจาก MAC ของ router แล้วตั้งเป็น ULA prefix ใน router จากนั้นแบ่ง /64 ต่อ VLAN เช่น VLAN10 (trusted) ใช้ fd9f:3ac2:10::/64 และ VLAN20 (IoT) ใช้ fd9f:3ac2:20::/64 อ่านง่าย จำง่าย และคงอยู่แม้ prefix จาก ISP จะเปลี่ยนบ่อยแค่ไหน
วางแผน address ให้ VPN mesh
WireGuard หรือ mesh แบบ DIY หลายตัวต้องการช่วง address เฉพาะของตัวเอง เวลาคุณมี site หลายที่ (บ้าน + ออฟฟิศ + colo) การที่แต่ละ site ใช้ ULA /48 ที่สุ่มต่างกัน จะทำให้ routing ระหว่าง site ไม่ชนกันเลย ลองสร้าง /48 คนละ seed ต่อ site แล้วจด seed ไว้ในเอกสาร topology — ใครลืมก็รันซ้ำได้จาก input เดิม
สภาพแวดล้อมทดสอบและ lab
ทีม QA หรือคนที่ทำ sandbox มักต้อง clone เครือข่ายจำลองขึ้นมาเรื่อย ๆ การใช้ ULA ที่ generate จาก seed ต่างกันต่อ environment (dev, staging, test) ช่วยกันสับสนว่าเรากำลัง ping อยู่ใน lab ไหน และเพราะ ULA ไม่ route ออกนอก จึงปลอดภัยแม้ config หลุดไปอยู่บนเครื่องจริง
ย้ายจาก private IPv4 แบบ RFC 1918
หลายเครือข่ายเดิมใช้ 192.168.x.x หรือ 10.0.0.0/8 แล้วเจอปัญหาคลาสสิกคือชนกับช่วง address ของลูกค้าหรือพาร์ตเนอร์เวลาต่อ VPN การเพิ่ม ULA /48 เข้าไปคู่กับ IPv4 เดิม (dual-stack) เป็นทางออกที่ค่อยเป็นค่อยไป — ระบบใหม่ใช้ ULA ระบบเก่าค่อย ๆ เลิก และเนื่องจาก global ID ถูกสุ่มมา โอกาสที่อีกฝั่งจะใช้ prefix ชนกับเราแทบเป็นศูนย์
แนวทางปฏิบัติที่ดี
- จด seed ไว้เสมอ — seed คือกุญแจที่ทำให้สร้าง prefix เดิมซ้ำได้ เก็บไว้ในเอกสารเครือข่ายคู่กับ MAC ที่ใช้
- ใช้ MAC ของอุปกรณ์หลัก — เช่น router หรือ core switch จะได้อธิบายที่มาของ prefix ได้เวลา audit หรือส่งมอบงาน
- อย่าสร้าง prefix ใหม่ถ้าไม่จำเป็น — ULA ควรเสถียรเหมือนที่อยู่บ้าน เปลี่ยนบ่อยจะทำให้ firewall rule, DNS และ monitoring พังตาม
- แบ่ง subnet เป็น /64 เสมอ — อย่าย่อยแบบ IPv4 mindset (/24, /26) เพราะโปรโตคอลอย่าง SLAAC สมมติว่า subnet คือ /64
- อย่า NAT ULA ออก internet — ถ้าต้องการออกเน็ต ใช้ GUA จาก ISP ULA มีไว้สำหรับภายในเท่านั้น
- ใช้ prefix เดียวต่อองค์กร — หลีกเลี่ยงการมีหลาย /48 ในองค์กรเดียว เว้นแต่มีเหตุผลด้าน routing ที่ชัดเจน
พร้อมสร้าง ULA prefix แรกของคุณหรือยัง? เปิด IPv6 ULA Generator ได้เลย — ใช้เวลาไม่ถึงนาที ได้ prefix ตามมาตรฐาน RFC 4193 พร้อม first host, last host และความสามารถทำซ้ำได้ ฟรีทั้งหมด ทำงานใน browser โดยไม่ส่งข้อมูลออกจากเครื่องคุณแม้แต่บิตเดียว
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- IPv6 Expander — ขยาย IPv6 แบบย่อให้เป็นรูปเต็ม เห็นโครงสร้างชัดขึ้น
- Subnet Calculator — คำนวณ subnet และช่วง host สำหรับวางแผนเครือข่าย
- MAC Address Lookup — เช็คว่า MAC ที่คุณเอามาใช้เป็นของ vendor ไหน
ขอให้สนุกกับการวางผังเครือข่าย!
คำถามที่พบบ่อย
ถ: ULA กับ link-local (fe80::/10) ต่างกันอย่างไร?
ตอบ: link-local ใช้คุยกันเฉพาะใน segment เดียวกัน ไม่ route ข้าม router ส่วน ULA ใช้ได้ทั้งองค์กรและ route ได้ภายในเครือข่ายส่วนตัวทั้งหมด จึงเหมาะกับการวางแผน address ระยะยาว
ถ: ใส่ MAC address แล้วมีความเสี่ยงด้านความเป็นส่วนตัวไหม?
ตอบ: ไม่มีครับ เครื่องมือนี้ทำงานใน browser 100% — การ hash ด้วย SHA-1 เกิดขึ้นบนเครื่องคุณทั้งหมด ไม่มีข้อมูลใดถูกส่งขึ้นเซิร์ฟเวอร์
ถ: ทำไมใช้ SHA-1 ทั้งที่ถือว่าเก่าแล้ว?
ตอบ: ที่นี่ SHA-1 ไม่ได้ใช้เพื่อความปลอดภัยเชิงเข้ารหัส แต่ใช้เป็นฟังก์ชันกระจายค่าตามแนวทางใน RFC 4193 ที่แนะนำการ hash ข้อมูลระบุตัวตนเพื่อสุ่ม global ID ซึ่งเพียงพอและทำซ้ำได้
ถ: ถ้าลืม seed จะกลับไปได้ prefix เดิมไหม?
ตอบ: ไม่ได้ครับ เพราะ SHA-1 ทำงานทางเดียว วิธีกันเหนียวคือจด MAC + seed ที่ใช้ไว้ในเอกสารเครือข่ายตั้งแต่วันแรกที่สร้าง
ถ: /48 เทียบเท่ากับ IPv4 ช่วงไหน?
ตอบ: /48 มี /64 ย่อยได้ 65,536 subnet และแต่ละ /64 มี address ให้ host แบบไม่อั้นเชิงปฏิบัติ ถือว่าใหญ่กว่า 10.0.0.0/8 ของ IPv4 มากในเชิงโครงสร้าง