Technical Article / Field Note

How to Configure a Guest VLAN in pfSense: Web Access Without Office-Network Access

Configure a wired guest VLAN in pfSense with switch tagging, DHCP, DNS and ordered firewall rules. Verify office and management isolation, then plan rollback.

How to Configure a Guest VLAN in pfSense: Web Access Without Office-Network Access technical article image

Give visitors a separate IPv4 subnet, let them use the firewall for DNS, and permit the web ports they need after blocking firewall management and protected networks. A VLAN provides a separate Ethernet segment; pfSense rules decide which routed connections may leave it. Both parts must be correct.

This GUI walkthrough adds wired guest VLAN 20 on a spare physical port. Your existing office LAN stays on its existing port. You finish by checking a real web connection, rejected internal connections, DHCP leases, firewall logs, and switch-management access—not simply whether the guest laptop can reach the Internet.

Scope, equipment, and the address plan

The menu paths follow current Netgate documentation for pfSense CE 2.9.0. On CE 2.8.1, the VLAN editor may omit the newer VLAN Tag Type field; ordinary single-tag 802.1Q is the intended format. This is a configuration example based on official documentation, not a report of a customer deployment. Treat an operating-system upgrade as a separate maintenance change. Netgate release notes describe hardware-specific upgrade issues.

You need an already-working pfSense firewall with three usable Ethernet interfaces, a managed switch with 802.1Q VLANs and enforceable management-plane restrictions, two administrator/test computers, and a maintenance window. Verify the actual interface names: igc0, igc1, and igc2 below are examples, not labels printed on every appliance.

Item Example Required condition
Existing WAN igc0 Existing Internet service already works
Existing office/management LAN igc1, 192.168.10.1/24 Retain its address, rules, DHCP, and cabling
Spare guest parent igc2 Unassigned physical port, no IP, no bridge
New logical interface GUEST20, VLAN ID 20 on igc2 192.168.20.1/24, no upstream gateway
Guest DHCP range 192.168.20.100–192.168.20.199 Check for overlap with all local and VPN networks
Guest DNS and gateway 192.168.20.1 Supplied through guest DHCP
Switch management 192.168.99.2/24, management VLAN 1 Accessible only through dedicated administrative access
Switch ports P1 uplink, P2 guest, P8 management Dedicated guest switch; do not connect it to the office switch

A tagged frame carries a VLAN identifier. An untagged access port presents ordinary Ethernet to a laptop. PVID is the VLAN assigned to an untagged frame as it enters a switch port; changing only the egress membership is insufficient. See Netgate's switch VLAN explanation.

The switch must keep its management service away from guest ports. A product advertised as “smart” or “VLAN capable” does not by itself establish that capability. Check the exact model and firmware manual. If management VLANs or management ACLs cannot enforce the boundary, use suitable hardware before proceeding.

Dedicated guest path from an untagged laptop port through tagged VLAN 20 to the spare firewall interface

Topology guide: P2 accepts an ordinary guest laptop; P1 carries VLAN 20 to igc2. The existing office LAN uses a different firewall port. P1 and P2 identify roles in this example, not the physical numbering order of a specific product. On a phone, open the full-resolution image for port labels; use the text table for exact settings. The drawing explains the example and is not an installation photograph.

Step 1: Preserve a working administration path

Keep your administration computer connected to the existing office LAN. Confirm you can sign in to pfSense and reach an existing office service before changing anything. Record WAN and LAN assignments, guest-switch port numbers, existing NAT mode, DHCP backend, DNS interface selections, and relevant floating or interface-group rules.

Open Diagnostics > Backup & Restore, leave Backup Area at All, and download the configuration XML. Store it securely: configuration backups can contain secrets. If using backup encryption, confirm you can recover its password. Separately export the switch configuration and record the management-port address and recovery method. Netgate's backup instructions describe the export options.

Stop if the spare port carries existing traffic, any subnet overlaps, you lack a tested local recovery path, or your only administration connection would pass through the ports being edited. Do not repurpose the current LAN as part of this example.

