Lab 4 · มิถุนายน 2569

Creating and managing VLANs on Cisco Switches

ตัดสวิตช์ตัวเดียวให้กลายเป็นหลายวง LAN · ส่งหลาย VLAN ข้ามสายเส้นเดียวด้วย 802.1Q Trunk · แล้วให้ VLAN คุยข้ามกันด้วย Router-on-a-Stick — ทุกคำสั่งในหน้านี้แทนค่า x = 3, y = 128 ให้แล้ว คัดลอกไปวางได้ทันที

อ่าน ~26 นาที ทำจริง ~2.5 ชม. ออกสอบข้อ 3 (10 คะแนน)
สรุปแลปนี้ใน 30 วินาที

ทำอะไร — ① ต่อ PC 4 เครื่องเข้าสวิตช์ตัวเดียวแล้ว ping ให้ผ่านหมดก่อน ② สั่ง vlan + switchport access vlan ให้ PC แยกเป็น 2 วง แล้วดูว่าping ข้าม VLAN ไม่ผ่าน ③ ขยายเป็น 2 สวิตช์ต่อกันสองสาย (VLAN ละเส้น) ④ ดึงออกเหลือเส้นเดียวแล้วทำเป็น Trunk 802.1Q พร้อมดักจับ tag ด้วย Wireshark ⑤ ใส่ router ทำ subinterface ให้ VLAN คุยข้ามกันได้

ได้อะไร — ชุดคำสั่งครบทุกบรรทัดที่ข้อสอบข้อ 3 ต้องใช้ และรู้ว่าผลที่ "ping ไม่ผ่าน" คือคำตอบที่ถูก ไม่ใช่ความผิดพลาด

ออกสอบตรงไหน — ข้อ 3 (10 คะแนน) "ตั้ง VLAN ตามรูป ให้ ping กันได้ + ส่ง show vlan ของทุก switch" → สคริปต์พร้อมก็อปอยู่ที่ §4.16 · โทโพโลยีที่ต้องสร้างคือ รูปที่ 9

4.1เป้าหมายและสิ่งที่ต้องส่ง

#สิ่งที่ใบแลปสั่ง (หัวข้อ 3 การทดลอง)อยู่ที่ไหน
1ต่อเน็ตเวิร์คตามรูปที่ 7 ตั้ง IP ให้ PC ทุกเครื่อง ยังไม่ต้องตั้ง VLAN → ping ระหว่าง PC → บันทึกผล + show vlan§4.7
2กำหนด VLAN ให้แต่ละพอร์ต — PC1 กับ PC2 อยู่ VLAN เดียวกัน · PC3 กับ PC4 อยู่ VLAN เดียวกัน (รูปที่ 8) → ping ใหม่ + show vlan + อธิบายสาเหตุ§4.7
3Clear VLAN ทั้งหมดออกเพื่อเริ่มต้นใหม่§4.7
4ต่อใหม่ตามรูปที่ 9 (2 สวิตช์ · เชื่อมกัน 2 เส้น) ตั้ง IP ยังไม่ตั้ง VLAN → ping + show vlan§4.8
5กำหนด VLAN ให้ PC แต่ละเครื่องอยู่ VLAN เดียวกันตามรูปที่ 9 โดยมีสาย LAN 2 เส้น → ping + show vlan + อธิบาย§4.8
6ดึงสายออกหนึ่งเส้น แล้วทำเส้นที่เหลือเป็น Trunk แบบ VLAN Tag + ใช้ Wireshark ตรวจจับ IEEE 802.1Q§4.9
7อ้างอิงรูปที่ 10 ต่อ เร้าเตอร์ แล้ว config ให้แต่ละ VLAN สื่อสารกันได้ (มองเป็นคนละเครือข่าย) → ping + Wireshark§4.10
8คำถามท้ายการทดลอง — ① 1 สวิตช์ > 3 VLAN มีทั้งแบบ tag และ non-tag ② router รองรับ > 3 VLAN§4.12
ค่าที่ต้องใช้จริง — แทนรหัส 673040128-3 ให้แล้ว

ใบแลปเขียนว่า "PC ในการทดลองนี้ทุกเครื่องอยู่ในเน็ตเวิร์ควงเดียวกัน 192.x.y.hostid และมี subnet mask เป็น 255.255.255.0 (คลาส C)"

ตัวแปรในใบแลปค่าของเรามาจากไหน
x3เลขหลังขีดของรหัส 673040128-3
y128สามตัวก่อนขีด = 128 → 128 mod 254 = 128
เครือข่ายฐาน192.3.128.0/24192.x.y.0 · mask 255.255.255.0
หมายเลข VLAN28 (ของ Pisit)ใบแลป: "ใช้เลข 2 หลักของนักศึกษาก่อนขีดของทั้ง 2 คน" → 673040128-3

ใบแลปเขียนต่อว่า "จากนั้นจึงใช้เลขอะไรก็ได้ที่มีมากกว่า 2 วง VLAN" → หน้านี้จึงใช้ VLAN 10 / 20 (และ 30 / 40 ตอนทำ router) เป็นตัวอย่างหลัก เพราะอ่านง่ายและตรงกับรูปที่ 2, 4, 6 ของใบแลป · ถ้า TA บังคับให้ใช้เลขตามรหัส ให้เปลี่ยน 10 → 28 และ 20 → เลข 2 หลักของเพื่อนคู่แลป คำสั่งอื่นเหมือนเดิมทุกบรรทัด

ตาราง IP ที่ใช้ตลอดหน้านี้ ส่วนขยาย — เลือกเลข host เอง ใบแลปไม่ได้กำหนด
เครื่องIP (ข้อ 1–6 · วงเดียวกันหมด)VLAN ในรูปที่ 8VLAN ในรูปที่ 9
PC1192.3.128.11 /24VLAN 10VLAN 10 (PC1_VLAN_X)
PC2192.3.128.12 /24VLAN 10VLAN 20 (PC2_VLAN_Y)
PC3192.3.128.13 /24VLAN 20VLAN 10 (PC3_VLAN_X)
PC4192.3.128.14 /24VLAN 20VLAN 20 (PC4_VLAN_Y)
Wireshark (VPCS)192.3.128.100 /24—ต่อกับ Switch1

4.2VLAN คืออะไร และทำไมต้องมี

ใบแลปเปิดหัวข้อ 1 ไว้ว่า "สวิตช์เป็นอุปกรณ์พื้นฐานของการสื่อสารรูปแบบ LAN ทำให้อุปกรณ์ที่อยู่ภายใต้ LAN สามารถสื่อสารกันได้ โดยสวิตช์หนึ่งตัวยังสามารถที่จะแบ่งออกเป็นหลายวง LAN เหมือนการแยกออกเป็นหลายสวิตช์ ภายใต้การทำงานของสวิตช์ 1 ตัว ในรูปแบบที่เรียกว่า Virtual LAN (VLAN)"

ประโยคสำคัญที่สุดของทั้งแลปอยู่ท้ายย่อหน้านั้น — "ทำให้อุปกรณ์แม้ว่าจะอยู่บนสวิตช์เดียวกัน หากอยู่ต่าง VLAN ก็ไม่สามารถที่จะสื่อสารกันได้"

สวิตช์ SW1 ตัวเดียว มีเครื่อง Sung กับ Patt อยู่ในกรอบส้มซ้ายมือ = Broadcast Domain 1 (VLAN 1) Subnet 1 และมีเครื่อง Son กับ Alex อยู่ในกรอบเทาขวามือ = Broadcast Domain 2 (VLAN 2) Subnet 2
รูปที่ 1 จากใบแลป Lab 4 — ตัวอย่าง VLAN บนสวิตช์ · สวิตช์ตัวเดียวถูกแบ่งเป็น 2 broadcast domain แยกขาดจากกัน

สวิตช์ธรรมดา (ไม่มี VLAN)

  • ทุกพอร์ตอยู่ใน VLAN 1 โดยปริยาย
  • ทั้งตัว = 1 broadcast domain — ใครส่ง broadcast (เช่น ARP) ทุกเครื่องได้รับหมด
  • แต่ละพอร์ต = 1 collision domain แยกกันอยู่แล้ว (นี่คือสิ่งที่สวิตช์ต่างจาก hub)

สวิตช์ที่ตั้ง VLAN แล้ว

  • สวิตช์ 1 ตัว ทำตัวเป็น สวิตช์เสมือนหลายตัว
  • แต่ละ VLAN = broadcast domain ของตัวเอง · มี ตาราง MAC ของตัวเอง · มี ต้นไม้ STP ของตัวเอง
  • ข้าม VLAN ต้องผ่านอุปกรณ์เลเยอร์ 3 (router) เท่านั้น → §4.10

ใบแลปเขียนต่อว่า "นอกจากการกำหนดให้สวิตช์ให้ในรูปแบบ VLAN แล้ว เรายังสามารถเชื่อมต่อให้เกิดการสื่อสารแบบข้ามสวิตช์ได้ ดังแสดงในรูปที่ 2" — คือ VLAN เดียวกันขยายข้ามสวิตช์ได้ โดยลากสายเชื่อมสวิตช์หนึ่งเส้นต่อหนึ่ง VLAN

สวิตช์ SW1 และ SW2 แต่ละตัวมีเครื่องอยู่ในกรอบเขียว VLAN 10 ด้านบน (หมายเลข 11 12 บน SW1 และ 13 14 บน SW2) และกรอบส้ม VLAN 20 ด้านล่าง (21 22 บน SW1 และ 23 24 บน SW2) ระหว่างสวิตช์มีสายสองเส้น เส้นบนเขียนว่า Link is in VLAN 10 เส้นล่างเขียนว่า Link is in VLAN 20
รูปที่ 2 จากใบแลป Lab 4 — ตัวอย่าง Multi switch VLAN บนสวิตช์ · สายหนึ่งเส้นต่อหนึ่ง VLAN — นี่คือวิธีที่ใบแลปสั่งให้ทำในข้อ 5 (รูปที่ 9 มีสาย 2 เส้นพอดี)
จุดที่คนพลาดบ่อย — "ping ไม่ผ่าน" คือคำตอบที่ถูก

พอตั้ง VLAN เสร็จแล้ว ping ข้าม VLAN ไม่ผ่าน หลายคนคิดว่าตัวเองทำผิดแล้วนั่งรื้อ config ใหม่ทั้งชุด — ไม่ผิด นั่นคือผลที่ต้องได้ ใบแลปข้อ 2 สั่งตรง ๆ ว่า "ทำการ ping ใหม่ระหว่างเครื่อง PC บันทึกผล และใช้คำสั่ง show vlan อีกครั้ง อธิบายพร้อมสาเหตุของการ ping ระหว่างเครื่องที่เกิดขึ้น" → สิ่งที่ต้องเขียนคือ "ping ไม่ผ่านเพราะ VLAN ตัด broadcast domain ทำให้ ARP request ไม่ถึงปลายทาง" ไม่ใช่ไปแก้ให้มันผ่าน

4.3VLAN Tag และมาตรฐาน IEEE 802.1Q

ใบแลปอธิบายที่มาไว้ว่า "จะเห็นว่าการเชื่อมต่อที่เกิดขึ้น หากมีการเชื่อมต่อ VLAN จำนวนมาก จะทำให้เกิดความสิ้นเปลืองพอร์ตที่ต้องเชื่อมต่อระหว่างสวิตช์ ทำให้มีการใช้งานเชื่อมต่อที่เรียกว่า VLAN Tag ภายใต้การใช้พอร์ตเดียวกัน ดังแสดงในรูปที่ 3 และ 4"

พูดง่าย ๆ — ถ้ามี 10 VLAN ก็ต้องลากสายระหว่างสวิตช์ 10 เส้น เปลืองพอร์ตทั้งสองฝั่ง · Trunk แก้ปัญหานี้ด้วยการใส่ป้ายบอกหมายเลข VLAN ลงในเฟรม แล้วส่งทุก VLAN ผ่านสายเส้นเดียว

