Networking · Packet Tracer

Multi-VLAN
Network Design
& Segmentation

Designed and configured a segmented enterprise network in Cisco Packet Tracer using VLANs, 802.1Q trunking, and router-on-a-stick inter-VLAN routing. Applied extended ACLs to isolate the Guest VLAN from the IT and Staff networks.

VLANs 802.1Q Trunking Router-on-a-Stick DHCP Extended ACLs Wildcard Masks Cisco IOS Packet Tracer

Network Topology

Cisco 2911 (R1) router-on-a-stick fa0/0.10 · fa0/0.20 · fa0/0.30 trunk · 802.1Q Cisco 2960 (SW1) 1 trunk port · 3 access ports VLAN 10 · VLAN 20 · VLAN 30 VLAN 10 · IT 10.0.10.0/24 VLAN 20 · Staff 10.0.20.0/24 VLAN 30 · Guest 10.0.30.0/24 ACL: DENY → IT · Staff PC-IT VLAN 10 10.0.10.x · DHCP gw: 10.0.10.1 PC-Staff VLAN 20 10.0.20.x · DHCP gw: 10.0.20.1 PC-Guest VLAN 30 10.0.30.x · DHCP gw: 10.0.30.1

All three VLANs share one physical switch and one router interface. Inter-VLAN traffic flows up to R1 and back down. The ACL on fa0/0.30 intercepts Guest traffic before routing, blocking lateral movement to IT and Staff.

What Was Built

01

Create the VLANs on SW1

Created three VLANs on the switch — VLAN 10 (IT), VLAN 20 (Staff), and VLAN 30 (Guest). VLANs exist only in the switch's VLAN database until you assign ports to them — creating them is just the first step. Verified with show vlan brief to confirm all three showed as active.

SW1# conf t
SW1(config)# vlan 10
SW1(config-vlan)# name IT
SW1(config-vlan)# exit
SW1(config)# vlan 20
SW1(config-vlan)# name Staff
SW1(config-vlan)# exit
SW1(config)# vlan 30
SW1(config-vlan)# name Guest

SW1# show vlan brief
10 IT active
20 Staff active
30 Guest active
02

Configure access ports and the trunk port

Assigned each host-facing port to its VLAN using switchport mode access. The port connected to the router was configured as a trunk with switchport mode trunk and restricted to only carry the three VLANs in use. A trunk without an allowed VLAN list carries all VLANs by default — limiting it is cleaner.

! Access port — VLAN 10 (IT)
SW1(config)# interface fa0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10

! Repeat fa0/2 → vlan 20, fa0/3 → vlan 30

! Trunk port to router (fa0/24)
SW1(config)# interface fa0/24
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk allowed vlan 10,20,30
03

Set up router-on-a-stick with dot1Q subinterfaces

Created a logical subinterface on R1 for each VLAN, configured encapsulation dot1Q with the matching VLAN ID, then assigned the gateway IP. The encapsulation line must come before the IP address — IOS accepts the reverse order but inter-VLAN routing breaks silently. Enabled the physical interface with no shutdown.

R1(config)# interface fa0/0
R1(config-if)# no shutdown

! VLAN 10 subinterface
R1(config)# interface fa0/0.10
R1(config-subif)# encapsulation dot1Q 10
R1(config-subif)# ip address 10.0.10.1 255.255.255.0

R1(config)# interface fa0/0.20
R1(config-subif)# encapsulation dot1Q 20
R1(config-subif)# ip address 10.0.20.1 255.255.255.0

R1(config)# interface fa0/0.30
R1(config-subif)# encapsulation dot1Q 30
R1(config-subif)# ip address 10.0.30.1 255.255.255.0
04

Configure DHCP pools with excluded ranges

Set up a DHCP pool per VLAN on R1. The excluded-address command reserves the first ten IPs in each subnet before the pool starts handing them out — so routers, servers, and printers can be assigned static addresses without conflicting with DHCP leases. Each pool specifies the network, default gateway, and DNS server.

! Reserve .1–.10 in each subnet for static devices
R1(config)# ip dhcp excluded-address 10.0.10.1 10.0.10.10
R1(config)# ip dhcp excluded-address 10.0.20.1 10.0.20.10
R1(config)# ip dhcp excluded-address 10.0.30.1 10.0.30.10

R1(config)# ip dhcp pool VLAN10-IT
R1(dhcp-config)# network 10.0.10.0 255.255.255.0
R1(dhcp-config)# default-router 10.0.10.1
R1(dhcp-config)# dns-server 8.8.8.8

! Repeat for VLAN20-Staff and VLAN30-Guest pools
05