Step 2: Create and assign VLAN 20

  1. Open Interfaces > Assignments, then the VLANs tab and Add.
  2. Set Parent Interface to the confirmed spare interface, igc2 in this example.
  3. Where available, select C-Tag (0x8100). Set VLAN Tag to 20, retain the normal priority, and give it a recognizable description.
  4. Save, return to Interface Assignments, select the new VLAN on igc2 under Available network ports, and add it.
  5. Open the new OPT interface. Enable it, name it GUEST20, choose Static IPv4, and enter 192.168.20.1/24.
  6. Leave IPv4 Upstream Gateway at None. Set IPv6 Configuration Type to None. Do not enable private-network blocking on this internal guest interface. Save and apply.

The assigned VLAN becomes a normal optional interface with its own services and rules; creating the VLAN alone does not allow traffic. Follow Netgate's VLAN procedure and internal-interface addressing guidance. Selecting an upstream gateway here would make pfSense treat the interface as WAN-like for functions such as NAT.

Confirm Status > Interfaces shows GUEST20 with the planned address. Leave the physical igc2 parent unassigned and unnumbered. Do not bridge GUEST20 to LAN.

For this IPv4-only rollout, check Services > DHCPv6 Server and Services > Router Advertisement: there must be no guest DHCPv6 service or guest router advertisements. If an interface tab is absent because IPv6 is disabled, do not enable IPv6 to create it. Retain the existing office IPv6 configuration. A client may still have a link-local IPv6 address; that alone does not establish a routed IPv6 path. See IPv6 interface types and router-advertisement modes.

Step 3: Configure the guest switch without carrying office traffic

Connect the switch administration computer to P8 using its documented management settings. Use the switch's VLAN membership and PVID pages; manufacturers use different menu names, so match the fields rather than copying another model's screenshots.

Port VLAN 20 egress membership Untagged ingress/PVID Management separation
P1, to pfSense igc2 Tagged Native VLAN, if required, is unused at pfSense No office uplink; parent has no address
P2, guest laptop Untagged PVID 20 Remove VLAN 1 membership; restrict to expected untagged client traffic
P8, administrator Not a member Management VLAN 1 Dedicated local management access

Create VLAN 20, configure those memberships, set P2's PVID to 20, and remove P2 from the default management VLAN. Enable ingress membership checking so P2 rejects VLANs to which it does not belong; where supported, admit only untagged client frames on P2. Configure management VLAN/ACL restrictions using the model's documented controls. Disable unused ports, or leave them outside guest access until deliberately configured. Save the running configuration to persistent storage if the switch requires a separate save.

Connect P1 to igc2 only after confirming the settings. Do not connect P1 to LAN, and do not add a second uplink to the office network. Keep the switch management address out of VLAN 20. Adding that address to a firewall alias is additional protection; it cannot police traffic that reaches the switch's own management plane without passing through pfSense.

Intel EXPI9301CTBLK single-port Ethernet adapter photographed by Solomon203

Hardware reference photograph: Solomon203, Intel EXPI9301CTBLK, Wikimedia Commons, CC BY-SA 4.0. Resized and converted to WebP. This is not the example's installed adapter, and the photograph does not establish VLAN-driver compatibility or management isolation.

Step 4: Supply addresses and DNS on GUEST20

In System > Advanced > Networking, inspect Server Backend. This example uses Kea DHCP. Backend selection is global: if your firewall uses ISC DHCP, do not switch it merely to follow this article. Plan and validate that migration separately, including existing office leases and options. Netgate currently recommends Kea.

Open Services > DHCP Server and choose GUEST20. Depending on release, the page label may specify DHCPv4. Enable the server for this interface, set the range to 192.168.20.100–192.168.20.199, and specify 192.168.20.1 as DNS server and gateway. Retain normal lease defaults for the first trial. Do not enable a relay or another DHCP server on the guest segment. Save and apply. The DHCPv4 documentation explains the interface-specific settings.

Under Services > DNS Resolver, confirm the resolver is enabled and accepts queries on GUEST20. If Network Interfaces is All, it already includes available interfaces; if it lists specific interfaces, add GUEST20 while retaining every existing selection and Localhost. Leave Outgoing Network Interfaces unchanged. Save during the maintenance window because resolver changes can affect other users.

Under its Access Lists tab, confirm 192.168.20.0/24 is allowed. Internal-interface networks normally receive automatic access control; if automatic ACLs have been disabled or a custom policy exists, add the required subnet-specific Allow entry and review conflicting restrictions. Do not use Allow Snoop for visitors. Listening and query authorization are separate from a firewall pass rule. See resolver binding and resolver access control.