สวิตช์ Sa และ Sb เชื่อมกันด้วยสายเส้นเดียวที่เขียนว่า TRUNK VLAN 1 and VLAN 2 โดยแต่ละฝั่งมีเส้นแยกออกไปเป็น VLAN 1 และ VLAN 2
รูปที่ 3 จากใบแลป Lab 4 — VLAN Tag · สายเส้นเดียวหอบทั้ง VLAN 1 และ VLAN 2
สวิตช์ SW1 และ SW2 เชื่อมกันด้วยสายเส้นเดียว บนสายมีเฟรมสลับกันติดป้ายเลข 20 10 20 10 20 โดยกรอบเขียวด้านบนคือ VLAN 10 และกรอบส้มด้านล่างคือ VLAN 20
รูปที่ 4 จากใบแลป Lab 4 — VLAN Tag · เฟรมของ VLAN 10 กับ VLAN 20 สลับกันวิ่งบนสายเส้นเดียวกัน โดยมีเลข VLAN ติดอยู่ที่หัวเฟรม

ใบแลปสรุปว่า "โดยการสื่อสารที่เกิดขึ้นของ VLAN Tag จะอยู่บนมาตรฐาน IEEE 802.1Q ด้วยการเพิ่ม Tag ไปยังเฮดเดอร์ของเฟรม Ethernet ดังรูปที่ 5"

ผังเฟรม Ethernet เรียงจากซ้ายไปขวา: Dest. Address, Source Address, Tag (มีวงเล็บชี้ว่าคือ 802.1Q), Type, Data, FCS · ด้านล่างขยายช่อง Tag ออกมาเป็น Type, Priority, Flag และ VLAN ID (12 Bits)
รูปที่ 5 จากใบแลป Lab 4 — Tag ของ VLAN · Tag 4 ไบต์แทรกอยู่ระหว่าง Source Address กับ Type และภายในมีช่อง VLAN ID ขนาด 12 บิต
ช่องในรูปที่ 5ขนาดทำหน้าที่อะไร
Type (TPID)16 บิต (2 ไบต์)ค่าคงที่ 0x8100 — เป็นธงบอกว่า "สองไบต์ถัดไปคือ tag ไม่ใช่ EtherType จริง" การ์ดที่ไม่รู้จัก 802.1Q จะอ่านตรงนี้แล้วงง
Priority (PCP)3 บิตระดับความสำคัญ 0–7 ใช้ทำ QoS (Class of Service) — ในแลปนี้เป็น 0 ตลอด
Flag (CFI / DEI)1 บิตเดิมคือ Canonical Format Indicator สำหรับ Token Ring ปัจจุบันใช้เป็น Drop Eligible Indicator — ในแลปนี้เป็น 0
VLAN ID (VID)12 บิตหมายเลข VLAN — 12 บิต = 212 = 4096 ค่า (0–4095) โดย 0 กับ 4095 สงวนไว้ → ใช้จริงได้ 1–4094
ส่วนขยายที่ควรรู้ — ผลข้างเคียงของ Tag ไม่ได้อยู่ในใบแลป

เฟรม Ethernet ปกติยาวสุด 1518 ไบต์ · พอแทรก tag 4 ไบต์เข้าไปจึงกลายเป็น 1522 ไบต์ (เรียกว่า baby giant frame) และ FCS ต้องคำนวณใหม่ทุกครั้งที่แปะหรือถอด tag — เพราะเนื้อเฟรมเปลี่ยนไปแล้ว · ใน Wireshark ใช้ display filter vlan เพื่อเอาเฉพาะเฟรมที่มี tag หรือ vlan.id == 10 เพื่อเจาะ VLAN เดียว

4.4ประเภทพอร์ต — Access Port กับ Trunk Port

ใบแลปเขียนไว้ตรง ๆ ว่า "โดยทั่วไปประเภทพอร์ตของ VLAN มี 2 ประเภท"

① Access Port — พอร์ตที่ต่อกับ PC

คำต่อคำจากใบแลป: "สามารถสื่อสารเพียง 1 VLAN เท่านั้น และสามารถรับส่งในรูปแบบที่ไม่มีกำหนด tag เท่านั้น ทำให้เฟรมที่ได้รับภายใต้พอร์ตนี้จะต้องอยู่ภายใต้ VLAN ที่ระบุเท่านั้น หากเป็น VLAN อื่นจะถูกกำจัดทิ้งทั้งหมด (drop) รวมถึงการสื่อสารในรูปแบบ IEEE 802.1Q tag ซึ่งจะสามารถใช้ในกรณีที่เป็นแบบ trunk port เท่านั้น"

  • อยู่ได้ VLAN เดียว
  • เฟรมที่วิ่งเข้า/ออก ไม่มี tag (untagged) — PC ไม่เคยเห็น tag เลย
  • สวิตช์รู้ว่าเฟรมนี้เป็นของ VLAN ไหน จากพอร์ตที่มันเข้ามา ไม่ใช่จากตัวเฟรม

② Trunk Port — พอร์ตที่ต่อระหว่างสวิตช์

คำต่อคำจากใบแลป: "เป็นพอร์ตที่ใช้สื่อสารระหว่างสวิตช์ โดยเฟรมที่ส่งจะต้องได้รับการ tag ก่อน"

  • หอบได้ หลาย VLAN พร้อมกัน บนสายเส้นเดียว
  • เฟรมมี tag 802.1Q ติดไปด้วย → ปลายทางอ่านแล้วรู้ว่าเป็น VLAN ไหน
  • ยกเว้น Native VLAN ซึ่งวิ่งไม่มี tag (ค่าเริ่มต้นคือ VLAN 1)
จุดที่คนพลาดบ่อย — เสียบ PC เข้า trunk / เสียบสวิตช์เข้า access

① เสียบ PC เข้าพอร์ตที่เป็น trunk → PC ได้เฟรมที่มี tag ซึ่งการ์ดปกติอ่านไม่ออก จึงทิ้งทั้งหมด อาการคือ สายไฟเขียวแต่ ping ไม่ออกสักที่ ② ปล่อยสายระหว่างสวิตช์ให้เป็น access → สายเส้นนั้นหอบได้ VLAN เดียว VLAN อื่นข้ามไม่ได้ (ซึ่งเป็นผลที่ตั้งใจในข้อ 5 ของใบแลป แต่ผิดในข้อ 6 ที่สั่งให้ทำ trunk)

4.5คำสั่งที่เกี่ยวข้อง (Listing 1–10)

ใบแลปหัวข้อ 2 ลิสต์คำสั่งไว้ 10 ชุด — ตารางนี้คือทั้ง 10 ชุดพร้อมค่าจริง ใช้เป็นแผ่นโกงในห้องสอบได้เลย

