Cisco Catalyst — VLAN + Trunk + Inter-VLAN Routing (SVI) ทีละ Step
คู่มือตั้งค่า Cisco Catalyst L3 Switch ครบวงจร ตั้งแต่ VLAN, Trunk, SVI Inter-VLAN Routing ไปจนถึง ACL กั้น Traffic ระหว่าง VLAN พร้อม Verify commands
1. Topology ตัวอย่าง (3 VLAN: USER / SERVER / MGMT)#
ก่อนลง CLI ขอให้ทุกคนเห็นภาพรวมของ Lab นี้ก่อน เราใช้ Cisco Catalyst 3850 (L3 Switch) เป็น Core Switch ทำหน้าที่ทั้ง Switching และ Inter-VLAN Routing ในคราวเดียวกัน โดยไม่ต้องพึ่ง Router ภายนอก
| VLAN | ชื่อ | Subnet | Gateway (SVI) |
|---|---|---|---|
| 10 | USER | 192.168.10.0/24 | 192.168.10.1 |
| 20 | SERVER | 192.168.20.0/24 | 192.168.20.1 |
| 30 | MGMT | 192.168.30.0/24 | 192.168.30.1 |

Connections:
Gi1/0/1–8→ Access Port → VLAN 10 (User PC)Gi1/0/9–16→ Access Port → VLAN 20 (Server)Gi1/0/17–20→ Access Port → VLAN 30 (Management)Gi1/0/48→ Trunk Port → uplink ไปยัง Core/WAN Router
2. Initial Switch Baseline (enable secret, hostname, domain, SSH)#
เริ่มต้นด้วย Baseline config เพื่อให้ Switch พร้อมใช้งานและ Secure ก่อนทำอื่น
! ตั้ง Hostname
Switch> enable
Switch# configure terminal
Switch(config)# hostname C9-CORE-SW01
! ตั้ง Enable Secret (ใช้ Type 9 scrypt ถ้า IOS รองรับ)
C9-CORE-SW01(config)# enable secret Str0ng@Secret!
! Domain Name สำหรับ SSH Key Generation
C9-CORE-SW01(config)# ip domain-name c9network.local
! สร้าง RSA Key ขนาด 2048-bit
C9-CORE-SW01(config)# crypto key generate rsa modulus 2048
! เปิด SSH v2 เท่านั้น (ปิด SSHv1)
C9-CORE-SW01(config)# ip ssh version 2
C9-CORE-SW01(config)# ip ssh time-out 60
C9-CORE-SW01(config)# ip ssh authentication-retries 3
! ตั้ง Local User สำหรับ SSH Login
C9-CORE-SW01(config)# username admin privilege 15 secret Admin@C9!
! ตั้ง VTY Lines ให้ใช้ SSH เท่านั้น
C9-CORE-SW01(config)# line vty 0 15
C9-CORE-SW01(config-line)# transport input ssh
C9-CORE-SW01(config-line)# login local
C9-CORE-SW01(config-line)# exec-timeout 10 0
C9-CORE-SW01(config-line)# exit
! ตั้ง Console
C9-CORE-SW01(config)# line console 0
C9-CORE-SW01(config-line)# login local
C9-CORE-SW01(config-line)# exec-timeout 5 0
C9-CORE-SW01(config-line)# exit
! บันทึก Config
C9-CORE-SW01# write memory
ห้ามใช้ transport input all บน VTY ใน Production — เปิดแค่ SSH เท่านั้น เพื่อป้องกัน Telnet (Plaintext)
3. สร้าง VLAN 10/20/30 + ตั้งชื่อ#
C9-CORE-SW01(config)# vlan 10
C9-CORE-SW01(config-vlan)# name USER
C9-CORE-SW01(config-vlan)# exit
C9-CORE-SW01(config)# vlan 20
C9-CORE-SW01(config-vlan)# name SERVER
C9-CORE-SW01(config-vlan)# exit
C9-CORE-SW01(config)# vlan 30
C9-CORE-SW01(config-vlan)# name MGMT
C9-CORE-SW01(config-vlan)# exit
ตั้งชื่อ VLAN ให้สื่อความหมายชัดเจนเสมอ ช่วยในการ Troubleshoot และ Audit ภายหลัง — ใช้ Capital letters และหลีกเลี่ยงช่องว่าง
ตรวจสอบว่า VLAN ถูกสร้างแล้ว:
C9-CORE-SW01# show vlan brief
Output ที่ควรเห็น:
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active
10 USER active
20 SERVER active
30 MGMT active
4. ตั้งค่า Access Port (กำหนด user port → VLAN 10)#
Access Port คือ Port ที่เชื่อมต่อกับ End Device (PC, IP Phone, Server) โดยตรง — แต่ละ Port จะอยู่ใน VLAN เดียวเท่านั้น
! กลุ่ม User Port → VLAN 10
C9-CORE-SW01(config)# interface range GigabitEthernet1/0/1 - 8
C9-CORE-SW01(config-if-range)# description USER-VLAN10
C9-CORE-SW01(config-if-range)# switchport mode access
C9-CORE-SW01(config-if-range)# switchport access vlan 10
C9-CORE-SW01(config-if-range)# switchport nonegotiate
C9-CORE-SW01(config-if-range)# spanning-tree portfast
C9-CORE-SW01(config-if-range)# exit
! กลุ่ม Server Port → VLAN 20
C9-CORE-SW01(config)# interface range GigabitEthernet1/0/9 - 16
C9-CORE-SW01(config-if-range)# description SERVER-VLAN20
C9-CORE-SW01(config-if-range)# switchport mode access
C9-CORE-SW01(config-if-range)# switchport access vlan 20
C9-CORE-SW01(config-if-range)# switchport nonegotiate
C9-CORE-SW01(config-if-range)# spanning-tree portfast
C9-CORE-SW01(config-if-range)# exit
! กลุ่ม Management Port → VLAN 30
C9-CORE-SW01(config)# interface range GigabitEthernet1/0/17 - 20
C9-CORE-SW01(config-if-range)# description MGMT-VLAN30
C9-CORE-SW01(config-if-range)# switchport mode access
C9-CORE-SW01(config-if-range)# switchport access vlan 30
C9-CORE-SW01(config-if-range)# switchport nonegotiate
C9-CORE-SW01(config-if-range)# spanning-tree portfast
C9-CORE-SW01(config-if-range)# exit
switchport nonegotiate ปิด DTP (Dynamic Trunking Protocol) บน Access Port — ป้องกัน VLAN Hopping Attack
5. ตั้งค่า Trunk Port (uplink → allowed VLANs)#
Trunk Port ใช้สำหรับลิงก์ระหว่าง Switch กับ Switch หรือ Switch กับ Router โดย 802.1Q Tagging ให้ Frame ระบุได้ว่ามาจาก VLAN ไหน
! Uplink Trunk Port → Core/WAN Router
C9-CORE-SW01(config)# interface GigabitEthernet1/0/48
C9-CORE-SW01(config-if)# description TRUNK-UPLINK-TO-CORE
C9-CORE-SW01(config-if)# switchport trunk encapsulation dot1q
C9-CORE-SW01(config-if)# switchport mode trunk
C9-CORE-SW01(config-if)# switchport trunk native vlan 999
C9-CORE-SW01(config-if)# switchport trunk allowed vlan 10,20,30
C9-CORE-SW01(config-if)# switchport nonegotiate
C9-CORE-SW01(config-if)# exit
ให้ตั้ง native vlan เป็น VLAN ที่ไม่ได้ใช้งาน (เช่น 999) และ prune VLAN 1 ออกจาก Trunk เสมอ เพื่อป้องกัน Native VLAN Mismatch attack
ตรวจสอบ Trunk:
C9-CORE-SW01# show interfaces trunk
6. เปิด IP Routing บน L3 Switch#
นี่คือ Step ที่หลายคนลืม — โดย Default L3 Switch ทำงานเหมือน L2 Switch ธรรมดา ต้องเปิด ip routing ก่อนถึงจะ Route ระหว่าง VLAN ได้
C9-CORE-SW01(config)# ip routing
ถ้า Switch ของคุณเป็น Catalyst รุ่น 2960/2960X (L2 only) จะไม่มี ip routing command — ต้องใช้ External Router แบบ Router-on-a-Stick แทน
7. สร้าง SVI สำหรับ VLAN แต่ละตัว + ip address + no shut#
SVI (Switched Virtual Interface) คือ Virtual Interface บน Switch ที่ทำหน้าที่เป็น Default Gateway ให้กับแต่ละ VLAN — เปรียบเหมือน Router Interface แต่อยู่ภายใน Switch
! SVI สำหรับ VLAN 10 (USER)
C9-CORE-SW01(config)# interface Vlan10
C9-CORE-SW01(config-if)# description SVI-USER-VLAN10
C9-CORE-SW01(config-if)# ip address 192.168.10.1 255.255.255.0
C9-CORE-SW01(config-if)# no shutdown
C9-CORE-SW01(config-if)# exit
! SVI สำหรับ VLAN 20 (SERVER)
C9-CORE-SW01(config)# interface Vlan20
C9-CORE-SW01(config-if)# description SVI-SERVER-VLAN20
C9-CORE-SW01(config-if)# ip address 192.168.20.1 255.255.255.0
C9-CORE-SW01(config-if)# no shutdown
C9-CORE-SW01(config-if)# exit
! SVI สำหรับ VLAN 30 (MGMT)
C9-CORE-SW01(config)# interface Vlan30
C9-CORE-SW01(config-if)# description SVI-MGMT-VLAN30
C9-CORE-SW01(config-if)# ip address 192.168.30.1 255.255.255.0
C9-CORE-SW01(config-if)# no shutdown
C9-CORE-SW01(config-if)# exit
SVI จะขึ้นเป็น up/up ก็ต่อเมื่อมี Active Port อย่างน้อย 1 Port ใน VLAN นั้น — ถ้า VLAN ว่างเปล่า SVI จะเป็น up/down
ตรวจสอบ SVI:
C9-CORE-SW01# show ip interface brief | include Vlan
Output ที่ควรเห็น:
Vlan10 192.168.10.1 YES manual up up
Vlan20 192.168.20.1 YES manual up up
Vlan30 192.168.30.1 YES manual up up
8. Set Default Gateway บนแต่ละ VLAN (DHCP option หรือ static)#
แบบ Static (ตั้งบน Client โดยตรง)#
| VLAN | Client IP | Default Gateway |
|---|---|---|
| 10 (USER) | 192.168.10.x | 192.168.10.1 |
| 20 (SERVER) | 192.168.20.x | 192.168.20.1 |
| 30 (MGMT) | 192.168.30.x | 192.168.30.1 |
แบบ DHCP Pool บน Switch (ตัวเลือก)#
ถ้าต้องการให้ Switch แจก IP ผ่าน DHCP ให้ตั้ง DHCP Pool ดังนี้:
! DHCP Pool สำหรับ VLAN 10 (USER)
C9-CORE-SW01(config)# ip dhcp pool VLAN10-USER
C9-CORE-SW01(dhcp-config)# network 192.168.10.0 255.255.255.0
C9-CORE-SW01(dhcp-config)# default-router 192.168.10.1
C9-CORE-SW01(dhcp-config)# dns-server 8.8.8.8 8.8.4.4
C9-CORE-SW01(dhcp-config)# lease 1
C9-CORE-SW01(dhcp-config)# exit
! Exclude Gateway IP ไม่ให้ถูกแจก
C9-CORE-SW01(config)# ip dhcp excluded-address 192.168.10.1 192.168.10.10
! DHCP Pool สำหรับ VLAN 20 (SERVER)
C9-CORE-SW01(config)# ip dhcp pool VLAN20-SERVER
C9-CORE-SW01(dhcp-config)# network 192.168.20.0 255.255.255.0
C9-CORE-SW01(dhcp-config)# default-router 192.168.20.1
C9-CORE-SW01(dhcp-config)# dns-server 8.8.8.8
C9-CORE-SW01(dhcp-config)# lease 7
C9-CORE-SW01(dhcp-config)# exit
C9-CORE-SW01(config)# ip dhcp excluded-address 192.168.20.1 192.168.20.20
Default Route ออก Internet#
! Default Route ไปยัง WAN Router
C9-CORE-SW01(config)# ip route 0.0.0.0 0.0.0.0 203.0.113.1
9. (Optional) ACL กั้น USER → SERVER เฉพาะ Port ที่จำเป็น#
ในสถานการณ์จริง เราไม่ต้องการให้ User ทั่วไป (VLAN 10) เข้าถึง Server (VLAN 20) ได้ทุก Port — ใช้ Extended ACL กำหนดเฉพาะ Traffic ที่อนุญาต
! สร้าง Extended ACL: อนุญาต HTTP/HTTPS จาก USER → SERVER เท่านั้น
C9-CORE-SW01(config)# ip access-list extended ACL-USER-TO-SERVER
C9-CORE-SW01(config-ext-nacl)# remark Allow HTTP from USER to SERVER
C9-CORE-SW01(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 80
C9-CORE-SW01(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 443
C9-CORE-SW01(config-ext-nacl)# remark Block all other USER → SERVER traffic
C9-CORE-SW01(config-ext-nacl)# deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
C9-CORE-SW01(config-ext-nacl)# remark Permit all other traffic (USER → Internet, MGMT, etc.)
C9-CORE-SW01(config-ext-nacl)# permit ip any any
C9-CORE-SW01(config-ext-nacl)# exit
! Apply ACL บน SVI VLAN 10 (Inbound — Traffic จาก User เข้า Switch)
C9-CORE-SW01(config)# interface Vlan10
C9-CORE-SW01(config-if)# ip access-group ACL-USER-TO-SERVER in
C9-CORE-SW01(config-if)# exit
Apply ACL แบบ in บน SVI VLAN 10 หมายถึง Filter Traffic ขาออกจาก VLAN 10 ก่อนที่จะ Route ไป VLAN อื่น — ตรวจสอบทิศทาง ACL ให้ถูกต้องก่อน Apply เสมอ
ตรวจสอบ ACL:
C9-CORE-SW01# show ip access-lists ACL-USER-TO-SERVER
10. Verify (show vlan brief, show interface trunk, show ip route, ping)#
ตรวจสอบ VLAN#
C9-CORE-SW01# show vlan brief
ตรวจสอบ Trunk#
C9-CORE-SW01# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi1/0/48 on 802.1q trunking 999
Port Vlans allowed on trunk
Gi1/0/48 10,20,30
Port Vlans allowed and active in management domain
Gi1/0/48 10,20,30
ตรวจสอบ IP Routing Table#
C9-CORE-SW01# show ip route
C 192.168.10.0/24 is directly connected, Vlan10
C 192.168.20.0/24 is directly connected, Vlan20
C 192.168.30.0/24 is directly connected, Vlan30
S* 0.0.0.0/0 [1/0] via 203.0.113.1

ตรวจสอบ SVI Status#
C9-CORE-SW01# show ip interface brief | include Vlan
ทดสอบ Connectivity ด้วย Ping ข้าม VLAN#
! Ping จาก Switch ไป Client VLAN 10
C9-CORE-SW01# ping 192.168.10.100 source Vlan10
! Ping ข้าม VLAN: จาก SVI10 ไป SVI20
C9-CORE-SW01# ping 192.168.20.1 source Vlan10
ตรวจสอบ DHCP Binding (ถ้าใช้ DHCP)#
C9-CORE-SW01# show ip dhcp binding
C9-CORE-SW01# show ip dhcp pool
ตรวจสอบ ACL Hit Count#
C9-CORE-SW01# show ip access-lists ACL-USER-TO-SERVER
สรุป Checklist ก่อน Production#
| รายการ | Status |
|---|---|
| Hostname + Enable Secret ตั้งแล้ว | ✅ |
| SSH v2 เปิดแล้ว, Telnet ปิดแล้ว | ✅ |
| VLAN 10/20/30 สร้างและตั้งชื่อแล้ว | ✅ |
| Access Port แต่ละ VLAN ตั้งค่าแล้ว | ✅ |
| Trunk Port + Allowed VLAN ตั้งค่าแล้ว | ✅ |
ip routing เปิดแล้ว |
✅ |
| SVI แต่ละ VLAN มี IP + no shutdown | ✅ |
| Default Gateway/Route ตั้งแล้ว | ✅ |
| ACL กั้น USER → SERVER ตั้งแล้ว | ✅ |
| Verify ด้วย show commands ครบ | ✅ |
ต้องการให้ทีม Network Engineer มือโปร Audit หรือ Deploy Cisco LAN ในองค์กรของคุณ? C9NETWORK รับวางระบบ Cisco LAN, VLAN Design, Inter-VLAN Routing และ Network Security Audit ครบวงจร — ติดต่อเราได้เลย