Using a shared resolver may disclose internal host overrides or registered names. This recipe blocks guest connections to protected destinations; it does not create a separate DNS view. If internal-name confidentiality is required, stop and design a separate guest DNS service and corresponding narrowly scoped rules.

Step 5: Block protected destinations before permitting web traffic

Create a Network(s) alias named LOCAL_PROTECTED under Firewall > Aliases > IP. Include 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16, then add every other protected destination used by your organization: VPN subnets, transit and upstream management networks, internal public-address ranges, and any other non-RFC1918 internal space. The three private ranges alone are not a complete inventory.

Create a Port(s) alias named WEB_PORTS containing two separate entries, 80 and 443. Do not enter an 80–443 range, which would permit every intervening port.

Open Firewall > Rules > GUEST20. Add these rules, using GUEST20 net as the source and IPv4 as the address family. Destination ports below are destination ports; source ports stay at their default any.

Order Action and protocol Destination Destination port Purpose
1 Pass TCP/UDP GUEST20 address 53 Guest DNS only
2 Block any IPv4 protocol This Firewall (self) Any Block other firewall services and addresses
3 Block any IPv4 protocol LOCAL_PROTECTED Any Block routed office, VPN, and management targets
4 Pass TCP Any WEB_PORTS HTTP and HTTPS browsing
5 Optional Pass UDP Any 443 QUIC, if required by policy
6 Block any IPv4 protocol, log Any Any Explicit logged denial for remaining IPv4 traffic

Enable logging on rules 2, 3, and 6 for acceptance testing. Save each rule, verify the displayed order, and Apply Changes. Without rule 5, many browsers can use TCP HTTPS, but test your actual applications rather than assuming every application falls back. Email, VPN clients, external plain DNS, and other ports are intentionally outside this policy.

The DNS exception must precede the firewall block because 192.168.20.1 is a firewall address. This Firewall (self) matches the firewall's addresses across interfaces. DHCP uses automatically generated service rules when configured; do not add a guest-to-any DHCP exception to compensate for a switch-tagging problem. See rule options and automatic rule processing.

Review Floating rules and any interface group containing GUEST20 before accepting this list. Earlier rules or existing connection states can change the result. Interface rules normally evaluate traffic entering that interface; these rules govern guest-initiated traffic, not a complete policy for office-initiated connections. Netgate's rule methodology explains that distinction.

Ordered guest policy permits DNS first, blocks firewall and protected networks, then permits selected web ports

Policy-reading aid: apply the detailed rule table above. DHCP's automatic rules and the wider floating/group/state processing are not a complete firewall ruleset in this simplified diagram.

Do not interpret port restrictions as application filtering: traffic tunneled over permitted HTTPS, DNS over HTTPS, and access to an externally published company service require additional controls if prohibited by policy.

Step 6: Check NAT, then test one wired client

Open Firewall > NAT > Outbound. On an existing single-WAN installation using Automatic Outbound NAT, confirm the generated rules include the guest source network and translate it to the appropriate WAN address. Do not change a working manual/hybrid configuration to automatic. A manual-NAT installation needs a separately reviewed guest-specific rule. NAT translates addresses; it does not replace access rules. See Outbound NAT.

Connect one test laptop to P2. Disable its Wi-Fi, VPN, cellular tethering, and any other route around the test. Disconnect and reconnect Ethernet so it requests a new lease. Use the operating system's network details to check the address, mask, gateway, DNS, and IPv6 state; compare the client's MAC address with Status > DHCP Leases.

Check Expected result Evidence to retain
IPv4 configuration Address in .100–.199, /24, gateway and DNS .1 Client details and matching guest lease
Public HTTPS by hostname A current page loads Fresh browser connection plus guest-source state
Firewall management New HTTPS connection to 192.168.20.1 and 192.168.10.1 fails Corresponding block log, source and destination
Office resource Known-working internal HTTPS test page fails from guest Resource works from office; guest attempt matches block
Switch management Guest cannot reach its management service Switch configuration plus appropriate switch-side evidence
IPv6 No usable routed guest IPv6 path No guest RA/default route; no matching IPv6 pass policy
Existing office service Still works from office computer Repeat the original administration and service checks