Listingทำอะไรคำสั่ง (ค่าจริง)
1สร้าง VLAN + ตั้งชื่อvlan 10 → name VLAN10
2ยัดพอร์ตเข้า VLANinterface range fa1/1 - 2 → switchport mode access → switchport access vlan 10
3ตรวจสอบ VLANshow vlan · show vlan brief ข้อสอบสั่งส่งอันนี้
4ทำ Trunk + native vlaninterface fa1/10 → switchport mode trunk → switchport trunk native vlan 1
5อนุญาต VLAN บน trunkswitchport mode trunk → switchport trunk allowed vlan 10,20
6ตรวจสอบ Trunkshow interface fa1/10 switchport · (เพิ่ม) show interfaces trunk
7ตั้ง VTPvlan database → vtp domain NETLAB → vtp server / vtp client → §4.11
8ตรวจสอบ VTPshow vtp status · show vtp stat
9Port Mirroringmonitor session 1 source interface fa1/10 → monitor session 1 destination interface fa1/3
10VLAN บน Routerinterface fa0/0.10 → encapsulation dot1Q 10 → ip address 192.3.128.1 255.255.255.0 → §4.10
[Switch#] Listing 1 + 2 — สร้าง VLAN แล้วยัดพอร์ตเข้าไป (คัดลอกได้ทันที)
Switch>enable
Switch#configure terminal
Switch(config)#vlan 10
Switch(config-vlan)#name VLAN10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name VLAN20
Switch(config-vlan)#exit
#
# ยัดพอร์ตทีละหลายพอร์ตด้วย interface range (เว้นวรรครอบขีดกลางด้วย)
Switch(config)#interface range fa1/1 - 2
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#no shutdown
Switch(config-if-range)#exit
Switch(config)#interface range fa1/3 - 4
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch(config-if-range)#no shutdown
Switch(config-if-range)#end
Switch#show vlan brief
Switch#copy running-config startup-config
[Switch#] Listing 4 + 5 — ทำพอร์ตให้เป็น Trunk (คัดลอกได้ทันที)
Switch#configure terminal
Switch(config)#interface fa1/10
Switch(config-if)#switchport trunk encapsulation dot1q   # ถ้าขึ้น Invalid input → ข้ามบรรทัดนี้ (อ่านกล่องล่าง)
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk native vlan 1
Switch(config-if)#switchport trunk allowed vlan 10,20
Switch(config-if)#no shutdown
Switch(config-if)#end
Switch#show interfaces trunk
Switch#show interface fa1/10 switchport       # Listing 6 ของใบแลป
จุดที่คนพลาดบ่อย — ลำดับของ encapsulation และรุ่นที่ไม่มีคำสั่งนี้

① ต้องสั่ง switchport trunk encapsulation dot1q ก่อน switchport mode trunk เสมอ — ถ้าสลับลำดับ สวิตช์ที่รองรับทั้ง ISL และ dot1Q (เช่น 3550 / 3560) จะตอบว่า Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode

② สวิตช์หลายรุ่นรองรับ dot1Q อย่างเดียวอยู่แล้ว จึงไม่มีคำสั่งนี้ (Cisco 2950, 3650, โมดูล NM-16ESW ใน GNS3 และ IOU บางรุ่น) — ถ้าพิมพ์แล้วขึ้น % Invalid input detected ให้ข้ามบรรทัดนี้ไปเลย ไม่ใช่ความผิดพลาด แล้วสั่ง switchport mode trunk ตรง ๆ ได้เลย

switchport trunk allowed vlan — 4 รูปแบบที่ต้องแยกให้ออก ส่วนขยาย
คำสั่งผลลัพธ์
switchport trunk allowed vlan 10,20แทนที่ทั้งรายการ — เหลือแค่ 10 กับ 20 · VLAN 1 และอื่น ๆ ถูกตัดออกหมด
switchport trunk allowed vlan add 30เพิ่ม 30 เข้าไปในรายการเดิม
switchport trunk allowed vlan remove 20เอา 20 ออกจากรายการ
switchport trunk allowed vlan allกลับไปเป็นค่าเริ่มต้น = อนุญาตทุก VLAN (1–4094)

อาการคลาสสิก: พิมพ์ allowed vlan 10 แล้วตามด้วย allowed vlan 20 อีกบรรทัด → เหลืออนุญาตแค่ VLAN 20 เพราะบรรทัดหลังทับบรรทัดแรก ต้องใช้ 10,20 หรือ add

4.6เตรียมอุปกรณ์ใน GNS3 บน Mac + ชื่อพอร์ต

แลปนี้ต้องใช้สวิตช์ที่มี CLI จริง เพราะข้อสอบสั่งส่ง show vlan — "Ethernet switch" ที่ติดมากับ GNS3 ใช้ไม่ได้ เพราะ console เข้าไม่ได้และไม่มีคำสั่ง show อะไรเลย

ใช้อะไรเป็นสวิตช์ชื่อพอร์ตหมายเหตุ
c3725 / c3745 + NM-16ESW
(ที่หน้านี้ใช้เป็นหลัก)
fa1/0 – fa1/15
(ถ้าใส่โมดูลที่ slot 1)
ตรงกับคำสั่ง interface range fa1/1 - 2 ในหน้านี้ · ต้องใช้ show vlan-switch ไม่ใช่ show vlan — อ่าน §4.14
L2-ADVENTERPRISE (IOU)e0/0 – e0/3, e1/0 …
4 พอร์ตต่อ 1 slot
show vlan brief ใช้ได้ตรง ๆ · แทน fa1/1 → e0/1, fa1/2 → e0/2, fa1/10 → e0/3
สวิตช์เครื่องจริง 2950fa0/1 – fa0/24dot1Q อย่างเดียว → ไม่มี switchport trunk encapsulation
สวิตช์เครื่องจริง 3650gi1/0/1 – gi1/0/24ชื่อพอร์ต 3 ท่อน · show vlan brief ใช้ได้ตรง ๆ
ผังพอร์ตที่หน้านี้ใช้ตลอด — จดไว้ก่อนต่อสาย
พอร์ตSwitch1Switch2
fa1/1PC1PC3
fa1/2PC2PC4
fa1/3เครื่องที่รัน Wireshark (VPCS ตามรูปที่ 9)—
fa1/10สายเส้นที่ 1 ไป Switch2 (ต่อมาทำเป็น trunk)สายเส้นที่ 1 ไป Switch1
fa1/11สายเส้นที่ 2 ไป Switch2 (ข้อ 6 สั่งให้ดึงเส้นนี้ออก)สายเส้นที่ 2 ไป Switch1
[macOS Terminal] — ถ้าทำกับสวิตช์เครื่องจริง (ไม่ใช่ GNS3) · Mac ไม่มี PuTTY
$ ls /dev/tty.*
# /dev/tty.Bluetooth-Incoming-Port   /dev/tty.usbmodem1301  ← อันนี้คืออุปกรณ์ที่เพิ่งเสียบ
$ screen /dev/tty.usbmodem1301 9600
# ออกจาก screen: กด Ctrl-A แล้วตามด้วย Ctrl-\  แล้วตอบ y
$ screen -ls                        # ดูว่ามี session ค้างอยู่ไหม
$ screen -X -S 12345 quit            # ฆ่า session ที่ค้าง
ใน GNS3 ง่ายกว่านั้นมาก

ถ้าทำใน GNS3 ไม่ต้องใช้ screen เลย — คลิกขวาที่อุปกรณ์ → Console จะเปิด Terminal ของ macOS มาให้เอง (ต้องกด Start ให้จุดหน้าชื่ออุปกรณ์เป็นสีเขียวก่อน) · การดักจับก็ง่ายกว่า — คลิกขวาที่เส้นลิงก์ → Start capture แล้ว Wireshark จะเด้งขึ้นมาเอง ไม่ต้องทำ port mirroring และไม่ต้องมี VPCS ตัว Wireshark ตามรูปที่ 9 เลย

4.7การทดลองข้อ 1–3 — สวิตช์ตัวเดียว (รูปที่ 7 และ 8)

สวิตช์หนึ่งตัวอยู่ตรงกลาง มี PC1 อยู่มุมซ้ายบน PC2 มุมซ้ายล่าง PC3 มุมขวาบน PC4 มุมขวาล่าง แต่ละเครื่องลากสายเข้าสวิตช์โดยตรง ไม่มีการระบุ VLAN
รูปที่ 7 จากใบแลป Lab 4 — Topology ยังไม่กำหนด VLAN · ข้อ 1 ให้ต่อแบบนี้ก่อน
สวิตช์ตัวเดียวกัน แต่คราวนี้ PC1 และ PC2 อยู่ในกรอบสีแดงเขียนว่า VLAN X ส่วน PC3 และ PC4 อยู่ในกรอบสีเขียวเขียนว่า VLAN Y
รูปที่ 8 จากใบแลป Lab 4 — Topology กำหนด VLAN · PC1+PC2 = VLAN X · PC3+PC4 = VLAN Y

ข้อ 1 — ยังไม่ตั้ง VLAN ping ต้องผ่านหมด

  1. ลาก Switch1 กับ VPCS 4 ตัว ลงมาใน GNS3 แล้วต่อสายตามผังพอร์ต: PC1→fa1/1, PC2→fa1/2, PC3→fa1/3, PC4→fa1/4 · กด Start ทุกตัวจนจุดเป็นสีเขียว
  2. ตั้ง IP ให้ VPCS ทั้ง 4 ตัว — วงเดียวกันหมด ไม่ต้องใส่ gateway
    [VPCS] — คลิกขวาที่แต่ละตัว → Console แล้วพิมพ์
    PC1> ip 192.3.128.11 255.255.255.0
    PC2> ip 192.3.128.12 255.255.255.0
    PC3> ip 192.3.128.13 255.255.255.0
    PC4> ip 192.3.128.14 255.255.255.0
    PC1> show ip          # ตรวจว่าใส่ถูก
    PC1> save             # กัน IP หายตอนปิด GNS3
  3. ping ให้ครบทุกคู่ แล้วบันทึกผล — ตอนนี้ต้องผ่านหมด เพราะทุกพอร์ตอยู่ VLAN 1 ด้วยกัน
    [VPCS] — 6 คู่ที่ต้องบันทึก
    PC1> ping 192.3.128.12   # PC1 → PC2   ผ่าน
    PC1> ping 192.3.128.13   # PC1 → PC3   ผ่าน
    PC1> ping 192.3.128.14   # PC1 → PC4   ผ่าน
    PC2> ping 192.3.128.13   # PC2 → PC3   ผ่าน
    PC2> ping 192.3.128.14   # PC2 → PC4   ผ่าน
    PC3> ping 192.3.128.14   # PC3 → PC4   ผ่าน
    
    # ผลที่ต้องเห็น:
    # 84 bytes from 192.3.128.12 icmp_seq=1 ttl=64 time=1.234 ms
  4. เก็บ show vlan ครั้งที่ 1 — ตอนนี้ทุกพอร์ตต้องอยู่ใน VLAN 1 (default)
    [Switch#] — ผลที่ควรเห็นก่อนตั้ง VLAN
    Switch#show vlan brief
    
    VLAN Name                             Status    Ports
    ---- -------------------------------- --------- -------------------------------
    1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3, Fa1/4
                                                    Fa1/5, Fa1/6, Fa1/7, Fa1/8, Fa1/9
    1002 fddi-default                     act/unsup
    1003 token-ring-default               act/unsup
    1004 fddinet-default                  act/unsup
    1005 trnet-default                    act/unsup
    #      └── พอร์ตทุกอันกองอยู่ VLAN 1 → PC ทุกเครื่องคุยกันได้หมด

ข้อ 2 — ตั้ง VLAN ตามรูปที่ 8 แล้ว ping ใหม่

รูปที่ 8 บอกว่า PC1 + PC2 = VLAN X และ PC3 + PC4 = VLAN Y — เราแทน X = 10, Y = 20 (พอร์ตเรียงกันพอดี จึงใช้ interface range ได้ทั้งสองชุด)

[Switch#] — สคริปต์เต็มของข้อ 2 คัดลอกวางได้ทั้งก้อน
Switch>enable
Switch#configure terminal
Switch(config)#hostname SW1
SW1(config)#vlan 10
SW1(config-vlan)#name VLAN10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#name VLAN20
SW1(config-vlan)#exit
#
SW1(config)#interface range fa1/1 - 2       # PC1, PC2 = VLAN X
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 10
SW1(config-if-range)#no shutdown
SW1(config-if-range)#exit
#
SW1(config)#interface range fa1/3 - 4       # PC3, PC4 = VLAN Y
SW1(config-if-range)#switchport mode access
SW1(config-if-range)#switchport access vlan 20
SW1(config-if-range)#no shutdown
SW1(config-if-range)#end
SW1#show vlan brief
SW1#copy running-config startup-config
[SW1#] show vlan brief — ผลที่ต้องเห็นหลังตั้ง VLAN (เก็บภาพส่งอาจารย์)
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/5, Fa1/6, Fa1/7
                                                Fa1/8, Fa1/9, Fa1/10, Fa1/11
10   VLAN10                           active    Fa1/1, Fa1/2
20   VLAN20                           active    Fa1/3, Fa1/4
1002 fddi-default                     act/unsup
[VPCS] — ping ซ้ำทั้ง 6 คู่ · ผลจะเปลี่ยนไปครึ่งหนึ่ง
PC1> ping 192.3.128.12   # PC1 → PC2   ✅ ผ่าน   (VLAN 10 ทั้งคู่)
PC3> ping 192.3.128.14   # PC3 → PC4   ✅ ผ่าน   (VLAN 20 ทั้งคู่)
PC1> ping 192.3.128.13   # PC1 → PC3   ❌ ไม่ผ่าน (VLAN 10 ↔ 20)
PC1> ping 192.3.128.14   # PC1 → PC4   ❌ ไม่ผ่าน
PC2> ping 192.3.128.13   # PC2 → PC3   ❌ ไม่ผ่าน
PC2> ping 192.3.128.14   # PC2 → PC4   ❌ ไม่ผ่าน

# ที่ไม่ผ่านจะขึ้น host (192.3.128.13) not reachable หรือ timeout ทุกบรรทัด
คำตอบของ "อธิบายพร้อมสาเหตุ" ที่ใบแลปข้อ 2 สั่ง — เขียนแบบนี้ลงรายงานได้เลย

PC ทั้ง 4 เครื่องยังอยู่ใน subnet เดียวกัน (192.3.128.0/24) ทุกเครื่องจึงคิดว่าปลายทางอยู่ใน LAN เดียวกัน และส่ง ARP request แบบ broadcast ออกไปถามหา MAC ของปลายทางโดยตรง ไม่ผ่าน gateway · แต่สวิตช์ที่ตั้ง VLAN แล้วจะส่ง broadcast ออกเฉพาะพอร์ตที่อยู่ VLAN เดียวกันเท่านั้น ARP request ของ PC1 (VLAN 10) จึงไปไม่ถึง PC3 (VLAN 20) · เมื่อไม่มี ARP reply กลับมา PC1 ก็ไม่มี MAC ปลายทางให้ใส่ในเฟรม จึงไม่มีแพ็กเก็ต ICMP ออกจากเครื่องเลยแม้แต่ตัวเดียว → ping ไม่ผ่าน · สรุป: VLAN = การตัด broadcast domain ที่ระดับพอร์ต ทำให้สวิตช์ 1 ตัวทำงานเหมือนสวิตช์ 2 ตัวที่ไม่ได้ต่อกัน การจะให้คุยข้าม VLAN ต้องมีอุปกรณ์เลเยอร์ 3 มาช่วย → §4.10

ข้อ 3 — clear VLAN ทั้งหมดออกเพื่อเริ่มใหม่

ใบแลปสั่งสั้น ๆ ว่า "ทำการ clear vlan ทั้งหมดออกเพื่อเริ่มต้นใหม่" — มี 2 วิธี

[SW1#] วิธีที่ 1 — ลบทีละ VLAN (ทำได้ทันที ไม่ต้อง reload)
SW1#configure terminal
# ① คืนพอร์ตกลับ VLAN 1 ก่อน — สำคัญมาก อ่านกล่องเตือนด้านล่าง
SW1(config)#interface range fa1/1 - 4
SW1(config-if-range)#switchport access vlan 1
SW1(config-if-range)#exit
# ② ค่อยลบตัว VLAN ทิ้ง
SW1(config)#no vlan 10
SW1(config)#no vlan 20
SW1(config)#end
SW1#show vlan brief            # ต้องเหลือแต่ VLAN 1 และทุกพอร์ตกลับมาอยู่ใน default
[SW1#] วิธีที่ 2 — ล้างฐานข้อมูล VLAN ทั้งไฟล์ (สะอาดที่สุด แต่ต้อง reload)
SW1#delete flash:vlan.dat       # กด Enter ยืนยันสองครั้ง
SW1#erase startup-config       # ถ้าจะล้าง config อื่นด้วย
SW1#reload                     # ตอบ no ตรงคำถาม save แล้วตอบ yes ตรง reload
จุดที่คนพลาดบ่อย — ลบ VLAN ทิ้งแล้วพอร์ตกลายเป็นใบ้

ถ้าสั่ง no vlan 10 โดยยังไม่ได้คืนพอร์ตกลับ VLAN 1 พอร์ต fa1/1 และ fa1/2 จะยังจำว่าตัวเองอยู่ VLAN 10 ซึ่งไม่มีอยู่แล้ว → พอร์ตเข้าสถานะ inactive ไฟยังเขียวแต่ไม่ส่งอะไรเลย · show vlan brief จะแสดงว่า VLAN 10 หายไป และไม่เห็นพอร์ตทั้งสองอยู่ใต้ VLAN ไหนเลย — อาการนี้หาสาเหตุยากมากถ้าไม่รู้ · ลำดับที่ถูกคือคืนพอร์ตก่อน แล้วค่อยลบ VLAN

4.8การทดลองข้อ 4–5 — สองสวิตช์ สองสาย (รูปที่ 9)

โทโพโลยีที่ต้องสร้าง: PC1_VLAN_X และ PC2_VLAN_Y ต่อกับ Switch1 ทางซ้าย · มี VPCS ที่ใช้รัน Wireshark ต่อขึ้นไปด้านบนของ Switch1 · Switch1 กับ Switch2 เชื่อมกันด้วยสายสองเส้นขนานกัน · PC3_VLAN_X และ PC4_VLAN_Y ต่อกับ Switch2 ทางขวา
รูปที่ 9 จากใบแลป Lab 4 — การเชื่อมต่อเพื่อทดสอบ VLAN บนสวิตช์ · นี่คือโทโพโลยีที่ข้อสอบข้อ 3 สั่งให้สร้าง — สังเกตว่า PC1 กับ PC3 อยู่ VLAN X เหมือนกัน (คนละสวิตช์) และ PC2 กับ PC4 อยู่ VLAN Y · ระหว่างสวิตช์มี สาย 2 เส้น
อ่านรูปที่ 9 ให้ขาด — ต่ออะไรเข้าพอร์ตไหน
เส้นในรูปปลายซ้ายปลายขวาVLAN
PC1_VLAN_X → Switch1PC1 e0SW1 fa1/1VLAN 10 (access)
PC2_VLAN_Y → Switch1PC2 e0SW1 fa1/2VLAN 20 (access)
Wireshark → Switch1VPCS e0SW1 fa1/3ปลายทางของ port mirroring
สายเส้นที่ 1 ระหว่างสวิตช์SW1 fa1/10SW2 fa1/10VLAN 10 (access) → ข้อ 6 เปลี่ยนเป็น trunk
สายเส้นที่ 2 ระหว่างสวิตช์SW1 fa1/11SW2 fa1/11VLAN 20 (access) → ข้อ 6 ดึงเส้นนี้ออก
PC3_VLAN_X → Switch2PC3 e0SW2 fa1/1VLAN 10 (access)
PC4_VLAN_Y → Switch2PC4 e0SW2 fa1/2VLAN 20 (access)

ข้อ 4 — ต่อตามรูปที่ 9 แต่ยังไม่ตั้ง VLAN

IP ใช้ชุดเดิมทั้งหมด (192.3.128.11 – .14 mask 255.255.255.0) · ตอนนี้ยังไม่มี VLAN → ping ต้องผ่านทุกคู่ และ show vlan brief ของทั้งสองสวิตช์ต้องมีแต่ VLAN 1

จุดที่คนพลาดบ่อย — สองสายระหว่างสวิตช์ = ลูป

พอต่อสาย 2 เส้นระหว่างสวิตช์คู่เดียวกันโดยยังไม่ได้แบ่ง VLAN จะเกิด switching loop — broadcast วิ่งวนไม่รู้จบจนสวิตช์ CPU 100% · โชคดีที่ Cisco เปิด Spanning Tree ไว้ให้อยู่แล้วโดยปริยาย STP จะบล็อกพอร์ตหนึ่งในสองเส้นทิ้ง ping จึงยังผ่านปกติ (แต่วิ่งเส้นเดียว) · ตรวจได้ด้วย show spanning-tree แล้วมองหาคำว่า BLK หรือ Blocking ที่พอร์ตหนึ่ง · ถ้าเห็นไฟกะพริบรัวและ console หน่วงจนพิมพ์ไม่ทัน แปลว่า STP ถูกปิด → ดึงสายออกหนึ่งเส้นทันที · เรื่อง STP เต็ม ๆ อยู่ใน Lab 5

ข้อ 5 — ตั้ง VLAN ให้ครบทั้งสองสวิตช์ (สาย 2 เส้น VLAN ละเส้น)

นี่คือรูปแบบเดียวกับรูปที่ 2 เป๊ะ ๆ — สายเส้นบน "Link is in VLAN 10" สายเส้นล่าง "Link is in VLAN 20" · สายระหว่างสวิตช์ยังเป็น access port อยู่ เพียงแต่ถูกกำหนดให้อยู่คนละ VLAN

[SW1#] Switch1 — สคริปต์เต็ม คัดลอกวางได้ทั้งก้อน
Switch>enable
Switch#configure terminal
Switch(config)#hostname SW1
SW1(config)#vlan 10
SW1(config-vlan)#name VLAN10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#name VLAN20
SW1(config-vlan)#exit
#
# PC1 (VLAN X) + สายเส้นที่ 1 ไป SW2 → ทั้งคู่อยู่ VLAN 10
SW1(config)#interface fa1/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#no shutdown
SW1(config-if)#exit
SW1(config)#interface fa1/10
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#no shutdown
SW1(config-if)#exit
#
# PC2 (VLAN Y) + สายเส้นที่ 2 ไป SW2 → ทั้งคู่อยู่ VLAN 20
SW1(config)#interface fa1/2
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 20
SW1(config-if)#no shutdown
SW1(config-if)#exit
SW1(config)#interface fa1/11
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 20
SW1(config-if)#no shutdown
SW1(config-if)#end
SW1#show vlan brief
SW1#copy running-config startup-config
[SW2#] Switch2 — เหมือนกันเป๊ะ เปลี่ยนแค่ hostname (PC3 อยู่ fa1/1 · PC4 อยู่ fa1/2)
Switch>enable
Switch#configure terminal
Switch(config)#hostname SW2
SW2(config)#vlan 10
SW2(config-vlan)#name VLAN10
SW2(config-vlan)#exit
SW2(config)#vlan 20
SW2(config-vlan)#name VLAN20
SW2(config-vlan)#exit
SW2(config)#interface range fa1/1 , fa1/10    # PC3 + สายเส้นที่ 1  → VLAN 10
SW2(config-if-range)#switchport mode access
SW2(config-if-range)#switchport access vlan 10
SW2(config-if-range)#no shutdown
SW2(config-if-range)#exit
SW2(config)#interface range fa1/2 , fa1/11    # PC4 + สายเส้นที่ 2  → VLAN 20
SW2(config-if-range)#switchport mode access
SW2(config-if-range)#switchport access vlan 20
SW2(config-if-range)#no shutdown
SW2(config-if-range)#end
SW2#show vlan brief
SW2#copy running-config startup-config

interface range fa1/1 , fa1/10 — เครื่องหมาย จุลภาค ใช้เลือกพอร์ตที่ไม่ติดกัน ส่วน ขีดกลาง (fa1/1 - 2) ใช้เลือกพอร์ตที่เรียงติดกัน · ต้องเว้นวรรครอบเครื่องหมายทั้งสองแบบ ไม่งั้น IOS ฟ้อง Invalid input

[VPCS] — ผลการ ping ที่ต้องได้ (บันทึกลงรายงาน)
PC1> ping 192.3.128.13   # PC1 → PC3   ✅ ผ่าน   VLAN 10 ทั้งคู่ ข้ามสวิตช์ผ่านสายเส้นที่ 1
PC2> ping 192.3.128.14   # PC2 → PC4   ✅ ผ่าน   VLAN 20 ทั้งคู่ ข้ามสวิตช์ผ่านสายเส้นที่ 2
PC1> ping 192.3.128.12   # PC1 → PC2   ❌ ไม่ผ่าน  อยู่สวิตช์เดียวกันแต่คนละ VLAN
PC1> ping 192.3.128.14   # PC1 → PC4   ❌ ไม่ผ่าน  คนละสวิตช์และคนละ VLAN
PC3> ping 192.3.128.14   # PC3 → PC4   ❌ ไม่ผ่าน
PC2> ping 192.3.128.13   # PC2 → PC3   ❌ ไม่ผ่าน
คำตอบของ "อธิบายพร้อมสาเหตุ" ที่ใบแลปข้อ 5 สั่ง

VLAN ไม่ได้หยุดอยู่แค่ในสวิตช์ตัวเดียว — เมื่อสายระหว่างสวิตช์ถูกกำหนดให้อยู่ VLAN 10 สายเส้นนั้นก็กลายเป็นส่วนหนึ่งของ broadcast domain ของ VLAN 10 ทำให้ PC1 (บน SW1) กับ PC3 (บน SW2) อยู่ในวง broadcast เดียวกันข้ามสวิตช์ ARP ถึงกันได้ → ping ผ่าน · ในทางกลับกัน PC1 กับ PC2 อยู่บนสวิตช์ตัวเดียวกันแท้ ๆ แต่คุยกันไม่ได้ เพราะคนละ VLAN · ข้อสรุป: สิ่งที่กำหนดว่าใครคุยกับใครได้คือหมายเลข VLAN ไม่ใช่ระยะทางหรือการอยู่เครื่องเดียวกัน · ข้อเสียของวิธีนี้คือเปลืองพอร์ต — 2 VLAN ใช้ 2 เส้น ถ้ามี 10 VLAN ต้อง 10 เส้น จึงต้องเปลี่ยนไปใช้ trunk ในข้อถัดไป

4.9การทดลองข้อ 6 — ดึงสายออกเส้นหนึ่ง แล้วทำ Trunk 802.1Q

ใบแลปสั่งว่า "ให้ดึงสายออกหนึ่งเส้นและกำหนดให้เป็นการสื่อสารแบบ Trunk แบบ VLAN Tag โดยเลือกพอร์ตเพื่อใช้เป็น Trunk port พร้อมทั้งใช้ Wireshark ตรวจจับ package VLAN tag IEEE 802.1Q"

  1. ลบสายเส้นที่ 2 ออก — ใน GNS3 คลิกขวาที่เส้นระหว่าง fa1/11 ↔ fa1/11 แล้วเลือก Delete · เหลือสายเชื่อมสวิตช์เส้นเดียวที่ fa1/10
  2. ตอนนี้ ping จะพังทันที — PC2 → PC4 (VLAN 20) ไม่ผ่านแล้ว เพราะสายของ VLAN 20 ถูกดึงออก · นี่คือหลักฐานว่าสายเส้นเดิมหอบได้ VLAN เดียวจริง ๆ ให้ ping บันทึกไว้ก่อนแก้
  3. เปลี่ยน fa1/10 ของทั้งสองสวิตช์ให้เป็น Trunk — ต้องทำทั้งสองฝั่ง ไม่งั้นเป็น trunk ข้างเดียวใช้ไม่ได้
    [SW1#] — และทำซ้ำแบบเดียวกันที่ SW2
    SW1#configure terminal
    SW1(config)#interface fa1/10
    SW1(config-if)#switchport trunk encapsulation dot1q   # ขึ้น Invalid input ก็ข้ามได้
    SW1(config-if)#switchport mode trunk
    SW1(config-if)#switchport trunk native vlan 1          # Listing 4 ของใบแลป
    SW1(config-if)#switchport trunk allowed vlan 10,20      # Listing 5 ของใบแลป
    SW1(config-if)#no shutdown
    SW1(config-if)#end
    SW1#show interfaces trunk
    SW1#copy running-config startup-config
  4. ยืนยันว่า trunk ขึ้นแล้ว
    [SW1#] show interfaces trunk — ผลที่ต้องเห็น
    Port        Mode         Encapsulation  Status        Native vlan
    Fa1/10      on           802.1q         trunking      1
    
    Port        Vlans allowed on trunk
    Fa1/10      10,20
    
    Port        Vlans allowed and active in management domain
    Fa1/10      10,20
    
    Port        Vlans in spanning tree forwarding state and not pruned
    Fa1/10      10,20
    #                        └── ต้องขึ้น trunking ไม่ใช่ not-trunking · และต้องเห็นครบทั้ง 10 และ 20
  5. ping ใหม่ทั้ง 6 คู่ — ผลต้องกลับมาเหมือนข้อ 5 เป๊ะ ๆ ทั้งที่เหลือสายเส้นเดียว
    [VPCS]
    PC1> ping 192.3.128.13   # PC1 → PC3   ✅ ผ่าน  (VLAN 10 · tag 10 วิ่งบน trunk)
    PC2> ping 192.3.128.14   # PC2 → PC4   ✅ ผ่าน  (VLAN 20 · tag 20 วิ่งบนสายเส้นเดียวกัน)
    PC1> ping 192.3.128.12   # PC1 → PC2   ❌ ไม่ผ่าน (คนละ VLAN — ยังต้องมี router)
ประเด็นที่ต้องเขียนในรายงานข้อ 6

สายลดจาก 2 เส้นเหลือ 1 เส้น แต่ผลการ ping เหมือนเดิมทุกคู่ — เพราะ trunk แนบ 802.1Q tag ขนาด 4 ไบต์ เข้าไปในเฟรม ทำให้สวิตช์ปลายทางแยกออกว่าเฟรมไหนเป็นของ VLAN ใด จึงไม่ต้องใช้สายแยกต่อ VLAN อีกต่อไป · ประหยัดพอร์ตจาก N เส้น (N = จำนวน VLAN) เหลือ 1 เส้น

ดักจับ 802.1Q ด้วย Wireshark

วิธีที่ 1 — ใน GNS3 (แนะนำสำหรับ Mac)

  1. คลิกขวาที่เส้น trunk ระหว่าง fa1/10 ↔ fa1/10
  2. เลือก Start capture → Wireshark เด้งขึ้นมาเอง
  3. กลับไปที่ PC1 แล้ว ping 192.3.128.13
  4. ใส่ display filter vlan แล้วกด Enter

วิธีที่ 2 — ตามรูปที่ 9 (port mirroring)

รูปที่ 9 มี VPCS ตัวหนึ่งชื่อ Wireshark ต่ออยู่กับ Switch1 — ถ้าจะทำตามรูปเป๊ะ ต้องสั่ง port mirroring (Listing 9) ให้สวิตช์ทำสำเนาเฟรมจากพอร์ต trunk ไปออกพอร์ตที่เสียบเครื่อง Wireshark ไว้ → ดูคำสั่งที่ §4.11

[Wireshark] — display filter ที่ต้องใช้
vlan                       # เอาเฉพาะเฟรมที่มี tag 802.1Q
vlan.id == 10              # เจาะเฉพาะ VLAN 10
vlan.id == 20 && icmp      # เฉพาะ ping ของ VLAN 20
eth.type == 0x8100         # อีกวิธีหนึ่ง — จับที่ค่า TPID ตรง ๆ

สิ่งที่ต้องเห็นในหน้าต่าง Wireshark — คลิกที่แพ็กเก็ต ICMP หนึ่งอัน แล้วกางแถบ Ethernet ในบานหน้าต่างกลาง จะเจอบรรทัดเพิ่มมาที่ไม่มีในเฟรมธรรมดา

[Wireshark] — โครงที่กางออกมาของเฟรมบน trunk
Ethernet II, Src: 00:50:79:66:68:00, Dst: 00:50:79:66:68:02
802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 10
    000. .... .... .... = Priority: Best Effort (0)       # ← ช่อง Priority ในรูปที่ 5
    ...0 .... .... .... = DEI: Ineligible                  # ← ช่อง Flag ในรูปที่ 5
    .... 0000 0000 1010 = ID: 10                          # ← VLAN ID 12 บิต = 10
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.3.128.11, Dst: 192.3.128.13
Internet Control Message Protocol
จุดที่คนพลาดบ่อย — ดักผิดจุดแล้วไม่เจอ tag

① ดักที่ access port จะไม่มีวันเห็น tag เพราะสวิตช์ถอด tag ออกก่อนส่งเฟรมออกพอร์ต access เสมอ — ต้องดักที่ ลิงก์ trunk เท่านั้น ② เฟรมของ native VLAN (ค่าเริ่มต้น VLAN 1) วิ่งบน trunk แบบไม่มี tag ดังนั้นถ้าเผลอเอา PC ไปไว้ VLAN 1 แล้วดักบน trunk ก็ยังไม่เห็น tag อยู่ดี — ต้อง ping ระหว่างเครื่องที่อยู่ VLAN 10 หรือ 20 ③ ถ้าดักบนการ์ดจริงของเครื่อง (ไม่ใช่ใน GNS3) driver ของการ์ดหลายรุ่นตัด tag ทิ้งก่อนส่งให้ระบบปฏิบัติการ — นี่คือเหตุผลที่ใบแลปเขียนหมายเหตุไว้ว่า "Wireshark ควรเป็น Linux" · บน Mac ทางที่ชัวร์ที่สุดคือ ดักที่ลิงก์ใน GNS3 ซึ่งเห็น tag ครบเสมอ

Native VLAN — จุดที่ออกสอบทฤษฎีบ่อย ส่วนขยาย

switchport trunk native vlan 1 (Listing 4) บอกว่า VLAN ไหนได้สิทธิ์วิ่งบน trunk โดยไม่ต้องติด tag · มีไว้เพื่อความเข้ากันได้กับอุปกรณ์เก่าที่อ่าน tag ไม่เป็น · ถ้าสองฝั่งตั้ง native vlan ไม่ตรงกัน (เช่นฝั่งหนึ่ง 1 อีกฝั่ง 99) เฟรมที่ไม่มี tag จะถูกโยนเข้าผิด VLAN → เกิด VLAN leaking คือทราฟฟิกรั่วข้าม VLAN โดยไม่ตั้งใจ · Cisco จะเตือนผ่าน CDP ว่า %CDP-4-NATIVE_VLAN_MISMATCH

4.10การทดลองข้อ 7 — ให้ VLAN คุยข้ามกันด้วย Router (รูปที่ 10)

ใบแลปเขียนไว้ว่า "เนื่องจากการจัดทำ VLAN ทำให้การสื่อสารระหว่าง VLAN ไม่สามารถทำได้ ดังนั้นอาจต้องการสื่อสารข้าม VLAN จึงจำเป็นต้องมีเร้าเตอร์เข้ามาเพื่อให้สามารถสื่อสารระหว่าง VLAN ได้ ดังรูปที่ 6"

กรอบสีส้มซ้ายมือเขียนว่า VLAN 10 Subnet 10 มีเครื่อง Dino และ Fred ต่อกับสวิตช์ตัวซ้าย · กรอบสีเทาขวามือเขียนว่า VLAN 20 Subnet 20 มีเครื่อง Wilma และ Betty ต่อกับสวิตช์ตัวขวา · สวิตช์ทั้งสองลากลงมาที่ router R1 ด้านล่าง โดยขาซ้ายคือ F0/0 และขาขวาคือ F0/1 มีลูกศรประแสดงเส้นทางของแพ็กเก็ต IP วิ่งจากฝั่งซ้ายลงไปที่ router แล้วขึ้นไปฝั่งขวา
รูปที่ 6 จากใบแลป Lab 4 — VLAN Routing · แพ็กเก็ตจาก VLAN 10 ต้องลงไปหา router ก่อน แล้วจึงขึ้นไปที่ VLAN 20 — สวิตช์ส่งตรงข้าม VLAN ไม่ได้เด็ดขาด
โทโพโลยีที่ต้องสร้าง: PC1 และ PC2 ต่อกับ Switch1 ทางซ้าย · Switch1 ต่อไปที่ Router ตรงกลาง · Router ต่อไปที่ Switch2 ทางขวา · Switch2 ต่อกับ PC4 ด้านบนขวาและ PC3 ด้านล่างขวา · มีเครื่อง Wireshark ต่อขึ้นไปด้านบนของ Router
รูปที่ 10 จากใบแลป Lab 4 — การเชื่อมต่อเพื่อทดสอบ VLAN บนสวิตช์และเร้าเตอร์ · Router มีสายไปสวิตช์ทั้งสองตัว และแต่ละเส้นต้องเป็น trunk เพราะหอบ 2 VLAN
แผน IP ของข้อ 7 — ใบแลปสั่งว่า "ให้มองว่าเป็นคนละเครือข่าย"

ข้อ 1–6 PC ทุกเครื่องอยู่วงเดียวกัน (192.3.128.0/24) แต่ข้อ 7 ต่างออกไป — พอมี router มาคั่น แต่ละ VLAN ต้องเป็นคนละ subnet ไม่งั้น PC จะไม่ยอมส่งแพ็กเก็ตไปที่ gateway เลย · ใช้รูปแบบเดียวกับตารางของ Lab 2 คือเปลี่ยนออกเทตแรก ให้เป็นคนละวง

VLANเครื่องIP ของ PCGatewaySubinterface ของ router
10PC1 (SW1)192.3.128.11192.3.128.1fa0/0.10
20PC2 (SW1)193.3.128.12193.3.128.1fa0/0.20
30PC3 (SW2)194.3.128.13194.3.128.1fa0/1.30
40PC4 (SW2)195.3.128.14195.3.128.1fa0/1.40

Subnet mask ทุกวง = 255.255.255.0 · 4 VLAN แบบนี้ตอบคำถามท้ายการทดลองข้อ 2 ไปในตัว (ที่ถามว่า "หากมีมากกว่า 3 VLAN")

ขั้นตอนที่ 1 — ทำพอร์ตที่ต่อกับ router ให้เป็น trunk

พอร์ต fa1/10 ของแต่ละสวิตช์เปลี่ยนจาก "ต่อไปสวิตช์อีกตัว" มาเป็น "ต่อไป router" — ยังต้องเป็น trunk เหมือนเดิม เพราะต้องหอบ 2 VLAN ขึ้นไปให้ router

[SW1#] Switch1 — PC1 = VLAN 10 · PC2 = VLAN 20 · fa1/10 = trunk ไป router
SW1#configure terminal
SW1(config)#vlan 10
SW1(config-vlan)#name VLAN10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#name VLAN20
SW1(config-vlan)#exit
SW1(config)#interface fa1/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
SW1(config-if)#exit
SW1(config)#interface fa1/2
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 20
SW1(config-if)#exit
SW1(config)#interface fa1/10                        # สายที่ไปหา Router fa0/0
SW1(config-if)#switchport trunk encapsulation dot1q
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan 10,20
SW1(config-if)#no shutdown
SW1(config-if)#end
SW1#copy running-config startup-config

Switch2 ทำเหมือนกันทุกบรรทัด เปลี่ยนแค่ hostname SW2 · vlan 30 ชื่อ VLAN30 ที่ fa1/1 (PC3) · vlan 40 ชื่อ VLAN40 ที่ fa1/2 (PC4) · และ switchport trunk allowed vlan 30,40 ที่ fa1/10 (สายไป Router fa0/1)

ขั้นตอนที่ 2 — Router-on-a-Stick (Listing 10)

[Router#] — สคริปต์เต็ม 4 subinterface คัดลอกวางได้ทั้งก้อน
Router>enable
Router#configure terminal
Router(config)#hostname R1
#
# ① เปิดขาจริงก่อน — ตัวมันเองไม่ต้องมี IP แต่ต้อง no shutdown ไม่งั้น subinterface ไม่ขึ้น
R1(config)#interface fa0/0
R1(config-if)#no ip address
R1(config-if)#no shutdown
R1(config-if)#exit
#
# ② สร้าง subinterface หนึ่งอันต่อหนึ่ง VLAN — เลขหลังจุดตั้งให้ตรงกับ VLAN ID จะจำง่ายที่สุด
R1(config)#interface fa0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 192.3.128.1 255.255.255.0
R1(config-subif)#exit
R1(config)#interface fa0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip address 193.3.128.1 255.255.255.0
R1(config-subif)#exit
#
# ③ ขาที่สองไป Switch2 — ทำแบบเดียวกันเป๊ะ
R1(config)#interface fa0/1
R1(config-if)#no ip address
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface fa0/1.30
R1(config-subif)#encapsulation dot1Q 30
R1(config-subif)#ip address 194.3.128.1 255.255.255.0
R1(config-subif)#exit
R1(config)#interface fa0/1.40
R1(config-subif)#encapsulation dot1Q 40
R1(config-subif)#ip address 195.3.128.1 255.255.255.0
R1(config-subif)#end
R1#show ip interface brief
R1#show ip route
R1#copy running-config startup-config
[VPCS] — ตั้ง IP ใหม่พร้อม gateway (ข้อ 7 ต้องมี gateway แล้ว)
PC1> ip 192.3.128.11 255.255.255.0 192.3.128.1
PC2> ip 193.3.128.12 255.255.255.0 193.3.128.1
PC3> ip 194.3.128.13 255.255.255.0 194.3.128.1
PC4> ip 195.3.128.14 255.255.255.0 195.3.128.1
PC1> save

# ไล่ ping ทีละขั้นเวลาหาจุดพัง
PC1> ping 192.3.128.1    # ① ถึง gateway ตัวเองไหม  (ไม่ผ่าน = trunk ไม่ขึ้น / VLAN ผิด)
PC1> ping 193.3.128.1    # ② ถึง subinterface อีกอันไหม (ไม่ผ่าน = encapsulation ผิด)
PC1> ping 193.3.128.12   # ③ ถึง PC2 ข้าม VLAN  ✅ ttl=63
PC1> ping 194.3.128.13   # ④ ถึง PC3 ข้ามสวิตช์+ข้าม VLAN  ✅ ttl=63
PC1> ping 195.3.128.14   # ⑤ ถึง PC4  ✅ ttl=63
[R1#] show ip interface brief — ผลที่ต้องเห็นเมื่อทุกอย่างถูก
Interface              IP-Address      OK? Method Status                Protocol
FastEthernet0/0        unassigned      YES manual up                    up
FastEthernet0/0.10     192.3.128.1     YES manual up                    up
FastEthernet0/0.20     193.3.128.1     YES manual up                    up
FastEthernet0/1        unassigned      YES manual up                    up
FastEthernet0/1.30     194.3.128.1     YES manual up                    up
FastEthernet0/1.40     195.3.128.1     YES manual up                    up
#   └── ขาจริงไม่มี IP เป็นเรื่องปกติ แต่ต้อง up/up · ถ้าขาจริง down subinterface จะ down ตามทั้งหมด
จุดที่คนพลาดบ่อย — 5 อาการยอดฮิตของ Router-on-a-Stick

① ลืม no shutdown ที่ขาจริง (fa0/0) → subinterface ทุกอัน down ตาม ทั้งที่ config ถูกหมด ② ใส่ IP ที่ขาจริงแทนที่จะใส่ที่ subinterface → เฟรมที่มี tag เข้ามาแล้วไม่มีใครรับ ③ เลข encapsulation dot1Q 10 ไม่ตรงกับ VLAN จริง — เลขที่สำคัญคือเลขหลัง dot1Q ไม่ใช่เลขหลังจุดของชื่อ subinterface ตั้งชื่อ fa0/0.99 แล้วสั่ง encapsulation dot1Q 10 ก็ยังทำงานได้ปกติ (แต่สับสนมาก — ตั้งให้ตรงกันเสมอ) ④ ฝั่งสวิตช์ยังเป็น access ไม่ใช่ trunk → router ได้รับแต่ VLAN เดียว ⑤ PC ลืมใส่ gateway → ping ข้าม VLAN ขึ้น host unreachable ทันทีโดยไม่มีแพ็กเก็ตออกจากเครื่องเลย

ทำไมถึงเรียกว่า "on a stick" และทางเลือกอีกแบบ ส่วนขยาย

ทราฟฟิกจาก VLAN 10 วิ่งขึ้นไปตามสายเส้นเดียว เข้าที่ router แล้ววิ่งกลับลงมาตามสายเส้นเดิมในนามของ VLAN 20 — เหมือนอมยิ้มที่มีแต่ก้านเดียว จึงเรียกว่า router "on a stick" · ข้อเสียคือทราฟฟิกวิ่งสวนกันบนสายเส้นเดียว แบนด์วิดท์จึงถูกใช้สองเท่า

ทางเลือกที่ 2 (แบบในรูปที่ 6): ให้ router ใช้ขาจริงหนึ่งขาต่อหนึ่ง VLAN — fa0/0 ใส่ 192.3.128.1 ต่อกับพอร์ต access VLAN 10 ของสวิตช์ · fa0/1 ใส่ 193.3.128.1 ต่อกับพอร์ต access VLAN 20 · ไม่ต้องมี subinterface และไม่ต้องมี trunk เลย เรียกว่า legacy inter-VLAN routing · ง่ายกว่ามาก แต่เปลืองขา router — 4 VLAN ต้องใช้ 4 ขา ซึ่ง c3725 มีแค่ 2 ขา จึงทำไม่ได้ · คำถามท้ายการทดลองข้อ 2 ที่ถามถึง "มากกว่า 3 VLAN" จึงบังคับให้ต้องใช้ subinterface

4.11VTP และ Port Mirroring (Listing 7–9)

ใบแลปใส่คำสั่งสองชุดนี้ไว้ในหัวข้อ 2 แต่ไม่ได้สั่งให้ทำในหัวข้อการทดลอง — อย่างไรก็ตามควรอ่านไว้เพราะมีในใบแลปและอาจถูกถาม

VTP — VLAN Trunking Protocol (Listing 7 และ 8)

VTP คือกลไกให้สวิตช์ตัวหนึ่ง (server) ประกาศรายชื่อ VLAN ไปให้สวิตช์ตัวอื่น (client) ในโดเมนเดียวกันโดยอัตโนมัติ — สร้าง VLAN ที่เดียวแล้วโผล่ครบทุกตัว ไม่ต้องไปนั่งพิมพ์ vlan 10 ทีละเครื่อง

[Switch#] Listing 7 — ตั้ง VTP (ใบแลปใช้โหมด vlan database)
SW1#vlan database
SW1(vlan)#vtp domain NETLAB
SW1(vlan)#vtp server              # ตัวที่เราจะสร้าง VLAN
SW1(vlan)#exit

SW2#vlan database
SW2(vlan)#vtp domain NETLAB          # ชื่อโดเมนต้องสะกดตรงกันเป๊ะ ตัวพิมพ์เล็กใหญ่มีผล
SW2(vlan)#vtp client              # ตัวที่จะรับ VLAN มาจาก server
SW2(vlan)#exit
[Switch#] Listing 8 — ตรวจสอบ VTP
SW1#show vtp status

VTP Version                     : 2
Configuration Revision          : 4          # ← เลขนี้อันตราย อ่านกล่องล่าง
Maximum VLANs supported locally : 68
Number of existing VLANs        : 7
VTP Operating Mode              : Server
VTP Domain Name                 : NETLAB
VTP Pruning Mode                : Disabled

SW1#show vtp stat                 # ย่อได้ IOS เติมให้เอง
จุดที่คนพลาดบ่อย — VTP ลบ VLAN ของทั้งห้องได้ในคำสั่งเดียว

สวิตช์จะเชื่อข้อมูล VLAN จากตัวที่มี Configuration Revision สูงกว่า เสมอ · ถ้าเอาสวิตช์เก่าที่เคยตั้งชื่อโดเมนเดียวกันและมี revision สูงมาเสียบเข้าเครือข่าย มันจะ "สอน" VLAN ชุดของมันให้สวิตช์ทุกตัว และลบ VLAN ที่มีอยู่ทิ้งหมด · ป้องกันได้ด้วยการตั้งเป็น vtp mode transparent ซึ่งจะไม่รับและไม่ส่ง VLAN ให้ใคร · ในแลปนี้ที่มีสวิตช์แค่ 2 ตัว การพิมพ์ vlan 10 เองทั้งสองตัวปลอดภัยกว่าและตรวจง่ายกว่า — หน้านี้จึงใช้วิธีนั้นตลอด

Port Mirroring (Listing 9)

คือการสั่งให้สวิตช์ ทำสำเนาเฟรมจากพอร์ตหนึ่ง ส่งไปออกอีกพอร์ตหนึ่ง เพื่อให้เครื่องที่รัน Wireshark เห็นทราฟฟิกที่ไม่ได้วิ่งมาหาตัวเอง — จำเป็นเพราะสวิตช์ส่งเฟรมออกเฉพาะพอร์ตปลายทาง ไม่กระจายทุกพอร์ตแบบ hub

[SW1#] Listing 9 — ก๊อปทราฟฟิกจาก trunk ไปให้เครื่อง Wireshark ที่ fa1/3
SW1#configure terminal
SW1(config)#monitor session 1 source interface fa1/10          # ต้นทาง = พอร์ต trunk
SW1(config)#monitor session 1 destination interface fa1/3     # ปลายทาง = พอร์ตที่เสียบ Wireshark
SW1(config)#end
SW1#show monitor session 1
ถ้า mirror แล้วยังไม่เห็น tag ส่วนขยาย

สวิตช์หลายรุ่นถอด tag ออกก่อนส่งเฟรมออกพอร์ต destination ของ mirror → ดักได้แต่ไม่เห็น 802.1Q · แก้ได้ด้วยการเติม encapsulation replicate ต่อท้ายบรรทัด destination (ถ้ารุ่นนั้นรองรับ) · แต่ทางที่ชัวร์ที่สุดใน GNS3 คือคลิกขวาที่เส้น trunk แล้ว Start capture ไปเลย — ดักที่ตัวสายจริง จึงเห็น tag ครบเสมอ และไม่ต้องพึ่ง port mirroring

4.12คำถามท้ายการทดลอง

ข้อ 1 — ทดสอบบน GNS3 ให้ 1 สวิตช์มีมากกว่า 3 VLAN โดยมีการสื่อสารแบบ Tag และ non-tag แสดงรูปการเชื่อมต่อ ระบุการเชื่อมต่อให้ชัดเจน แสดงผลการ ping

ออกแบบให้ครบทั้ง 3 อย่างที่โจทย์ขอในผังเดียว — สวิตช์ 1 ตัว, VLAN 4 วง, และมีทั้งเส้นที่ tag กับเส้นที่ไม่ tag

พอร์ต SW1ต่อกับVLANแบบไหน
fa1/1PC1 192.3.128.1110non-tag (access)
fa1/2PC2 192.3.128.1220non-tag (access)
fa1/3PC3 192.3.128.1330non-tag (access)
fa1/4PC4 192.3.128.1440non-tag (access)
fa1/10SW210,20,30,40tag (trunk 802.1Q)

ฝั่ง SW2 ต่อ PC5–PC8 (192.3.128.15–.18) เข้า VLAN 10, 20, 30, 40 ตามลำดับ แล้วทำ fa1/10 เป็น trunk เหมือนกัน

[SW1#] — สคริปต์ 4 VLAN + trunk
SW1#configure terminal
SW1(config)#vlan 10
SW1(config-vlan)#name VLAN10
SW1(config-vlan)#vlan 20
SW1(config-vlan)#name VLAN20
SW1(config-vlan)#vlan 30
SW1(config-vlan)#name VLAN30
SW1(config-vlan)#vlan 40
SW1(config-vlan)#name VLAN40
SW1(config-vlan)#exit
SW1(config)#interface fa1/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 10
# … ทำซ้ำกับ fa1/2 → vlan 20 · fa1/3 → vlan 30 · fa1/4 → vlan 40 …
SW1(config)#interface fa1/10
SW1(config-if)#switchport trunk encapsulation dot1q
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan 10,20,30,40
SW1(config-if)#end
SW1#show vlan brief
SW1#show interfaces trunk

ผลการ ping ที่ต้องแนบ (ทุกเครื่องอยู่ 192.3.128.0/24 เหมือนกันหมด ไม่มี router)

[VPCS]
PC1> ping 192.3.128.15   # VLAN 10 → VLAN 10 ข้าม trunk   ✅ ผ่าน
PC2> ping 192.3.128.16   # VLAN 20 → VLAN 20 ข้าม trunk   ✅ ผ่าน
PC3> ping 192.3.128.17   # VLAN 30 → VLAN 30 ข้าม trunk   ✅ ผ่าน
PC4> ping 192.3.128.18   # VLAN 40 → VLAN 40 ข้าม trunk   ✅ ผ่าน
PC1> ping 192.3.128.12   # VLAN 10 → VLAN 20 บนสวิตช์เดียวกัน  ❌ ไม่ผ่าน
PC1> ping 192.3.128.16   # VLAN 10 → VLAN 20 ข้ามสวิตช์        ❌ ไม่ผ่าน

สิ่งที่ต้องเขียนอธิบาย — เส้นที่ต่อกับ PC เป็น non-tag (access) เพราะการ์ดของ PC อ่าน 802.1Q ไม่เป็น สวิตช์จึงถอด tag ออกก่อนส่งให้ · ส่วนเส้นระหว่างสวิตช์เป็น tag (trunk) เพราะต้องหอบ 4 VLAN บนสายเส้นเดียว จึงต้องมีป้ายบอกว่าเฟรมไหนเป็นของ VLAN ใด · แนบภาพ Wireshark ที่ดักบนลิงก์ trunk พร้อม filter vlan แสดงบรรทัด 802.1Q Virtual LAN, ... ID: 30 เป็นหลักฐานของการสื่อสารแบบ tag

ข้อ 2 — จากการติดตั้งในเร้าเตอร์ ให้ทดสอบกรณีหากมีมากกว่า 3 VLAN โดยแสดงการ Config ที่เกิดขึ้นและผลการ Config

ตอบด้วยการทำ subinterface 4 อันบนขาเดียว — จุดสำคัญคือให้เห็นว่า ขา router ขาเดียวรองรับได้หลาย VLAN ไม่จำกัดที่จำนวนพอร์ตจริง

VLANSubinterfaceIP ของ gatewayPC ในวงนั้น
10fa0/0.10192.3.128.1 /24PC1 192.3.128.11
20fa0/0.20193.3.128.1 /24PC2 193.3.128.12
30fa0/0.30194.3.128.1 /24PC3 194.3.128.13
40fa0/0.40195.3.128.1 /24PC4 195.3.128.14
[R1#] — 4 VLAN บนขาเดียว (คราวนี้ใช้ fa0/0 อันเดียวทั้งหมด)
R1(config)#interface fa0/0
R1(config-if)#no ip address
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface fa0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 192.3.128.1 255.255.255.0
R1(config-subif)#exit
R1(config)#interface fa0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip address 193.3.128.1 255.255.255.0
R1(config-subif)#exit
R1(config)#interface fa0/0.30
R1(config-subif)#encapsulation dot1Q 30
R1(config-subif)#ip address 194.3.128.1 255.255.255.0
R1(config-subif)#exit
R1(config)#interface fa0/0.40
R1(config-subif)#encapsulation dot1Q 40
R1(config-subif)#ip address 195.3.128.1 255.255.255.0
R1(config-subif)#end

ฝั่งสวิตช์ต้องอนุญาตครบทั้ง 4 VLAN บน trunk เส้นเดียวที่ต่อไปหา router

[SW1#]
SW1(config)#interface fa1/10
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan 10,20,30,40

ผลการ config ที่ต้องแนบ — show ip interface brief ต้องเห็นทั้ง 4 subinterface เป็น up/up · และ show ip route ต้องมีวง C (connected) ครบ 4 วง

[R1#] show ip route — ผลที่ต้องเห็น
C    192.3.128.0/24 is directly connected, FastEthernet0/0.10
C    193.3.128.0/24 is directly connected, FastEthernet0/0.20
C    194.3.128.0/24 is directly connected, FastEthernet0/0.30
C    195.3.128.0/24 is directly connected, FastEthernet0/0.40
#  └── router รู้จักทั้ง 4 วงจากขาจริงขาเดียว จึงส่งข้ามกันได้โดยไม่ต้องใช้ routing protocol เลย

สรุปที่ควรเขียน — จำนวน VLAN ที่ router รองรับได้ไม่ได้ถูกจำกัดด้วยจำนวนพอร์ตจริง แต่ถูกจำกัดด้วยขนาดของช่อง VLAN ID (12 บิต → 1–4094) และแบนด์วิดท์ของขาจริงที่ทุก VLAN ต้องมาใช้ร่วมกัน · เพิ่ม VLAN ที่ 5 ก็แค่เพิ่ม interface fa0/0.50 อีกอันโดยไม่ต้องแตะสายเลย

4.13จุดที่ Mac ต่างจากที่ใบแลปเขียนไว้

เรื่องใบแลปเขียนไว้ (Windows)ของ Mac ต้องทำแบบนี้
เข้า console สวิตช์ลง PuTTY → เลือก connection type = Serialไม่มี PuTTY บน macOS → ls /dev/tty.* แล้ว screen /dev/tty.usbmodemXXXX 9600 · ออกด้วย Ctrl+A แล้ว Ctrl+\ · ดูค้าง screen -ls · ฆ่า screen -X -S <id> quit
ใน GNS3คลิกขวา → Console เปิด PuTTYคลิกขวา → Console เปิด Terminal ของ macOS ให้เอง — ไม่ต้องลงอะไรเพิ่ม
Wiresharkโหลดจาก wireshark.org แล้วกด Next จนจบต้องเลือกรุ่น Arm (MacBook Air M2 = Apple Silicon) และติดตั้ง ChmodBPF.pkg ด้วย ไม่งั้นเปิดมาแล้วไม่มี interface ให้เลือกเลย · ตรวจด้วย id -Gn | grep access_bpf
ดักจับ 802.1Qใบแลปหมายเหตุว่า "Wireshark ควรเป็น Linux" เพราะ driver ของ Windows มักตัด tag ทิ้งบน Mac ก็เจอปัญหาเดียวกันถ้าดักที่การ์ดจริง → ให้ดักที่ลิงก์ใน GNS3 แทน (คลิกขวาที่เส้น trunk → Start capture) ซึ่งเห็น tag ครบเสมอ ไม่ต้องพึ่ง Linux
ตั้ง IP ให้เครื่องตัวเองControl Panel → Network and Sharing Center → Change adapter settings → IPv4 → PropertiesSystem Settings → Network → คลิกการ์ด → Details… → TCP/IP → Configure IPv4 = Manually
ปิด FirewallWindows Defender Firewall → Turn offSystem Settings → Network → Firewall → ปิดสวิตช์ (เปิดคืนหลังทำแลปเสร็จ)
ปิด Wi-Fiปิดจากหน้า Network Connectionsคลิกไอคอน Wi-Fi บนแถบเมนู → สลับปิด (ใบแลปย้ำว่าต้องปิดก่อนเริ่ม)
พอร์ต Ethernetโน้ตบุ๊ก Windows ส่วนใหญ่มีช่อง RJ-45 ในตัวMacBook Air M2 ไม่มีช่อง Ethernet → ต้องใช้ USB-C → Ethernet adapter · ชื่อการ์ดจะเป็น en5, en6 แล้วแต่เครื่อง
GNS3ไฟล์ .exeไฟล์ .dmg เวอร์ชัน 2.2.53 จาก GitHub release · local server รัน dynamips บน Apple Silicon ได้ปกติ ไม่ต้องมี VM · ถ้าใช้ server ของ KKU ต้องต่อ VPN KKU ก่อนเปิด GNS3
ตัวแปลง consoleเสียบ USB-A ได้ตรง ๆMacBook Air M2 มีแต่ USB-C → ต้องมีตัวแปลง USB-A → USB-C หรือ hub เตรียมไปด้วยทุกครั้ง

4.14เช็คว่าทำถูกไหม

คำสั่งต้องได้ผลอะไร
show vlan / show vlan brief ข้อสอบสั่งส่งเห็น VLAN 10 และ 20 สถานะ active พร้อมรายชื่อพอร์ตที่ถูกต้องอยู่ใต้แต่ละ VLAN · brief คือแบบย่อ อ่านง่ายกว่า
show vlan-switch brief เฉพาะ c3725/c3745 + NM-16ESWบน router ที่ใส่โมดูลสวิตช์ ต้องใช้คำสั่งนี้แทน — show vlan จะแสดงข้อมูลของฝั่ง router ไม่ใช่ของโมดูลสวิตช์
show interfaces trunkStatus ต้องเป็น trunking · Encapsulation เป็น 802.1q · และคอลัมน์ Vlans allowed ต้องมีครบทั้ง 10,20
show interface fa1/10 switchport (Listing 6)Operational Mode: trunk · Operational Trunking Encapsulation: dot1q · Trunking VLANs Enabled: 10,20
show mac-address-tableเห็นคอลัมน์ VLAN — MAC ของ PC1 อยู่ VLAN 10 · ของ PC2 อยู่ VLAN 20 · ตาราง MAC แยกกันคนละ VLAN
show ip interface brief (ที่ router)ทุก subinterface fa0/0.10, fa0/0.20, … ต้อง up / up และขาจริงต้อง up ด้วย
show ip route (ที่ router)ต้องมีแถว C ครบทุกวงที่ตั้ง — เช่น C 192.3.128.0/24 is directly connected, FastEthernet0/0.10
ping จาก VPCSใน VLAN เดียวกัน ผ่าน ttl=64 · ข้าม VLAN ผ่าน router ผ่าน ttl=63 · ข้าม VLAN โดยไม่มี router ต้องไม่ผ่าน
Wireshark filter vlanบนลิงก์ trunk ต้องเห็นบรรทัด 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 10 · บนลิงก์ access ต้องไม่เห็นเลย
[SW1#] show mac-address-table — สังเกตคอลัมน์ VLAN
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    0050.7966.6800    DYNAMIC     Fa1/1     # PC1
  10    0050.7966.6802    DYNAMIC     Fa1/10    # PC3 เรียนรู้มาทาง trunk
  20    0050.7966.6801    DYNAMIC     Fa1/2     # PC2
  20    0050.7966.6803    DYNAMIC     Fa1/10    # PC4 เรียนรู้มาทาง trunk เส้นเดียวกัน
#  └── MAC สองตัวสุดท้ายมาจากพอร์ตเดียวกันแต่คนละ VLAN — เป็นไปได้เพราะ trunk มี tag บอก

4.15ถ้าไม่ผ่าน ให้ไล่ตามนี้

อาการสาเหตุคำสั่งแก้
show vlan ขึ้น % Invalid input detectedใช้ c3725/c3745 + NM-16ESW ซึ่งเป็น router ที่มีโมดูลสวิตช์ใช้ show vlan-switch หรือ show vlan-switch brief แทน
พิมพ์ switchport … แล้วขึ้น Invalid inputพอร์ตนั้นเป็น routed port ของ router ไม่ใช่พอร์ตสวิตช์ (เช่นเผลอไปทำที่ fa0/0)ใช้พอร์ตของโมดูลสวิตช์ (fa1/x) · ตรวจชื่อพอร์ตจริงด้วย show ip interface brief
switchport trunk encapsulation dot1q ขึ้น Invalid inputรุ่นนั้นรองรับ dot1Q อย่างเดียว อยู่แล้ว (2950 / 3650 / NM-16ESW)ข้ามบรรทัดนี้ไปเลย แล้วสั่ง switchport mode trunk ตรง ๆ
Command rejected: An interface whose trunk encapsulation is "Auto" …สั่ง switchport mode trunk ก่อน encapsulationสั่ง switchport trunk encapsulation dot1q ก่อน แล้วค่อย switchport mode trunk
ping ข้าม VLAN ไม่ผ่านนี่คือผลที่ถูกต้อง — VLAN ตัด broadcast domainถ้าโจทย์อยากให้ผ่าน ต้องใส่ router + subinterface → §4.10
ping ใน VLAN เดียวกันแต่คนละสวิตช์ ไม่ผ่านtrunk ไม่ขึ้น / ตั้ง trunk ข้างเดียว / allowed vlan ไม่ครบ / ยังไม่ได้สร้าง VLAN บนสวิตช์ปลายทางshow interfaces trunk ทั้งสองตัว · show vlan brief ทั้งสองตัวต้องมี VLAN ครบเหมือนกัน
show vlan brief ไม่เห็นพอร์ต trunk ใต้ VLAN ไหนเลยเป็นพฤติกรรมปกติ — พอร์ต trunk ไม่ถูกลิสต์ใต้ VLAN ใด VLAN หนึ่ง เพราะมันอยู่หลาย VLAN พร้อมกันตรวจด้วย show interfaces trunk แทน · อย่าตกใจแล้วไปแก้ config
PC ping ไม่ออกเลยหลังย้าย VLANลบ VLAN ทิ้งแต่พอร์ตยังชี้ไป VLAN นั้น → พอร์ต inactiveshow vlan brief ดูว่า VLAN ยังอยู่และ active · ถ้าไม่มี ให้สร้างใหม่หรือย้ายพอร์ตกลับ switchport access vlan 1
เสียบสองสายระหว่างสวิตช์แล้ว console หน่วง / ไฟกะพริบรัวswitching loop — STP ถูกปิดอยู่ จึงเกิด broadcast stormดึงสายออกหนึ่งเส้นทันที · show spanning-tree ต้องเห็นพอร์ตหนึ่งเป็น BLK · เปิดด้วย spanning-tree vlan 10,20
Wireshark ไม่เห็น tag 802.1Qดักที่ access port (tag ถูกถอดแล้ว) · หรือ ping ระหว่างเครื่องที่อยู่ native VLAN · หรือ driver การ์ดจริงตัด tagดักที่ ลิงก์ trunk ใน GNS3 (คลิกขวาที่เส้น → Start capture) · filter vlan · ping ระหว่าง VLAN 10 หรือ 20
Wireshark ไม่มี interface ให้เลือกเลยยังไม่ได้ลง ChmodBPF.pkg บน macOSลง ChmodBPF.pkg → logout/login → id -Gn | grep access_bpf
Subinterface ของ router ขึ้น down / downลืม no shutdown ที่ ขาจริง (fa0/0)interface fa0/0 → no shutdown · subinterface จะขึ้นตามทันที
PC ping gateway ได้ แต่ ping ข้าม VLAN ไม่ได้ปลายทางลืมตั้ง gateway จึงตอบกลับไม่ถูกตั้ง ip <addr> 255.255.255.0 <gateway> ให้ครบทุก PC แล้ว show ip ตรวจ
ทำมาทั้งชั่วโมง อุปกรณ์ restart แล้ว config หายไม่ได้บันทึกลง NVRAM · และ VLAN เก็บอยู่คนละที่ (vlan.dat)copy running-config startup-config ทุกครั้งที่ทำเสร็จก้อนหนึ่ง

4.16ถ้าออกสอบ ต้องทำอะไรได้บ้าง

ข้อสอบข้อ 3 (10 คะแนน) — โจทย์เต็ม ๆ ของปีที่แล้ว

"ตั้ง VLAN ตามรูป ให้ ping กันได้ + ส่ง show vlan ของทุก switch"

"ตามรูป" = รูปที่ 9 — 2 สวิตช์ · PC1 กับ PC3 อยู่ VLAN เดียวกัน · PC2 กับ PC4 อยู่อีก VLAN · "ให้ ping กันได้" หมายถึงคู่ที่อยู่ VLAN เดียวกันต้อง ping ถึงกันข้ามสวิตช์ได้ ไม่ได้แปลว่าทุกคู่ต้องผ่าน

  1. วาดผังและจดตารางลงกระดาษก่อนแตะคีย์บอร์ด — พอร์ตไหนเป็น access VLAN อะไร พอร์ตไหนเป็น trunk · เสียเวลา 2 นาทีตรงนี้ ประหยัดได้ 20 นาทีทีหลัง
  2. ต่อสายให้ครบตามรูปที่ 9 แล้วกด Start ทุกตัว จนจุดเป็นสีเขียว
  3. ตั้ง IP ให้ VPCS ทั้ง 4 ตัว — วงเดียวกันหมด 192.3.128.11 ถึง .14 mask 255.255.255.0 แล้ว save
  4. สร้าง VLAN ให้ครบ "ทั้งสองสวิตช์" — คนพลาดกันตรงนี้มากที่สุด สร้างแค่ตัวเดียวแล้วหาสาเหตุไม่เจอ
  5. ตั้ง access port ให้ PC ทุกเครื่อง — switchport mode access แล้วตามด้วย switchport access vlan
  6. ตั้ง trunk ที่สายระหว่างสวิตช์ ทั้งสองฝั่ง + switchport trunk allowed vlan 10,20
  7. ยืนยันด้วย show interfaces trunk ว่าขึ้น trunking ก่อนไป ping
  8. ping ให้ครบทุกคู่แล้วเก็บภาพ — ทั้งคู่ที่ผ่านและคู่ที่ไม่ผ่าน (คู่ที่ไม่ผ่านก็เป็นคำตอบ)
  9. เก็บ show vlan brief ของ "ทุก switch" ตามที่โจทย์สั่ง — อย่าส่งแค่ตัวเดียว
  10. copy running-config startup-config ทุกตัวก่อนลุกจากเครื่อง
สคริปต์ห้องสอบ — ก็อปวางทั้งก้อน แก้แค่ hostname
[Switch1] — วางทีเดียวจบ
enable
configure terminal
hostname SW1
vlan 10
name VLAN10
exit
vlan 20
name VLAN20
exit
interface fa1/1
switchport mode access
switchport access vlan 10
no shutdown
exit
interface fa1/2
switchport mode access
switchport access vlan 20
no shutdown
exit
interface fa1/10
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 10,20
no shutdown
end
show vlan brief
show interfaces trunk
copy running-config startup-config
[Switch2] — เหมือนกันทุกบรรทัด เปลี่ยนแค่ SW1 → SW2 (PC3 อยู่ fa1/1 · PC4 อยู่ fa1/2)
enable
configure terminal
hostname SW2
vlan 10
name VLAN10
exit
vlan 20
name VLAN20
exit
interface fa1/1
switchport mode access
switchport access vlan 10
no shutdown
exit
interface fa1/2
switchport mode access
switchport access vlan 20
no shutdown
exit
interface fa1/10
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 10,20
no shutdown
end
show vlan brief
show interfaces trunk
copy running-config startup-config
ถ้าโจทย์ในห้องสอบเพิ่มว่า "ให้ทุกเครื่อง ping กันได้หมด"

แปลว่าต้องเพิ่ม router เข้ามาด้วย เพราะ VLAN ต่างกัน ping ข้ามกันเองไม่ได้ — เปลี่ยน fa1/10 ของ SW1 ให้ต่อไป router แทน แล้ววาง IP ใหม่คนละ subnet ต่อ VLAN พร้อมตั้ง gateway ให้ PC ทุกเครื่อง → สคริปต์อยู่ที่ §4.10 ทั้งชุด

4.17เช็คความเข้าใจ

PC1 (192.3.128.11) อยู่ VLAN 10 และ PC2 (192.3.128.12) อยู่ VLAN 20 — ทั้งคู่เสียบอยู่กับสวิตช์ตัวเดียวกัน และอยู่ subnet เดียวกัน mask 255.255.255.0 · PC1 ping PC2 จะเกิดอะไรขึ้น
ผ่าน เพราะอยู่ subnet เดียวกัน ไม่ต้องผ่าน router — VLAN มีผลกับ broadcast เท่านั้น
ผ่าน แต่ค่า TTL จะลดลง 1 เพราะสวิตช์ต้องส่งข้าม VLAN ให้
ไม่ผ่าน — ARP request ของ PC1 ถูกส่งออกเฉพาะพอร์ตใน VLAN 10 จึงไม่ถึง PC2 และไม่มีแพ็กเก็ต ICMP ออกจากเครื่องเลย
ไม่ผ่านตอนแรก แต่ผ่านหลังจากรอ 30 วินาทีให้สวิตช์เรียนรู้ MAC ครบ
subnet เดียวกันไม่ได้แปลว่าคุยกันได้ — เมื่อ PC1 เห็นว่าปลายทางอยู่ subnet เดียวกัน มันจะไม่ส่งไป gateway แต่จะ broadcast ARP ถามหา MAC ของ 192.3.128.12 โดยตรง · สวิตช์ที่ตั้ง VLAN แล้วส่ง broadcast ออกเฉพาะพอร์ตใน VLAN เดียวกัน ARP จึงไปไม่ถึง PC2 · ไม่มี ARP reply = ไม่มี MAC ปลายทาง = ไม่มีเฟรม ICMP ถูกสร้างขึ้นเลย เปิด Wireshark ดูก็จะเห็นแต่ ARP request ซ้ำ ๆ ไม่มี ICMP สักตัว · และสวิตช์ไม่มีวันลด TTL เพราะทำงานที่เลเยอร์ 2 ไม่แตะ IP header · การจะให้ผ่านต้องมี router มาทำ inter-VLAN routing และต้องเปลี่ยนให้แต่ละ VLAN เป็นคนละ subnet ด้วย
ตั้ง trunk ที่ fa1/10 เสร็จแล้ว ping ผ่านทุกคู่ที่ควรผ่าน · แต่พอสั่ง show vlan brief กลับไม่เห็น Fa1/10 อยู่ใต้ VLAN 10 หรือ VLAN 20 เลย แม้แต่ VLAN 1 ก็ไม่มี — ควรทำอย่างไร
สั่ง switchport access vlan 10 เพิ่มที่ fa1/10 เพื่อให้มันโผล่ในตาราง
ไม่ต้องทำอะไร — พอร์ต trunk ไม่ถูกลิสต์ใต้ VLAN ใด VLAN หนึ่ง ให้ตรวจด้วย show interfaces trunk แทน
ลบ VLAN ทั้งหมดแล้วสร้างใหม่ เพราะฐานข้อมูล VLAN เสีย
ต้องสั่ง vtp mode server ก่อน ตาราง VLAN ถึงจะแสดงพอร์ต trunk
show vlan brief แสดงเฉพาะ access port ในคอลัมน์ Ports เพราะแต่ละ access port สังกัด VLAN เดียวเท่านั้น จึงลิสต์ได้ · แต่ trunk port สังกัดหลาย VLAN พร้อมกัน IOS จึงไม่เอาไปใส่ใต้ VLAN ไหนเลย — นี่คือพฤติกรรมปกติ ไม่ใช่อาการเสีย · ถ้าเผลอสั่ง switchport access vlan 10 ทับลงไป พอร์ตจะกลายเป็น access ทันที VLAN 20 ก็จะข้ามไปไม่ได้ กลายเป็นพังของจริง · เครื่องมือที่ถูกต้องคือ show interfaces trunk ซึ่งบอกทั้ง Mode, Encapsulation, Status และรายการ VLAN ที่อนุญาต
เสียบเครื่องที่รัน Wireshark เข้าพอร์ต fa1/3 ซึ่งเป็น access VLAN 10 แล้ว ping ระหว่าง PC1 กับ PC3 (VLAN 10 คนละสวิตช์) — เห็นแพ็กเก็ต ICMP วิ่งมา แต่ไม่มีบรรทัด 802.1Q Virtual LAN เลยสักเฟรม เพราะอะไร
Wireshark เป็นรุ่น Intel ไม่ใช่ Arm จึงถอดรหัส tag ไม่ได้
ต้องใส่ filter icmp ก่อน แล้ว tag ถึงจะโผล่
เพราะ VLAN 10 ถูกตั้งเป็น native vlan สวิตช์จึงไม่ติด tag ให้
เพราะดักที่ access port — สวิตช์ถอด tag ออกก่อนส่งเฟรมออกพอร์ต access เสมอ ต้องไปดักที่ลิงก์ trunk
tag 802.1Q มีชีวิตอยู่เฉพาะบนสาย trunk เท่านั้น · เฟรมเข้ามาที่ access port แบบไม่มี tag → สวิตช์แปะ tag ตอนส่งออก trunk → สวิตช์ปลายทางอ่าน tag แล้วถอดออกก่อนส่งให้ PC ทาง access port · เหตุผลคือการ์ดเน็ตเวิร์กทั่วไปอ่าน 802.1Q ไม่เป็น ถ้าส่ง tag ไปให้มันก็จะทิ้งเฟรมนั้น · ทางแก้ใน GNS3 คือคลิกขวาที่เส้น trunk แล้วเลือก Start capture แล้วใส่ filter vlan · ตัวเลือกข้อ 3 ผิดในสถานการณ์นี้เพราะ native vlan ค่าเริ่มต้นคือ VLAN 1 ไม่ใช่ 10 (แต่ถ้าตั้ง native vlan เป็น 10 จริง ๆ ก็จะไม่เห็น tag เหมือนกัน — เป็นอีกกับดักหนึ่งที่ต้องระวัง)
เก็บก่อนออกจากแลปนี้

① VLAN = ตัด broadcast domain ที่ระดับพอร์ต — สวิตช์ 1 ตัวกลายเป็นหลายสวิตช์เสมือน · ping ข้าม VLAN ไม่ผ่านคือคำตอบที่ถูก ② Access port = VLAN เดียว ไม่มี tag (ต่อ PC) · Trunk port = หลาย VLAN มี tag (ต่อสวิตช์/router) ③ 802.1Q tag = 4 ไบต์ แทรกระหว่าง Source Address กับ Type · TPID 0x8100 + Priority 3 บิต + Flag 1 บิต + VLAN ID 12 บิต (ใช้จริง 1–4094) ④ คำสั่งหลัก: vlan 10 → name → interface range fa1/1 - 2 → switchport mode access → switchport access vlan 10 · trunk: switchport trunk encapsulation dot1q → switchport mode trunk → switchport trunk allowed vlan 10,20 ⑤ ตรวจด้วย show vlan brief + show interfaces trunk · บน c3725 ต้องใช้ show vlan-switch ⑥ Router-on-a-Stick: interface fa0/0.10 → encapsulation dot1Q 10 → ip address 192.3.128.1 255.255.255.0 · อย่าลืม no shutdown ที่ขาจริง ⑦ ดักจับ tag ได้เฉพาะบนลิงก์ trunk filter vlan ⑧ ข้อสอบสั่งส่ง show vlan ของทุก switch — ไม่ใช่ตัวเดียว