อุปกรณ์ทุกชิ้นที่เชื่อมต่ออินเทอร์เน็ตสื่อสาร ระบุตำแหน่ง และโต้ตอบกับอุปกรณ์อื่นผ่าน IP address ซึ่งเป็นชุดตัวเลขเฉพาะที่กำหนดให้กับอุปกรณ์แต่ละชิ้นบนเครือข่าย คล้ายกับที่อยู่บ้านที่บอกตำแหน่งและแยกแยะบ้านแต่ละหลังออกจากกันบนถนนเส้นเดียวกัน
แม้เครือข่ายภายในบ้านแบบ IPv4 ทั่วไปจะมี IP address ไม่มากนัก (เช่น 192.168.0.0/24 ให้ได้ ๒๕๖ addresses) แต่บนเครือข่าย IPv6 อาจมี address ให้ใช้ได้มากถึง ๑๘ quintillion
ทั้งนี้ ไม่ใช่ทุก address จะถูกใช้โดยอุปกรณ์ในบ้านของคุณ ต้องขอบคุณ subnetting และ subnet mask ดังนั้น คำถามที่ยังเหลืออยู่คือ: subnet คืออะไร? subnet mask คืออะไร? IPv4 และ IPv6 subnetting ทำงานอย่างไร? และจะใช้ subnet cheat sheet เพื่อกำหนดค่าเครือข่ายได้อย่างไร? ทุกคำถามจะได้รับคำตอบในบทความนี้
ผมได้สร้าง cheat sheet ที่ครอบคลุม subnet mask, IPv6 CIDR prefix length และวิธีตั้งค่าเครือข่าย IPv4 หรือ IPv6 ของคุณ อย่าลืมดูที่ท้ายบทความนี้ด้วย นอกจากนี้ยังมีข้อมูลที่เป็นประโยชน์เกี่ยวกับ IP address และการทำเครือข่าย
Subnet Mask คืออะไร?
ที่อยู่ IPv4 ประกอบด้วย 32 บิต แบ่งออกเป็นกลุ่มละ 8 บิต ซึ่งเรียกกันทั่วไปว่า "octet" แต่ละ octet จะถูกกำหนดให้เป็นส่วนของ Network ID หรือ Host ID หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ IPv4 และ IPv6 อ่านได้ในบทความของเราที่ชื่อว่า "IPv4 vs. IPv6: ทำไม IPv6 ถึงมาแทนที่ IPv4.”
Network ID และ Host ID
Network ID หรือที่อยู่เครือข่าย คือส่วนที่บอกว่า IP address นั้นอยู่ในเครือข่ายใด เมื่อส่งแพ็กเก็ตข้อมูลผ่านอินเทอร์เน็ตหรือเครือข่ายภายใน เราเตอร์จะใช้ Network ID เพื่อพิจารณาว่าปลายทางของแพ็กเก็ตนั้นอยู่ในเครือข่ายเดียวกันหรือต้องส่งต่อไปยังเครือข่ายอื่น กล่าวคือ Network ID เป็นตัวบอกเราเตอร์ว่าควรส่งแพ็กเก็ตไปที่เครือข่ายใด
นอกจากนี้ Network ID ยังช่วยแยกแยะ Subnet ต่าง ๆ ภายในองค์กรหรือสภาพแวดล้อมขนาดใหญ่ได้ด้วย เมื่อแต่ละ Subnet มี Network ID เป็นของตัวเอง อุปกรณ์ก็สามารถสื่อสารกันภายใน Subnet เดียวกัน หรือติดต่อกับ Subnet อื่นผ่านเราเตอร์ได้ โดยอุปกรณ์ทุกชิ้นในเครือข่ายเดียวกันจะใช้ Network ID ชุดเดียวกันเสมอ
ส่วนถัดมาคือ Host ID ซึ่งเป็นส่วนที่ระบุตัวตนของอุปกรณ์แต่ละชิ้น (host) ภายในเครือข่ายนั้น ๆ Host ID ทำหน้าที่แยกแยะอุปกรณ์ในเครือข่าย เพื่อให้เครือข่ายสามารถส่งและรับ Traffic ไปยังอุปกรณ์ที่ถูกต้องได้
Subnet Mask
ทีนี้มาดู Subnet mask กัน Subnet mask คือตัวเลข 32 บิต (รูปแบบเดียวกับ IP address) ที่บอกว่า octet แต่ละส่วนที่กล่าวไปข้างต้นถูกกำหนดให้เป็น Network ID หรือ Host ID
IPv4 มาสก์สไตรต์เวิร์ก
ลองนึกภาพว่าคุณมี IPv4 address อย่าง 192.168.1.10 พร้อมกับ Subnet mask อย่าง 255.255.255.0 ตัวเลขที่ซ้ำกันใน Subnet mask แสดงให้เห็นว่าสาม octet แรก หรือ 24 บิตแรกของ IP address ซึ่งคือ 192.168.1.0 คือส่วนของเครือข่าย (Network ID)
เหตุผลคือ ดังที่กล่าวไว้ก่อนหน้านี้ อุปกรณ์ทุกชิ้นในเครือข่ายเดียวกันจะใช้ Network ID ร่วมกัน ทำให้ตัวเลขส่วนนั้นคงที่สำหรับทุกอุปกรณ์ในเครือข่าย ส่วน Host ID นั้น octet สุดท้ายคือจำนวน IP address ที่สามารถกำหนดให้กับอุปกรณ์ได้
คำถามที่มักเกิดขึ้นคือ แล้วจะรู้ได้อย่างไรว่ามี IP address ให้ใช้งานได้กี่ตัว? เมื่อ Subnet mask บอกว่า IP address มี 8 บิตสำหรับ Host ID หมายความว่ามีตัวแปร 8 ตำแหน่งที่ใส่ได้ทั้ง 0 หรือ 1
ซึ่งหมายถึง 2^8 หรือ 256 IP address ที่สามารถกำหนดให้กับอุปกรณ์ใน IPv4 address นี้ อย่างไรก็ตาม ต้องระลึกไว้ว่าสองที่อยู่ในจำนวนนี้ถูกสงวนไว้เสมอ ได้แก่ Network address (192.168.1.0) และ Broadcast address (192.168.1.255)
หน้ากากซับเน็ต IPv6
พูดถึง Subnet mask ใน IPv4 ไปแล้ว ทีนี้มาดู Subnet mask ใน IPv6 กันบ้าง แทนที่จะแสดงว่าส่วนใดของที่อยู่ IPv6 เป็น Network ID และส่วนใดเป็น Host ID ด้วย Dotted Decimal Notation แบบ IPv4 (255.255.255.0) นั้น IPv6 ใช้ Prefix Length ซึ่งเป็นส่วนหนึ่งของระบบการจัดสรรและการเขียนที่อยู่ IP แบบใหม่ทั้งหมด
ระบบนี้เรียกว่า Classless Inter-Domain Routing แทนที่จะใช้ระบบจัดสรร IP แบบ Class-based แบบเดิม ระบบนี้ใช้ Variable-Length Subnet Masking (VLSM) อ่านข้อมูลเพิ่มเติมเกี่ยวกับ CIDR วิธีการทำงาน และความแตกต่างจากระบบเดิมได้ ที่นี่.
สำหรับวิธีที่ CIDR Notation แสดงว่าส่วนใดเป็น Network และ Host ID นั้น โดยทั่วไปจะเติม / ต่อท้ายที่อยู่ IPv6 ตามด้วยตัวเลขที่บอกจำนวนบิตที่กำหนดให้กับส่วนเครือข่าย CIDR Notation แบบนี้เรียกว่า Prefix Length
ข้อควรทราบคือ แต่ละตัวเลขใน IPv4 address แทน 8 บิตหรือ 1 octet แต่ใน IPv6 แต่ละกลุ่มตัวเลขและตัวอักษรที่คั่นด้วยเครื่องหมาย : แทน 16 บิต ตัวอย่างเช่น:
2001 (เลขฐานสิบหก) → 0010000000000001 (เลขฐานสอง)
รูปแบบเลขฐานสองแบบสมบูรณ์ของที่อยู่ IPv6 2001:0db8:85a3:0000:0000:8a2e:0370:7334 เป็น:
0010000000000001 0000110110111000 1000010110100011 0000000000000000
0000000000000000 1000101000101110 0000001101110000 0111001100110100
นอกจากนี้ เพื่อย่อที่อยู่ IPv6 ให้สั้นลง กลุ่มศูนย์ (16-bit block ที่เป็นศูนย์ทั้งหมดใน IPv6 address) จะถูกแทนที่ด้วย "::" จำนวน 16-bit Zero Block คำนวณได้โดยนำจำนวน Block ทั้งหมดใน IPv6 address ซึ่งมีแปด Block ลบด้วยจำนวน Non-zero Block ที่แสดงครบ ตัวอย่างเช่น:
2001:db8:1234::/64 → 2001:db8:1234 → 8 บล็อกทั้งหมด – 3 Non-zero Block = 5 Zero Block
ดังนั้น ที่อยู่แบบเต็มคือ 2001:0db8:1234:0000:0000:0000:0000:0000/64.
เมื่อเข้าใจพื้นฐานเหล่านี้แล้ว มาดูตัวอย่าง Subnet mask ใน IPv6 กัน:
หากที่อยู่ IPv6 เป็นดังนี้: 2001:db8:1234::/64
64 บิตแรกเป็นส่วนของเครือข่าย: 2001:db8:1234
บิตที่เหลืออีก 64 บิต (128-64=64) ใช้สำหรับส่วน host: 0000.0000.0000.0000.
Subnet Cheat Sheet สำหรับ IPv4 และ IPv6
แม้ subnet mask และ subnetting จะฟังดูคล้ายกัน แต่ทั้งสองทำงานต่างกันโดยสิ้นเชิง subnetting คือการแบ่งที่อยู่ IPv4 หรือ IPv6 จำนวนมากที่มีอยู่ในเครือข่ายออกเป็นกลุ่มย่อย เพื่อจัดการอุปกรณ์หรือแผนกต่าง ๆ ได้ง่ายขึ้น และเพิ่มความปลอดภัยของเครือข่าย
ตัวอย่างเช่น ในองค์กร แผนกการเงินอาจมี subnet เป็นของตัวเอง เพื่อป้องกันไม่ให้แผนกอื่นเข้าถึงโดยไม่ได้รับอนุญาต ในบ้านพักอาศัย การแบ่งเครือข่ายออกเป็นสอง subnet ได้แก่ subnet สำหรับอุปกรณ์ส่วนตัว และ subnet สำหรับอุปกรณ์ IoT (Internet of Things) เช่น ลำโพงอัจฉริยะหรือหุ่นยนต์ดูดฝุ่น ช่วยเพิ่มความปลอดภัยและลดปริมาณ traffic ได้ เนื่องจากอุปกรณ์ IoT ติดต่อกับ cloud service อยู่ตลอดเวลาและมักมีช่องโหว่ด้านความปลอดภัยมากกว่า
ก่อนปี 1993 การทำ subnetting ใช้ระบบ class กำหนดว่าแต่ละเครือข่ายจะมี IP ได้ 254, 65,534 หรือกว่า 16 ล้านที่อยู่ (สำหรับอุปกรณ์) และไม่สามารถแบ่งย่อยเป็นเครือข่ายขนาดเล็กได้เหมือนทุกวันนี้
อย่างไรก็ตาม ด้วยการพัฒนา CIDR คุณสามารถแบ่งเครือข่ายขนาดใดก็ได้ออกเป็นเครือข่ายย่อยตามจำนวนที่ต้องการ มาดูกันว่าการทำ subnetting ใน IPv4 และ IPv6 ทำอย่างไร และคุณจะใช้ subnet cheat sheet ของเราในการกำหนดค่าเครือข่ายได้อย่างไร
IPv4 Subnet Cheat Sheet เอกสารอ้างอิงด่วน IPv4 Subnet
สมมติว่าคุณมีเครือข่าย เช่น 192.168.1.0/24 ซึ่งมี IP address 256 ที่อยู่สำหรับส่วน host แม้คุณจะทราบจำนวน IP ที่ใช้สำหรับส่วน network และส่วน host ได้จาก subnet mask (255.255.255.0) แต่จาก /24 ที่ต่อท้าย IP ก็สรุปได้ว่าเนื่องจาก 24 บิตถูกใช้สำหรับส่วน network จึงเหลือ 8 บิต หรือ 256 ที่อยู่ (2^8=256) สำหรับส่วน host
หากต้องการแบ่งเครือข่ายนี้ออกเป็นสอง subnet ที่มี 128 ที่อยู่แต่ละ subnet เราต้องยืม 1 บิตจากส่วน network ซึ่งทำให้การตั้งค่าเปลี่ยนแปลงดังนี้:
- subnet mask ใหม่: /25 หรือ 255.255.255.128
- จำนวน host ต่อ subnet: 128
- Subnet 1: 192.168.1.0/25 (126 ที่อยู่ที่ใช้งานได้ ตั้งแต่ 192.168.1.1 ถึง 192.168.1.126)
- Subnet 2: 192.168.1.128/25 (126 ที่อยู่ที่ใช้งานได้ ตั้งแต่ 192.168.1.129 ถึง 192.168.1.254)
ด้วยกระบวนการ CIDR นี้ คุณสามารถแบ่งเครือข่ายได้มากเท่าที่ต้องการ ตราบใดที่มี IP ที่ใช้งานได้อย่างน้อยสองที่อยู่ (ไม่นับสอง IP ที่สงวนไว้สำหรับ broadcast address และ network address) ดังนั้น สำหรับเครือข่าย /24 ที่มี IP ที่ใช้งานได้ 254 ที่อยู่ คุณสามารถสร้างได้ถึง 64 subnet โดยแต่ละ subnet มี IP ที่ใช้งานได้สองที่อยู่ อย่างไรก็ตาม จำนวน host ที่น้อยขนาดนี้มักใช้เฉพาะกับการเชื่อมต่อแบบ point-to-point เท่านั้น
แผ่นโกงสำหรับเครือข่ายย่อย IPv6
การทำ subnetting ใน IPv6 มีความสำคัญเป็นพิเศษ เนื่องจาก IPv6 รองรับที่อยู่ได้ถึง 2^128 หรือ 340 undecillion ที่อยู่ (เลข 34 ตามด้วยศูนย์ 37 ตัว) โดยทั่วไปเครือข่าย IPv6 จะถูกตั้งค่าด้วย CIDR แบบ /64 ซึ่งจัดสรร 64 บิตให้กับส่วน network และอีก 64 บิตให้กับส่วน host ทำให้มีที่อยู่ที่ไม่ซ้ำกันถึง 2^64 หรือ 18 quintillion ที่อยู่ (เลข 18 ตามด้วยศูนย์ 18 ตัว)
เมื่อพิจารณาจำนวนที่อยู่ IPv6 ที่มีอยู่มหาศาล แม้แต่กับ CIDR แบบ /64 ทั่วไป การทำ subnetting บนเครือข่าย IPv6 ก็มีประโยชน์อย่างมาก เพราะผู้ดูแลระบบสามารถจัดกลุ่มอุปกรณ์ตามตำแหน่ง แผนก หรือหน้าที่การใช้งาน ติดตาม traffic กำหนด security policy และตั้งค่า router ได้ง่ายขึ้นมาก
แม้ว่า /64 subnet จะเป็นรูปแบบที่นิยมใช้มากที่สุดในการทำ subnetting สำหรับ IPv6 IP เนื่องจากฟีเจอร์อย่าง SLAAC หรือ Stateless Address Autoconfiguration (ช่วยให้อุปกรณ์สร้าง IP address ของตัวเองโดยอัตโนมัติตามเครือข่ายที่เชื่อมต่อ โดยไม่จำเป็นต้องมี DHCP server) แต่คุณก็สามารถแบ่งเครือข่าย IPv6 ออกเป็นจำนวน subnet เท่าใดก็ได้ตามต้องการ
สมมติว่าคุณมีเครือข่าย IPv6 แบบ /64 ทั่วไป เช่น 2001:db8:abcd:1000::/64 หากเรายืม 4 บิตจากส่วน network เราสามารถแบ่งเครือข่ายออกเป็น 16 subnet ซึ่งทำให้เกิดการเปลี่ยนแปลงดังนี้:
- ซับเน็ตเดิม: 2001:db8:abcd:1000::/64
- ซับเน็ตใหม่: /68
- จำนวนของ subnet: 2^(บิตที่ยืมมาจากเครือข่าย) = 2^4 = 16 เครือข่ายย่อย
- ซับเน็ตแรก: 2001:db8:abcd:1000:0000::/68
- ซับเน็ตที่สอง: 2001:db8:abcd:1000:1000::/68
- ซับเน็ตที่สาม 2001:db8:abcd:1000:2000::/68
- … จนถึง 2001:db8:abcd:1000:f000::/68
- 2001:db8:abcd:1000: 64 บิตแรกกำหนด global routing prefix
- 0000 – f000: 4 บิตถัดไปใช้สำหรับการทำซับเน็ต
- โฮสต์พอร์ชัน: 60 บิตที่เหลือใช้สำหรับแอดเดรสของโฮสต์ (ส่วน "::" ที่เหลือแสดงถึงบล็อก 16 บิตสามบล็อก)
- แต่ละซับเน็ต /68 มีแอดเดรสโฮสต์ที่เป็นไปได้ถึง 2^60 = 1.15 quintillion แอดเดรส
สรุป
subnetting เป็นส่วนสำคัญของทุกเครือข่าย ไม่ว่าจะเป็น IPv4 subnetting หรือ IPv6 subnetting หวังว่าบทความนี้และ subnet cheat sheet ที่ได้จัดทำไว้จะช่วยให้คุณตั้งค่าและแบ่ง subnet เครือข่ายได้ง่ายขึ้น
คำถามที่พบบ่อย
Subnet mask คืออะไร?
ใน IPv4 subnet mask คือตัวเลข 32 บิต (คล้ายกับ IP address) ที่ระบุว่า octet ใดบ้างที่ถูกกำหนดให้กับ network ID และ host ID ส่วนใน IPv6 แทนที่จะใช้ subnet mask เหมือน IPv4 (เช่น 255.255.255.0) จะใช้ prefix length notation เพื่อระบุจำนวนบิตที่ใช้สำหรับส่วน network แทน
การแบ่ง Subnet ของ IPv4 และ IPv6 ทำอย่างไร?
ด้วย CIDR หรือ Classless Inter-Domain Routing เราสามารถแบ่งเครือข่าย IPv4 หรือ IPv6 ออกเป็นจำนวน subnet เท่าใดก็ได้ โดยการยืมบิตจากส่วน network อย่างไรก็ตาม สำหรับ IPv4 ต้องมี IP ที่ใช้งานได้อย่างน้อยสองที่อยู่ (ไม่นับสอง IP ที่สงวนไว้สำหรับ broadcast address และ network address) ตัวอย่างเช่น หากคุณมีเครือข่ายที่มี IP address 256 ที่อยู่ (192.168.1.0/24) และต้องการแบ่งเป็นสอง subnet ที่มี 128 IP แต่ละ subnet ให้ยืม 1 บิตจากส่วน network ซึ่งจะได้สอง subnet ดังนี้: 192.168.1.0/25 & 192.168.1.128/25
มี Subnet Cheat Sheet สำหรับ IPv4 และ IPv6 ไหม?
ใช่เลย! การคำนวณจำนวน IP address เมื่อทำ subnetting อาจค่อนข้างซับซ้อน โดยเฉพาะกับ IPv6 จึงได้รวบรวม subnet cheat sheet ฉบับครอบคลุมมาช่วยให้การทำ subnetting ง่ายขึ้น ครอบคลุมทั้ง IPv6 cheatsheet และ network cheatsheet ไว้ในที่เดียวเลย