A timeout alone is ambiguous: the service may be down. First prove the internal test target works from the office computer, then repeat from the guest and inspect Status > System Logs > Firewall. Filter by the test client's source address and match the destination, port, interface, and time. Do not enter administrative credentials on the guest computer.

If you previously tested with permissive rules, open Diagnostics > States, filter for the specific guest client address and GUEST20 where applicable, inspect the matching entries, and remove only those guest states. Then start fresh connections. Do not use a global state reset: it would disconnect unrelated sessions. State filtering supports narrowly targeted removal.

Also perform a separate Layer 2 management-plane test. Keep the test computer on P2 with PVID 20 unchanged. An administrator temporarily gives it an address explicitly reserved and confirmed unused in the management subnet, for example 192.168.99.250/24, with no gateway or DNS and all other network paths disabled. Start a new connection to the switch's actual management address, 192.168.99.2, and management port. It must fail while the P8 administrator can still manage the switch. This traffic does not pass through pfSense, so a firewall block log is not expected. A returned login page or certificate is a failure: stop the rollout and correct the switch management VLAN or ACL. Restore automatic addressing and DNS afterward and verify a fresh .20 lease. This acceptance method follows the Layer 2 traffic path described in Netgate's unfilterable-traffic guidance; it is a proposed test, not a performed result.

Faults, stop conditions, and rollback

Symptom Check first Stop condition
No lease or a self-assigned address P2 PVID/membership, P1 tagged 20, parent interface, GUEST20 DHCP Do not weaken firewall rules to fix Layer 2
Office-subnet address appears Wrong socket, VLAN membership, extra uplink, another DHCP server Disconnect guest port immediately
Correct lease, no websites Resolver binding/ACL, DNS exception, blocked logs, WAN/NAT Do not add an unrestricted pass rule
Internal page or switch GUI opens Fresh states, rule order, group/floating rules, switch management controls Stop guest service until explained and corrected
Office administration or DNS breaks Compare recorded interface/DNS selections Disconnect new guest path and restore changed settings

For a failed trial, disconnect the new guest uplink first. From the unchanged office administration path, disable DHCP on GUEST20, disable its interface, and restore any resolver selections you changed without removing existing office entries. Reverse only the new switch memberships through its dedicated management port. If needed, remove the guest rules, assignment, and VLAN in that dependency order after recording the failed test.

Use a full configuration restore only when selective reversal is insufficient and a maintenance plan covers the resulting service impact and any legitimate changes made after the backup. After rollback, repeat office access, DNS, and Internet checks. Do not factory-reset a working office firewall.

Frequently asked questions

Does VLAN 20 stop guest laptops from reaching each other?

No. Devices in the same VLAN may communicate through the switch without crossing pfSense. Client isolation requires suitable switch port isolation/private VLAN controls, or AP client isolation when a wireless design is introduced. Those controls need their own verification.

Why block the firewall when DNS must reach it?

The first rule allows only DNS to the guest interface address. The next rule denies other guest connections to firewall addresses, including management services. Reversing those rules breaks the intended DNS exception.

Can I use this as a wireless guest-network guide?

The routed policy can be a building block, but an SSID also requires correct AP tagging, management separation, and wireless client-isolation checks. Start with the broader guest, office, and device Wi-Fi segmentation guide before extending this wired example.

What must be rechecked after adding a VPN or internal subnet?

Update LOCAL_PROTECTED, inspect relevant group/floating/NAT rules, and repeat negative tests using fresh guest states. A new internal public prefix is not covered merely because the RFC1918 ranges remain blocked.

Related solution

For a deployment that includes switch selection, management-plane restrictions, address planning, and acceptance records, review enterprise network switching and routing services.

Further reading

If you need help reviewing an existing design, prepare the interface map, switch model/firmware, protected-network inventory, and the results of the positive and negative tests above.

Back to articles

Related solutions

Connect this topic to an implementation path

Network Equipment, Switching and Routing

Connect switching, routing, VLAN, PoE and network-refresh articles with a complete enterprise network delivery plan.

View solution →

Backup and Disaster Recovery

Connect backup, deletion, ransomware, restoration and business-continuity articles with a recoverable data-protection design.

View solution →

Enterprise SD-WAN Network Design

Connect branch, private-line, cloud-access and network-quality articles with an enterprise SD-WAN delivery plan.

View solution →

Related Articles

Related reading

Back to All Articles