Apply an extended ACL to block Guest from IT and Staff

Created a named extended ACL with two deny statements covering both protected subnets, then a blanket permit ip any any so Guest traffic can still reach the internet. Applied it inbound on the Guest subinterface — this intercepts traffic the moment it arrives at the router, before any routing decision is made. The wildcard mask 0.0.0.255 matches any host in the /24.

R1(config)# ip access-list extended BLOCK_GUEST
R1(config-ext-nacl)# deny ip 10.0.30.0 0.0.0.255 10.0.10.0 0.0.0.255
R1(config-ext-nacl)# deny ip 10.0.30.0 0.0.0.255 10.0.20.0 0.0.0.255
R1(config-ext-nacl)# permit ip any any

! Apply inbound on Guest subinterface
R1(config)# interface fa0/0.30
R1(config-subif)# ip access-group BLOCK_GUEST in

! Verify — Guest can't reach IT/Staff, internet still works
PC-Guest> ping 10.0.10.11
Request timeout — ACL blocking ✓

What I Learned & Concepts Covered

VLANs & Layer 2 Segmentation

VLANs logically divide a single physical switch into multiple isolated broadcast domains. Hosts in VLAN 10 can't communicate with VLAN 20 at Layer 2 — the switch simply won't forward frames between them. Segmentation without VLANs would require separate physical switches per network.

Net+ Domain 2

802.1Q Trunking

Trunk ports carry traffic for multiple VLANs by inserting a 4-byte 802.1Q tag into each Ethernet frame containing the VLAN ID. Access ports strip the tag before delivering frames to end devices. Without trunking, you'd need a dedicated physical link per VLAN between the switch and router.

Net+ Domain 2

Access vs Trunk Ports

An access port belongs to exactly one VLAN — it adds no tag to outgoing frames and expects no tag on incoming ones. A trunk port carries multiple VLANs, tagging every frame except the native VLAN. Misconfiguring one as the other is the most common reason inter-VLAN routing silently fails.

Net+

Router-on-a-Stick & Inter-VLAN Routing

One physical router interface is subdivided into logical subinterfaces, each acting as the default gateway for its VLAN. All traffic between VLANs must traverse the router — a bottleneck at scale, which is why enterprise networks use Layer 3 switches instead. For a lab, router-on-a-stick is the correct starting point.

Net+ / SAA-C03

DHCP Scopes & Excluded Ranges

Each VLAN needs its own DHCP scope because hosts in different VLANs live in different IP subnets. The excluded-address command reserves addresses before the pool starts — this prevents DHCP from handing out IPs already assigned statically to gateways, servers, or printers.

Net+

Extended ACLs & Wildcard Masks

Extended ACLs match on source IP, destination IP, protocol, and port — not just source like standard ACLs. Wildcard masks are the bitwise inverse of subnet masks: 0.0.0.255 means match any host in the /24. ACLs are processed top-down and stop at the first match — order matters.

Net+ / SAA-C03

ARP & First-Ping Drop

The first ping to any new host always drops in this topology. The router has no ARP cache entry for the destination, so it sends an ARP request and queues the ICMP packet. The ARP reply comes back, the cache is populated, and every subsequent ping succeeds. This is expected Layer 2 behavior — not a misconfiguration.

Deep Dive

Inbound vs Outbound ACL Placement

Applying an ACL inbound on a subinterface filters traffic before the routing engine processes it — more efficient and the correct pattern for blocking a source network. Outbound ACLs filter after routing and apply to egress traffic. The general rule: place extended ACLs as close to the source as possible.

SAA-C03

// personal takeaways

The first ping always drops — and that's fine. I spent ten minutes convinced my ACL was broken before I realized it was ARP. The router queues the ICMP packet while it waits for an ARP reply. Second ping succeeds every time. Understanding why this happens is one of those things that separates memorized facts from actual networking knowledge.

Wildcard masks are the inverse of subnet masks, not the same thing. 0.0.0.255 matches 256 hosts — the entire /24. The zero bits mean "must match this bit exactly," the one bits mean "don't care." It clicked once I stopped thinking about them like subnet masks and started thinking about them as bit-level filters.

permit ip any any at the end is not optional. Every ACL has an implicit deny-all at the bottom. Without the explicit permit, the ACL would block all Guest traffic — including internet access — not just lateral movement to IT and Staff. The goal is controlled segmentation, not complete isolation.

This is directly on the Net+ exam — and now it makes sense. I'd memorized VLAN concepts from flashcards, but building it end-to-end in Packet Tracer made the theory stick. The moment inter-VLAN ping worked for the first time after configuring the subinterfaces, the whole model clicked in a way studying never did.

← back to projects