
บทนำ: ทำไม IP Addressing และ Subnetting ยังคงเป็นทักษะสำคัญที่สุดของ Network Engineer?
ไม่ว่าเทคโนโลยีเครือข่ายจะพัฒนาไปแค่ไหน — จะเป็น SD-WAN, Cloud Networking, Software-Defined Networking หรือแม้แต่ Zero Trust Architecture — พื้นฐานทุกอย่างล้วนตั้งอยู่บน IP Addressing และ Subnetting ทั้งนั้น การเข้าใจว่า IP address ทำงานอย่างไร การแบ่ง subnet การคำนวณ network address, broadcast address, usable hosts คือทักษะที่ Network Engineer, System Admin และ IT Infrastructure ทุกคนต้องมี
สำหรับผู้ที่กำลังเตรียมสอบ CCNA หรือ CompTIA Network+ การ subnetting เป็นหัวข้อที่ออกสอบแน่นอนและมีน้ำหนักคะแนนสูง นอกจากนี้ในการทำงานจริง ไม่ว่าจะเป็นการตั้งค่า Firewall, VPN, VLAN หรือ routing ล้วนต้องใช้ความรู้ subnetting ทั้งสิ้น
บทความนี้จะสอนทุกอย่างเกี่ยวกับ IP Addressing และ Subnetting ตั้งแต่พื้นฐาน binary ไปจนถึง VLSM, IPv6, NAT/PAT และการวางแผน subnet สำหรับองค์กร พร้อมแบบฝึกหัดและเฉลยให้ฝึกทำ เหมาะสำหรับทั้งผู้เริ่มต้นและผู้ที่ต้องการทบทวนความรู้
ส่วนที่ 1: IPv4 Address Structure — โครงสร้างของ IP Address
1.1 IP Address คืออะไร?
IP Address (Internet Protocol Address) คือหมายเลขที่ใช้ระบุตัวตนของอุปกรณ์ในเครือข่าย เปรียบเสมือน “ที่อยู่บ้าน” ของอุปกรณ์แต่ละตัว ทำให้ router สามารถส่ง packet ไปถึงปลายทางได้ถูกต้อง
IPv4 address ประกอบด้วย 32 bits แบ่งเป็น 4 กลุ่ม (octets) กลุ่มละ 8 bits คั่นด้วยจุด เขียนในรูปแบบ dotted decimal notation
ตัวอย่าง: 192.168.1.100
แยกเป็น binary:
192 . 168 . 1 . 100
11000000. 10101000. 00000001. 01100100
รวม 32 bits ทั้งหมด
1.2 การแปลง Binary เป็น Decimal (และกลับกัน)
การเข้าใจ binary เป็นรากฐานของ subnetting ทั้งหมด แต่ละ bit ใน octet มีค่า (weight) ดังนี้:
ตำแหน่ง bit: 7 6 5 4 3 2 1 0
ค่า (weight): 128 64 32 16 8 4 2 1
ตัวอย่าง: แปลง 192 เป็น binary
192 = 128 + 64 + 0 + 0 + 0 + 0 + 0 + 0
= 1 1 0 0 0 0 0 0
= 11000000
ตัวอย่าง: แปลง 10101100 เป็น decimal
1*128 + 0*64 + 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 0*1
= 128 + 0 + 32 + 0 + 8 + 4 + 0 + 0
= 172
เทคนิคการจำ: จำเลขชุดนี้ให้ขึ้นใจ — 128, 64, 32, 16, 8, 4, 2, 1 (แต่ละตัวคือ 2 ยกกำลัง 7 ลงไปจนถึง 2 ยกกำลัง 0)
1.3 ส่วนประกอบของ IP Address
IP Address ทุกตัวประกอบด้วย 2 ส่วน:
- Network Portion — ระบุว่าอยู่ network (ซับเน็ต) ไหน เปรียบเสมือน “ซอย” หรือ “ถนน”
- Host Portion — ระบุว่าเป็นอุปกรณ์ตัวไหนใน network นั้น เปรียบเสมือน “บ้านเลขที่”
การแยก 2 ส่วนนี้ออกจากกัน ใช้ Subnet Mask เป็นตัวกำหนด
ส่วนที่ 2: IP Classes — ประเภทของ IP Address
2.1 Classful IP Addressing
ในอดีต IP address ถูกแบ่งเป็น 5 classes ตาม bit แรกๆ ของ address:
Class | First Octet | Default Mask | Network/Host | จำนวน Networks | จำนวน Hosts
-------|-------------|-----------------|----------------|---------------|-------------
A | 1-126 | 255.0.0.0 /8 | N.H.H.H | 126 | 16,777,214
B | 128-191 | 255.255.0.0 /16 | N.N.H.H | 16,384 | 65,534
C | 192-223 | 255.255.255.0 /24 | N.N.N.H | 2,097,152 | 254
D | 224-239 | (Multicast) | ไม่แบ่ง | - | -
E | 240-255 | (Reserved) | ไม่แบ่ง | - | -
หมายเหตุสำคัญ:
- 127.x.x.x (127.0.0.0/8) — เป็น Loopback address ไม่ได้ใช้สำหรับ network จริง (127.0.0.1 = localhost)
- 0.0.0.0 — หมายถึง “this network” หรือ default route
- 255.255.255.255 — Limited Broadcast (broadcast ไปทุกอุปกรณ์ใน local network)
- Class D (224-239) — ใช้สำหรับ multicast เช่น OSPF ใช้ 224.0.0.5
- Class E (240-255) — reserved สำหรับ experimental
ในปัจจุบัน (2026) ระบบ classful ไม่ได้ใช้จริงแล้ว เพราะ “สิ้นเปลือง” IP address มาก (องค์กรเล็กๆ ที่ต้องการ 300 hosts ต้องใช้ Class B ที่มี 65,534 hosts ซึ่งเหลือทิ้งมหาศาล) จึงเปลี่ยนมาใช้ CIDR (Classless Inter-Domain Routing) แทน
2.2 Private IP vs Public IP
IP address แบ่งเป็น 2 ประเภทหลัก:
Private IP Address — ใช้ภายในองค์กร (LAN) ไม่สามารถ route บน internet ได้ ใช้ซ้ำได้ไม่จำกัด:
Class A: 10.0.0.0 - 10.255.255.255 (10.0.0.0/8) — 16,777,216 addresses
Class B: 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) — 1,048,576 addresses
Class C: 192.168.0.0 - 192.168.255.255 (192.168.0.0/16) — 65,536 addresses
องค์กรส่วนใหญ่ในไทยใช้ 10.x.x.x หรือ 192.168.x.x สำหรับ internal network
Public IP Address — ใช้บน internet ต้องได้รับจัดสรรจาก ISP หรือ RIR (Regional Internet Registry) ไม่สามารถใช้ซ้ำได้ (unique ทั่วโลก)
Special Addresses อื่นๆ:
- 169.254.0.0/16 — APIPA (Automatic Private IP Addressing) — อุปกรณ์กำหนดให้ตัวเองเมื่อหา DHCP server ไม่ได้
- 100.64.0.0/10 — Carrier-Grade NAT (CGNAT) — ISP ใช้สำหรับ NAT ภายใน
- 198.18.0.0/15 — Benchmarking/Testing
ส่วนที่ 3: Subnet Mask — หน้ากากเครือข่าย
3.1 Subnet Mask คืออะไร?
Subnet Mask คือตัวเลข 32-bit ที่ใช้แยก network portion ออกจาก host portion ของ IP address กฎง่ายๆ คือ:
- bit ที่เป็น 1 = ส่วน Network
- bit ที่เป็น 0 = ส่วน Host
- bit 1 ต้องอยู่ทางซ้ายติดกัน bit 0 อยู่ทางขวาติดกัน (ไม่สลับกัน)
ตัวอย่าง: Subnet Mask 255.255.255.0
Binary: 11111111.11111111.11111111.00000000
|------- Network --------|-- Host -|
24 bits network 8 bits host
3.2 CIDR Notation (Classless Inter-Domain Routing)
CIDR notation คือวิธีเขียน subnet mask แบบย่อ โดยใส่ / ตามด้วยจำนวน network bits:
Subnet Mask | CIDR | Network Bits | Host Bits | Usable Hosts
--------------------|------|-------------|-----------|-------------
255.0.0.0 | /8 | 8 | 24 | 16,777,214
255.128.0.0 | /9 | 9 | 23 | 8,388,606
255.255.0.0 | /16 | 16 | 16 | 65,534
255.255.128.0 | /17 | 17 | 15 | 32,766
255.255.255.0 | /24 | 24 | 8 | 254
255.255.255.128 | /25 | 25 | 7 | 126
255.255.255.192 | /26 | 26 | 6 | 62
255.255.255.224 | /27 | 27 | 5 | 30
255.255.255.240 | /28 | 28 | 4 | 14
255.255.255.248 | /29 | 29 | 3 | 6
255.255.255.252 | /30 | 30 | 2 | 2
255.255.255.254 | /31 | 31 | 1 | 2 (point-to-point)
255.255.255.255 | /32 | 32 | 0 | 1 (host route)
สูตรคำนวณจำนวน Usable Hosts: 2^(จำนวน host bits) – 2
ลบ 2 เพราะต้องเอา Network Address (host bits ทั้งหมดเป็น 0) และ Broadcast Address (host bits ทั้งหมดเป็น 1) ออก ยกเว้น /31 ที่ใช้สำหรับ point-to-point link (RFC 3021) ไม่ต้องลบ
3.3 การ AND Operation หา Network Address
เมื่อต้องการหา Network Address ให้ทำ AND operation ระหว่าง IP Address กับ Subnet Mask:
ตัวอย่าง: IP 192.168.10.130/26
IP Address: 192.168.10.130 = 11000000.10101000.00001010.10000010
Subnet Mask: 255.255.255.192 = 11111111.11111111.11111111.11000000
-----------------------------------------------
AND Result: 192.168.10.128 = 11000000.10101000.00001010.10000000
Network Address = 192.168.10.128
สูตร AND:
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
ส่วนที่ 4: Subnetting Calculation — คำนวณ Subnet ทีละขั้น
4.1 ขั้นตอนการ Subnetting
เมื่อได้รับ IP address พร้อม subnet mask สามารถหาข้อมูลสำคัญได้ดังนี้:
ตัวอย่างที่ 1: 192.168.1.50/24
ขั้นที่ 1: หา Network Address
IP: 192.168.1.50
Mask: 255.255.255.0 (/24)
AND: 192.168.1.0 ← Network Address
ขั้นที่ 2: หา Broadcast Address
Host bits ทั้งหมดเป็น 1:
192.168.1.255 ← Broadcast Address
ขั้นที่ 3: หา First Usable Host
Network Address + 1:
192.168.1.1 ← First Host
ขั้นที่ 4: หา Last Usable Host
Broadcast Address - 1:
192.168.1.254 ← Last Host
ขั้นที่ 5: จำนวน Usable Hosts
2^8 - 2 = 256 - 2 = 254 hosts
สรุป:
Network: 192.168.1.0/24
First Host: 192.168.1.1
Last Host: 192.168.1.254
Broadcast: 192.168.1.255
Hosts: 254
ตัวอย่างที่ 2: 10.50.100.200/20
ขั้นที่ 1: หา Subnet Mask
/20 = 20 network bits
11111111.11111111.11110000.00000000
= 255.255.240.0
ขั้นที่ 2: หา Block Size
octet ที่ 3 ของ mask = 240
Block size = 256 - 240 = 16
(ทุก subnet จะเพิ่มทีละ 16 ใน octet ที่ 3)
ขั้นที่ 3: หา Network Address
IP octet ที่ 3 = 100
100 / 16 = 6.25 → ปัดลง = 6
6 * 16 = 96
Network Address = 10.50.96.0
ขั้นที่ 4: หา Broadcast Address
Network Address ถัดไป = 10.50.112.0
Broadcast = 10.50.112.0 - 1 = 10.50.111.255
ขั้นที่ 5: หา Usable Range
First Host: 10.50.96.1
Last Host: 10.50.111.254
ขั้นที่ 6: จำนวน Usable Hosts
Host bits = 32 - 20 = 12
2^12 - 2 = 4,096 - 2 = 4,094 hosts
สรุป:
Network: 10.50.96.0/20
Mask: 255.255.240.0
First Host: 10.50.96.1
Last Host: 10.50.111.254
Broadcast: 10.50.111.255
Hosts: 4,094
ตัวอย่างที่ 3: 172.16.45.130/27
ขั้นที่ 1: Subnet Mask
/27 = 255.255.255.224
ขั้นที่ 2: Block Size
256 - 224 = 32
ขั้นที่ 3: Network Address
octet ที่ 4 = 130
130 / 32 = 4.0625 → ปัดลง = 4
4 * 32 = 128
Network Address = 172.16.45.128
ขั้นที่ 4: Broadcast Address
128 + 32 - 1 = 159
Broadcast = 172.16.45.159
ขั้นที่ 5: Usable Range
First Host: 172.16.45.129
Last Host: 172.16.45.158
ขั้นที่ 6: Hosts
Host bits = 32 - 27 = 5
2^5 - 2 = 32 - 2 = 30 hosts
สรุป:
Network: 172.16.45.128/27
Mask: 255.255.255.224
First Host: 172.16.45.129
Last Host: 172.16.45.158
Broadcast: 172.16.45.159
Hosts: 30
4.2 เทคนิค Block Size Method (วิธีเร็ว)
วิธีที่เร็วที่สุดในการ subnet คือ Block Size Method:
- หา Block Size = 256 – subnet mask value ของ interesting octet
- หาร IP ของ interesting octet ด้วย Block Size แล้วปัดลง คูณกลับ ได้ Network Address
- Network Address + Block Size – 1 = Broadcast Address
ตัวอย่าง: 192.168.5.200/26
Mask /26 = 255.255.255.192
Interesting octet = 4th (192)
Block Size = 256 - 192 = 64
Subnets ที่เป็นไปได้:
192.168.5.0 (0*64)
192.168.5.64 (1*64)
192.168.5.128 (2*64)
192.168.5.192 (3*64)
IP .200 อยู่ในช่วง 192-255
→ Network = 192.168.5.192
→ Broadcast = 192.168.5.192 + 64 - 1 = 192.168.5.255
→ Usable: 192.168.5.193 - 192.168.5.254 (62 hosts)
ส่วนที่ 5: VLSM — Variable Length Subnet Masking
5.1 VLSM คืออะไร?
VLSM (Variable Length Subnet Masking) คือเทคนิคการแบ่ง subnet โดยใช้ subnet mask ขนาดต่างกันสำหรับแต่ละ subnet ซึ่งตรงข้ามกับ FLSM (Fixed Length Subnet Masking) ที่ใช้ mask เดียวกันทุก subnet
ทำไมต้องใช้ VLSM? เพราะในองค์กรจริง แต่ละแผนกมีจำนวนอุปกรณ์ไม่เท่ากัน:
- สำนักงานใหญ่: 200 hosts
- สาขา A: 50 hosts
- สาขา B: 20 hosts
- WAN link: 2 hosts (point-to-point)
ถ้าใช้ FLSM (/24 เท่ากันหมด) จะเหลือ IP ทิ้งมหาศาล VLSM ช่วยประหยัดโดยให้แต่ละ subnet มี mask ที่ “พอดี” กับจำนวน hosts
5.2 ขั้นตอนการทำ VLSM
กฎสำคัญ: เริ่มจาก subnet ที่ต้องการ hosts มากที่สุดก่อน แล้วไล่ลงมา
ตัวอย่าง: มี network 192.168.10.0/24 ต้องแบ่งให้:
- LAN A: 100 hosts
- LAN B: 50 hosts
- LAN C: 25 hosts
- LAN D: 10 hosts
- WAN 1: 2 hosts
- WAN 2: 2 hosts
เรียงจากมากไปน้อย: 100, 50, 25, 10, 2, 2
1. LAN A (100 hosts):
ต้องการ: 2^n - 2 >= 100 → n=7 → 2^7-2=126 → /25 (255.255.255.128)
Network: 192.168.10.0/25
Usable: 192.168.10.1 - 192.168.10.126
Broadcast: 192.168.10.127
ที่อยู่ถัดไป: 192.168.10.128
2. LAN B (50 hosts):
ต้องการ: 2^n - 2 >= 50 → n=6 → 2^6-2=62 → /26 (255.255.255.192)
Network: 192.168.10.128/26
Usable: 192.168.10.129 - 192.168.10.190
Broadcast: 192.168.10.191
ที่อยู่ถัดไป: 192.168.10.192
3. LAN C (25 hosts):
ต้องการ: 2^n - 2 >= 25 → n=5 → 2^5-2=30 → /27 (255.255.255.224)
Network: 192.168.10.192/27
Usable: 192.168.10.193 - 192.168.10.222
Broadcast: 192.168.10.223
ที่อยู่ถัดไป: 192.168.10.224
4. LAN D (10 hosts):
ต้องการ: 2^n - 2 >= 10 → n=4 → 2^4-2=14 → /28 (255.255.255.240)
Network: 192.168.10.224/28
Usable: 192.168.10.225 - 192.168.10.238
Broadcast: 192.168.10.239
ที่อยู่ถัดไป: 192.168.10.240
5. WAN 1 (2 hosts):
ต้องการ: /30 (255.255.255.252)
Network: 192.168.10.240/30
Usable: 192.168.10.241 - 192.168.10.242
Broadcast: 192.168.10.243
ที่อยู่ถัดไป: 192.168.10.244
6. WAN 2 (2 hosts):
ต้องการ: /30 (255.255.255.252)
Network: 192.168.10.244/30
Usable: 192.168.10.245 - 192.168.10.246
Broadcast: 192.168.10.247
เหลือ IP ว่าง: 192.168.10.248 - 192.168.10.255 (สำรองไว้ขยายอนาคต)
จะเห็นว่า VLSM ทำให้ใช้ /24 เดียว (256 addresses) แบ่งได้ถึง 6 subnets โดยเหลือ IP ทิ้งน้อยมาก
ส่วนที่ 6: Supernetting / Route Summarization
6.1 Supernetting คืออะไร?
Supernetting (หรือ Route Summarization / Route Aggregation) คือการรวม network เล็กๆ หลายตัวเข้าเป็น network ใหญ่ตัวเดียว เป็นสิ่งตรงข้ามกับ subnetting ใช้เพื่อลดจำนวน routes ใน routing table ทำให้ router ทำงานเร็วขึ้น
6.2 วิธีคำนวณ Summary Route
ตัวอย่าง: ต้องการรวม 4 networks ต่อไปนี้:
192.168.4.0/24
192.168.5.0/24
192.168.6.0/24
192.168.7.0/24
ขั้นที่ 1: เขียน octet ที่ต่างกัน (octet 3) เป็น binary
4 = 00000100
5 = 00000101
6 = 00000110
7 = 00000111
ขั้นที่ 2: หา common bits (bits ที่เหมือนกันทุกตัว)
00000100
00000101
00000110
00000111
------
000001xx ← 6 bits เหมือนกัน, 2 bits ต่างกัน
ขั้นที่ 3: สร้าง Summary Route
Common bits octet 3: 000001 00 = 4
Prefix length = 16 (octet 1-2) + 6 (common bits) = /22
Summary Route: 192.168.4.0/22
Mask: 255.255.252.0
6.3 ข้อควรระวัง
Summarization อาจรวม network ที่ไม่ต้องการเข้ามาด้วย ต้องตรวจสอบให้ดี ตัวอย่างเช่น 192.168.4.0/22 จะรวมทั้ง .4, .5, .6, .7 ซึ่งพอดี แต่ถ้ามีแค่ .4 กับ .6 การ summarize เป็น /22 จะรวม .5 และ .7 ที่อาจไม่ใช่ของเราเข้ามาด้วย
ส่วนที่ 7: IPv6 — อินเทอร์เน็ตโปรโตคอลรุ่นใหม่
7.1 ทำไมต้อง IPv6?
IPv4 มี address space ทั้งหมดเพียง 2^32 = 4,294,967,296 addresses (ประมาณ 4.3 พันล้าน) ซึ่ง หมดแล้วตั้งแต่ปี 2011 (IANA), ปี 2019 (RIPE NCC สำหรับยุโรป) แม้ว่า NAT จะช่วยยืดอายุ IPv4 ได้ แต่ในระยะยาว IPv6 คือคำตอบ
IPv6 มี address space = 2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses (ประมาณ 340 undecillion หรือ 3.4 x 10^38) ซึ่ง “ไม่มีวันหมด” ในทางปฏิบัติ
7.2 รูปแบบ IPv6 Address
IPv6 address มี 128 bits เขียนเป็น 8 groups ของ 4 hexadecimal digits คั่นด้วย colon (:)
เต็มรูปแบบ:
2001:0db8:0000:0000:0000:0000:0000:0001
กฎการย่อ:
1. ตัด leading zeros ในแต่ละ group ได้
2001:db8:0:0:0:0:0:1
2. แทนที่ groups ที่เป็น 0 ติดกันด้วย :: (ใช้ได้ครั้งเดียว)
2001:db8::1
ตัวอย่างอื่น:
fe80:0000:0000:0000:0211:22ff:fe33:4455
= fe80::211:22ff:fe33:4455
ff02:0000:0000:0000:0000:0000:0000:0001
= ff02::1
7.3 ประเภทของ IPv6 Address
- Global Unicast (2000::/3) — เทียบเท่า public IPv4 route ได้บน internet เริ่มด้วย 2 หรือ 3
- Link-Local (fe80::/10) — ใช้ภายใน link/segment เดียว ไม่ route ข้าม router ทุก interface ต้องมี link-local address (เหมือน APIPA ของ IPv4 แต่มีประโยชน์กว่ามาก)
- Unique Local (fc00::/7, fd00::/8) — เทียบเท่า private IPv4 (10.x, 172.16.x, 192.168.x) ใช้ภายในองค์กร
- Multicast (ff00::/8) — ส่งไปยังกลุ่มอุปกรณ์ ไม่มี broadcast ใน IPv6 (ใช้ multicast แทน)
- Loopback (::1/128) — เทียบเท่า 127.0.0.1 ใน IPv4
- Unspecified (::/128) — เทียบเท่า 0.0.0.0 ใน IPv4
7.4 EUI-64 — สร้าง Interface ID จาก MAC Address
EUI-64 (Extended Unique Identifier) เป็นวิธีสร้าง 64-bit interface ID จาก 48-bit MAC address:
ขั้นตอน:
1. เอา MAC address: 00:1A:2B:3C:4D:5E
2. แบ่งครึ่ง: 00:1A:2B | 3C:4D:5E
3. แทรก FF:FE ตรงกลาง: 00:1A:2B:FF:FE:3C:4D:5E
4. Flip bit ที่ 7 ของ byte แรก (U/L bit):
00 = 00000000 → flip bit 7 → 00000010 = 02
5. ผลลัพธ์: 02:1A:2B:FF:FE:3C:4D:5E
เขียนแบบ IPv6: 021a:2bff:fe3c:4d5e
ดังนั้นถ้า prefix คือ 2001:db8:1::/64
IPv6 address = 2001:db8:1::021a:2bff:fe3c:4d5e
หมายเหตุ: ปัจจุบัน EUI-64 ไม่ค่อยนิยมใช้แล้ว เพราะมีปัญหา privacy (สามารถ track อุปกรณ์ได้จาก MAC) จึงมี SLAAC Privacy Extensions (RFC 4941) ที่ใช้ random interface ID แทน
7.5 IPv6 Subnetting
IPv6 subnetting ง่ายกว่า IPv4 มาก เพราะมาตรฐานกำหนดว่า:
- ISP ได้รับจัดสรร /32 หรือ /48
- องค์กร (customer) ได้รับ /48 จาก ISP
- แต่ละ subnet ใช้ /64 (มาตรฐาน) ดังนั้น interface ID จะมี 64 bits เสมอ
ตัวอย่าง: องค์กรได้รับ 2001:db8:abcd::/48
Global Routing Prefix: 2001:db8:abcd (48 bits)
Subnet ID: 16 bits (bit 49-64)
Interface ID: 64 bits (bit 65-128)
จำนวน subnets ที่สร้างได้ = 2^16 = 65,536 subnets
จำนวน hosts ต่อ subnet = 2^64 = 18,446,744,073,709,551,616 hosts (ไม่มีทางหมด!)
การแบ่ง subnet:
2001:db8:abcd:0000::/64 → Subnet 0 (Office Floor 1)
2001:db8:abcd:0001::/64 → Subnet 1 (Office Floor 2)
2001:db8:abcd:0002::/64 → Subnet 2 (Server VLAN)
2001:db8:abcd:0003::/64 → Subnet 3 (Guest WiFi)
...
2001:db8:abcd:ffff::/64 → Subnet 65535
ส่วนที่ 8: NAT และ PAT — การแปลง IP Address
8.1 NAT คืออะไร?
NAT (Network Address Translation) คือการแปลง IP address จาก private เป็น public (และกลับกัน) เพื่อให้อุปกรณ์ใน internal network สามารถเข้าถึง internet ได้ แม้จะมี public IP แค่ตัวเดียว
8.2 ประเภทของ NAT
Static NAT (One-to-One)
- map private IP 1 ตัวเข้ากับ public IP 1 ตัว ถาวร
- ใช้สำหรับ server ที่ต้องการให้เข้าถึงจากภายนอก (web server, mail server)
- ตัวอย่าง: 192.168.1.10 → 203.150.100.10 (เสมอ)
Dynamic NAT (Many-to-Many)
- map private IP เข้ากับ pool ของ public IPs แบบ dynamic
- ถ้า pool หมด client ใหม่จะเข้า internet ไม่ได้
- ไม่ค่อยใช้ในปัจจุบัน เพราะ public IP มีจำกัด
PAT / NAT Overload (Many-to-One)
- map private IP หลายตัวเข้ากับ public IP ตัวเดียว โดยใช้ port number ในการแยก
- นี่คือสิ่งที่ใช้จริงในทุกองค์กรและทุกบ้าน
- router (หรือ firewall) จะเก็บ NAT table ที่ map internal IP:port กับ external IP:port
PAT Example:
Internal External (Public IP: 203.150.100.1)
192.168.1.10:50001 → 203.150.100.1:40001 → google.com:443
192.168.1.20:50002 → 203.150.100.1:40002 → facebook.com:443
192.168.1.30:50003 → 203.150.100.1:40003 → youtube.com:443
ใช้ public IP เพียง 1 ตัว แต่รองรับ internal hosts ได้หลายพันตัว
(เพราะ port number มี 65,535 ports ให้ใช้)
8.3 Port Forwarding
Port Forwarding คือการกำหนดให้ traffic ที่เข้ามายัง public IP port หนึ่ง ส่งต่อไปยัง private IP port ที่กำหนด:
ตัวอย่าง:
Public IP 203.150.100.1:80 → 192.168.1.100:80 (Web Server)
Public IP 203.150.100.1:443 → 192.168.1.100:443 (HTTPS)
Public IP 203.150.100.1:25 → 192.168.1.200:25 (Mail Server)
Public IP 203.150.100.1:3389 → 192.168.1.50:3389 (RDP)
ส่วนที่ 9: DHCP Relay กับ Subnetting
9.1 ปัญหา DHCP กับ Multi-Subnet
DHCP ใช้ broadcast ในการค้นหา server แต่ broadcast ไม่ข้าม router/subnet ดังนั้นถ้ามีหลาย subnet จะมีปัญหา:
- ทางเลือก 1: ตั้ง DHCP server ในทุก subnet (สิ้นเปลือง ดูแลยาก)
- ทางเลือก 2: ใช้ DHCP Relay Agent (ip helper-address) ที่ router ของแต่ละ subnet เพื่อ forward DHCP request ไปยัง DHCP server กลาง
9.2 การตั้งค่า DHCP Relay บน Cisco Router
! DHCP Server อยู่ที่ 10.0.0.10
! ต้องตั้ง ip helper-address ที่ default gateway ของทุก subnet
interface GigabitEthernet0/1
description VLAN 10 - Office
ip address 192.168.10.1 255.255.255.0
ip helper-address 10.0.0.10
interface GigabitEthernet0/2
description VLAN 20 - Engineering
ip address 192.168.20.1 255.255.255.0
ip helper-address 10.0.0.10
interface GigabitEthernet0/3
description VLAN 30 - Guest
ip address 192.168.30.1 255.255.255.0
ip helper-address 10.0.0.10
9.3 DHCP Scope Planning สำหรับ Multi-Subnet
DHCP Server Config (Windows Server / Linux ISC DHCP):
Scope: VLAN 10 - Office
Network: 192.168.10.0/24
Range: 192.168.10.50 - 192.168.10.200
Gateway: 192.168.10.1
DNS: 10.0.0.10, 8.8.8.8
Reserved: 192.168.10.1-49 (Infrastructure)
192.168.10.201-254 (Printers, static devices)
Scope: VLAN 20 - Engineering
Network: 192.168.20.0/24
Range: 192.168.20.50 - 192.168.20.200
Gateway: 192.168.20.1
DNS: 10.0.0.10, 8.8.8.8
Scope: VLAN 30 - Guest
Network: 192.168.30.0/24
Range: 192.168.30.10 - 192.168.30.250
Gateway: 192.168.30.1
DNS: 8.8.8.8, 1.1.1.1
Lease Time: 4 hours (สั้นเพราะ guest เข้าออกบ่อย)
ส่วนที่ 10: Subnet Planning สำหรับองค์กร
10.1 หลักการวางแผน Subnet
การวางแผน IP addressing scheme สำหรับองค์กร ต้องคำนึงถึง:
- จำนวนสาขา (sites) — กี่สาขา แต่ละสาขาต้องการกี่ subnets
- จำนวน VLANs — แต่ละสาขามีกี่ VLAN (Office, Server, Guest, VoIP, IoT, Management)
- จำนวน hosts per subnet — ปัจจุบันและอนาคต (ควรเผื่อ 50-100%)
- Summarization — ออกแบบให้ summarize ได้ง่าย (ใช้ contiguous address blocks ต่อ site)
- Standards — กำหนดมาตรฐาน เช่น gateway ใช้ .1 เสมอ, DNS server ใช้ .10 เสมอ
10.2 ตัวอย่างการออกแบบ IP Scheme สำหรับองค์กร 3 สาขา
Private IP Block: 10.0.0.0/8
การจัดสรร:
10.SITE.VLAN.HOST
Site 1 (HQ): 10.1.x.x/16
Site 2 (Branch A): 10.2.x.x/16
Site 3 (Branch B): 10.3.x.x/16
VLANs per site (ใช้ VLAN ID เป็น octet ที่ 3):
VLAN 10 - Office: 10.x.10.0/24 (254 hosts)
VLAN 20 - Engineering: 10.x.20.0/24 (254 hosts)
VLAN 30 - Server: 10.x.30.0/24 (254 hosts)
VLAN 40 - VoIP: 10.x.40.0/24 (254 hosts)
VLAN 50 - Guest WiFi: 10.x.50.0/24 (254 hosts)
VLAN 99 - Management: 10.x.99.0/24 (254 hosts)
VLAN 100 - IoT: 10.x.100.0/24 (254 hosts)
WAN Links (point-to-point):
10.255.0.0/30 — HQ to Branch A
10.255.0.4/30 — HQ to Branch B
10.255.0.8/30 — Branch A to Branch B
ตัวอย่าง HQ (Site 1):
Office: 10.1.10.0/24 (Gateway: 10.1.10.1)
Engineering: 10.1.20.0/24 (Gateway: 10.1.20.1)
Server: 10.1.30.0/24 (Gateway: 10.1.30.1)
VoIP: 10.1.40.0/24 (Gateway: 10.1.40.1)
Guest: 10.1.50.0/24 (Gateway: 10.1.50.1)
Management: 10.1.99.0/24 (Gateway: 10.1.99.1)
Summarization:
HQ ทั้งหมด summarize เป็น: 10.1.0.0/16
Branch A ทั้งหมด: 10.2.0.0/16
Branch B ทั้งหมด: 10.3.0.0/16
10.3 IP Address Documentation
สิ่งที่ต้องมีในเอกสาร IP planning:
- IP Addressing Table — ตารางรวม subnet ทั้งหมด พร้อม VLAN ID, gateway, mask, DHCP range
- IP Assignment Sheet — ตารางบันทึกว่า IP ไหนใช้กับอุปกรณ์อะไร (สำหรับ static IPs)
- Network Diagram — แผนผังเครือข่ายที่แสดง subnet, VLAN, router interfaces
- DHCP Scope Summary — สรุป scope ของ DHCP server ทั้งหมด
ควรเก็บเอกสารเหล่านี้ใน version control (Git) หรือ IPAM tool เช่น phpIPAM, NetBox, Infoblox
ส่วนที่ 11: Subnet Calculator Tools
11.1 Online Tools
- subnet-calculator.com — ใช้ง่าย แสดงผลครบ
- calculator.net/ip-subnet-calculator — มี VLSM calculator ด้วย
- jodies.de/ipcalc — แสดง binary ให้ดูเข้าใจง่าย
- Visual Subnet Calculator (davidc.net) — แสดงเป็น visual blocks สวยงาม
11.2 CLI Tools
# Linux: ipcalc
sudo apt install ipcalc
ipcalc 192.168.10.0/24
ipcalc 10.50.100.200/20
# Linux: sipcalc (more detailed)
sudo apt install sipcalc
sipcalc 192.168.10.0/24
sipcalc 2001:db8:abcd::/48
# Python: ipaddress module (built-in)
python3 -c "
import ipaddress
net = ipaddress.ip_network('192.168.10.0/24')
print(f'Network: {net.network_address}')
print(f'Broadcast: {net.broadcast_address}')
print(f'Mask: {net.netmask}')
print(f'Hosts: {net.num_addresses - 2}')
print(f'First: {list(net.hosts())[0]}')
print(f'Last: {list(net.hosts())[-1]}')
"
11.3 IPAM (IP Address Management) Tools
สำหรับองค์กรที่มี IP จำนวนมาก ควรใช้ IPAM tool:
- phpIPAM — open-source, web-based, ใช้ง่าย ฟรี
- NetBox — open-source (by DigitalOcean), ครบทั้ง IPAM + DCIM (Data Center Infrastructure Management)
- Infoblox — enterprise solution, รวม DNS + DHCP + IPAM (DDI)
- SolarWinds IPAM — integrated กับ SolarWinds ecosystem
- BlueCat — enterprise DDI solution
ส่วนที่ 12: แบบฝึกหัด Subnetting พร้อมเฉลย
โจทย์ที่ 1: Basic Subnetting
โจทย์: จากข้อมูลต่อไปนี้ หา Network Address, Broadcast, First Host, Last Host, จำนวน Hosts
a) 10.20.30.100/16
b) 172.16.100.50/22
c) 192.168.50.200/28
เฉลย:
a) 10.20.30.100/16
Mask: 255.255.0.0
Network: 10.20.0.0
Broadcast: 10.20.255.255
First Host: 10.20.0.1
Last Host: 10.20.255.254
Hosts: 65,534
b) 172.16.100.50/22
Mask: 255.255.252.0
Block Size: 256-252 = 4
100/4 = 25 → 25*4 = 100
Network: 172.16.100.0
Broadcast: 172.16.103.255
First Host: 172.16.100.1
Last Host: 172.16.103.254
Hosts: 1,022
c) 192.168.50.200/28
Mask: 255.255.255.240
Block Size: 256-240 = 16
200/16 = 12.5 → 12*16 = 192
Network: 192.168.50.192
Broadcast: 192.168.50.207
First Host: 192.168.50.193
Last Host: 192.168.50.206
Hosts: 14
โจทย์ที่ 2: VLSM Design
โจทย์: มี network 172.16.0.0/24 ต้องแบ่งให้:
- Sales: 60 hosts
- HR: 30 hosts
- IT: 12 hosts
- WAN: 2 hosts
เฉลย (เรียงจากมากไปน้อย):
1. Sales (60 hosts):
2^n-2 >= 60 → n=6 → /26 (64 addresses, 62 usable)
Network: 172.16.0.0/26
Usable: 172.16.0.1 - 172.16.0.62
Broadcast: 172.16.0.63
2. HR (30 hosts):
2^n-2 >= 30 → n=5 → /27 (32 addresses, 30 usable)
Network: 172.16.0.64/27
Usable: 172.16.0.65 - 172.16.0.94
Broadcast: 172.16.0.95
3. IT (12 hosts):
2^n-2 >= 12 → n=4 → /28 (16 addresses, 14 usable)
Network: 172.16.0.96/28
Usable: 172.16.0.97 - 172.16.0.110
Broadcast: 172.16.0.111
4. WAN (2 hosts):
/30 (4 addresses, 2 usable)
Network: 172.16.0.112/30
Usable: 172.16.0.113 - 172.16.0.114
Broadcast: 172.16.0.115
เหลือ: 172.16.0.116 - 172.16.0.255 (140 addresses สำรอง)
โจทย์ที่ 3: Supernetting
โจทย์: หา Summary Route ของ networks ต่อไปนี้:
10.10.16.0/24
10.10.17.0/24
10.10.18.0/24
10.10.19.0/24
10.10.20.0/24
10.10.21.0/24
10.10.22.0/24
10.10.23.0/24
เฉลย:
16 = 00010000
17 = 00010001
18 = 00010010
19 = 00010011
20 = 00010100
21 = 00010101
22 = 00010110
23 = 00010111
Common bits: 00010 (5 bits เหมือนกัน)
Prefix = 16 + 5 = /21
Summary Route: 10.10.16.0/21 (255.255.248.0)
ครอบคลุม: 10.10.16.0 - 10.10.23.255 (2,048 addresses)
โจทย์ที่ 4: จาก Subnet Mask หา CIDR (และกลับกัน)
โจทย์: แปลงค่าต่อไปนี้
a) 255.255.255.128 = ?
b) 255.255.240.0 = ?
c) /19 = ?
d) /29 = ?
เฉลย:
a) 255.255.255.128
128 = 10000000 → 1 bit
/24 + 1 = /25
b) 255.255.240.0
240 = 11110000 → 4 bits
/16 + 4 = /20
c) /19 = 16 + 3 network bits in 3rd octet
11100000 = 224
= 255.255.224.0
d) /29 = 24 + 5 network bits in 4th octet
11111000 = 248
= 255.255.255.248
ส่วนที่ 13: Quick Reference — ตารางอ้างอิงฉบับเร็ว
13.1 Subnet Mask Cheat Sheet (Class C)
CIDR | Mask | Block | Subnets | Hosts/Subnet
-----|-------------------|-------|---------|-------------
/24 | 255.255.255.0 | 256 | 1 | 254
/25 | 255.255.255.128 | 128 | 2 | 126
/26 | 255.255.255.192 | 64 | 4 | 62
/27 | 255.255.255.224 | 32 | 8 | 30
/28 | 255.255.255.240 | 16 | 16 | 14
/29 | 255.255.255.248 | 8 | 32 | 6
/30 | 255.255.255.252 | 4 | 64 | 2
/31 | 255.255.255.254 | 2 | 128 | 2 (P2P)
/32 | 255.255.255.255 | 1 | 256 | 1 (host)
13.2 Powers of 2
2^0 = 1 2^8 = 256 2^16 = 65,536
2^1 = 2 2^9 = 512 2^17 = 131,072
2^2 = 4 2^10 = 1,024 2^18 = 262,144
2^3 = 8 2^11 = 2,048 2^19 = 524,288
2^4 = 16 2^12 = 4,096 2^20 = 1,048,576
2^5 = 32 2^13 = 8,192 2^21 = 2,097,152
2^6 = 64 2^14 = 16,384 2^22 = 4,194,304
2^7 = 128 2^15 = 32,768 2^23 = 8,388,608
สรุป
IP Addressing และ Subnetting เป็นพื้นฐานที่สำคัญที่สุดของ networking ทุกอย่างที่เกี่ยวกับเครือข่ายตั้งอยู่บนพื้นฐานนี้ ไม่ว่าจะเป็นการตั้งค่า Firewall, VPN, VLAN, routing, DNS/DHCP หรือแม้แต่ cloud networking
สิ่งที่ควรจำให้ขึ้นใจ:
- Binary weights: 128, 64, 32, 16, 8, 4, 2, 1
- Block Size: 256 – mask value ของ interesting octet
- Usable Hosts: 2^(host bits) – 2
- VLSM: เรียงจากมากไปน้อย แล้วจัดสรรทีละ subnet
- IPv6 /64: ทุก LAN subnet ใช้ /64 เสมอ
การ subnet ต้อง ฝึกทำมือ ให้คล่อง ไม่ใช่แค่อ่านเข้าใจ ลองทำแบบฝึกหัดในบทความนี้ แล้วหาโจทย์เพิ่มเติมมาฝึก เมื่อคล่องแล้วจะสามารถคำนวณ subnet ได้ภายในไม่กี่วินาที ซึ่งเป็นทักษะที่ Network Engineer ทุกคนต้องมี
หากสนใจศึกษาเพิ่มเติมเกี่ยวกับ CCNA, Networking, DNS/DHCP และ Load Balancer/HA สามารถอ่านบทความเพิ่มเติมได้ที่ siamlancard.com