pfSense General Troubleshooting Guide
pfSense troubleshooting spans a wide range of scenarios: from complete loss of internet connectivity to performance degradation and inability to access the web GUI. This guide organizes the most common problems and their solutions, starting with a general diagnostic methodology.
Before beginning any troubleshooting, define the exact symptom: complete loss of connectivity, intermittent packet loss, issues limited to specific protocols, or problems originating from specific hosts. Precisely defining the symptom reduces diagnostic time significantly.
Diagnostic Methodology
Layer-by-Layer Verification
Follow a bottom-up approach based on the OSI model:
- Physical layer - verify link indicators on interfaces (Status - Interfaces), confirm cables are connected and link is established
- Data link layer - check the ARP table (Diagnostics - ARP Table), verify the upstream gateway MAC address is present
- Network layer - verify interface IP addressing, routing table (Diagnostics - Routes), ping from pfSense itself (Diagnostics - Ping)
- Transport layer - review firewall rules (Firewall - Rules), connection states (Diagnostics - States), NAT rules
- Application layer - test DNS (Diagnostics - DNS Lookup), proxy servers, VPN tunnels
pfSense Diagnostic Tools
| Tool | Location | Purpose |
|---|---|---|
| Ping | Diagnostics - Ping | Test host reachability |
| Traceroute | Diagnostics - Traceroute | Determine route to host |
| DNS Lookup | Diagnostics - DNS Lookup | Test name resolution |
| Packet Capture | Diagnostics - Packet Capture | Capture traffic on an interface |
| pfTop | Diagnostics - pfTop | Real-time active connections |
| States | Diagnostics - States | Firewall state table |
| Routes | Diagnostics - Routes | Routing table |
| System Logs | Status - System Logs | All service logs |
Connectivity Issues
No Internet Access
Symptom: LAN clients cannot reach the internet, but pfSense is reachable at its LAN address.
Verification sequence:
- Check the WAN interface: Status - Interfaces. Confirm WAN has received an IP address, gateway, and DNS servers
- Check the gateway: System - Routing - Gateways. The default gateway status must show Online
- Ping from pfSense: Diagnostics - Ping, select the WAN interface as source, ping 8.8.8.8
- Check NAT: Firewall - NAT - Outbound. For standard configurations, the mode should be set to Automatic outbound NAT
- Check DNS: Diagnostics - DNS Lookup, resolve google.com. If resolution fails, verify System - General Setup - DNS Servers
If pinging an external IP from pfSense’s WAN interface succeeds but LAN clients cannot reach the internet, the issue lies in NAT configuration or firewall rules on the LAN interface.
Cannot Reach Internal Hosts
Symptom: clients in one subnet cannot connect to servers in another subnet through pfSense.
Verification:
- Firewall rules: check rules on the source interface. pfSense applies rules on the ingress interface
- Routing: confirm pfSense has routes to both subnets (Diagnostics - Routes)
- Return route: verify destination hosts have a route back through pfSense
- Asymmetric routing: if traffic arrives on one pfSense interface and leaves through another, check System - Advanced - Firewall & NAT - Bypass firewall rules for traffic on the same interface
DNS Resolution Problems
DNS Fails to Resolve Names
Symptom: ping by IP address works, but ping by hostname returns an error.
Steps:
- Check pfSense DNS servers: System - General Setup. Confirm DNS servers are configured and reachable
- Check DNS Resolver: Services - DNS Resolver. Verify the service is running and bound to the appropriate interfaces
- Test DNS server reachability: Diagnostics - Ping, ping each DNS server
- Check firewall rules: ensure DNS traffic (port 53 TCP/UDP) is permitted from pfSense to external DNS servers
- Clear DNS cache: Services - DNS Resolver, click Clear DNS Resolver Cache
DNS Resolver vs DNS Forwarder
pfSense offers two DNS operating modes:
- DNS Resolver (Unbound) - a recursive resolver that queries root servers directly. This is the default
- DNS Forwarder (dnsmasq) - forwards queries to upstream servers
Running both services simultaneously causes a port conflict. Ensure only one is enabled, or configure them on different ports.
Common mistake: when DNS Resolver operates in forwarding mode (DNS Query Forwarding enabled), verify that DNS servers in System - General Setup are correct and reachable. In forwarding mode, Unbound does not perform recursion independently.
Performance Issues
High CPU Usage
Identify the process consuming resources: Status - Dashboard (System Information widget) or via console with top -SH.
Common causes:
| Process | Cause | Solution |
|---|---|---|
| filterlog | Large volume of blocked packets | Identify the source of excessive traffic, add a Block rule without logging |
| php-fpm | Intensive web GUI usage | Restart PHP-FPM: Diagnostics - Command Prompt, run pfSsh.php playback svc restart php-fpm |
| dpinger | Frequent gateway monitoring | Increase the check interval: System - Routing - Gateways - Edit |
| suricata/snort | IDS/IPS inspecting all traffic | Limit inspected networks, disable unused rulesets |
High Memory Usage
Check current consumption: Status - Dashboard. Primary consumers:
- State table - grows with active connections. Check size: Diagnostics - States Summary
- Packages (Suricata, Snort, ntopng) - can consume significant memory
- DNS Resolver cache - increases when serving many clients
To reduce state table memory consumption, lower the Firewall Maximum States value in System - Advanced - Firewall & NAT.
Low Throughput
If throughput through pfSense is below expectations:
- Check interface speeds: Status - Interfaces. Verify speed and duplex are set correctly (Auto-negotiate in most cases)
- Disable offloading: System - Advanced - Networking. Uncheck Hardware Checksum Offload and Hardware TCP Segmentation Offload - this is especially important in virtual environments
- Check Traffic Shaper: if a traffic shaper is configured, ensure limits match the available bandwidth
- Check IDS/IPS: Suricata and Snort inspect every packet, which can reduce throughput by 30-50%
- Check MTU size: MTU mismatches between interfaces cause fragmentation and performance degradation
Web GUI Issues
Cannot Access the Web GUI
Symptom: the browser cannot connect to https://192.168.1.1 (or the pfSense LAN address).
Verification:
- Ping pfSense: if ping fails, the issue is at the network level (wrong IP, disabled interface)
- Web GUI port: default is 443 (HTTPS) or 80 (HTTP). The port may have been changed in System - Advanced - Admin Access
- Protocol: check whether pfSense uses HTTP or HTTPS. Try both
- LAN rules: verify the anti-lockout rule is not disabled (System - Advanced - Admin Access - Anti-lockout)
- Restart web server: from the console, run
pfSsh.php playback svc restart webConfigurator
Console Recovery
If web GUI access is completely lost:
- Connect to the pfSense console (physical console, serial, IPMI, or hypervisor console)
- Select 2) Set interface(s) IP address to verify/change the LAN IP address
- Select 8) Shell and run:
pfSsh.php playback enableallowallwan # Temporarily allow access from WAN
pfSsh.php playback disablereferercheck # Disable referer check
pfSsh.php playback svc restart webConfigurator # Restart web serverImportant: after recovering access, immediately restore security settings and remove the allow-all rule on WAN.
Boot Problems
pfSense Will Not Boot
If pfSense fails to boot after an update or configuration change:
- Interrupt autoboot: press the spacebar when the bootloader appears
- Boot single user: select 2) Boot Single User from the bootloader menu
- Check the filesystem: run
fsck -y /dev/ada0p2(replace the device name as needed) - Roll back configuration: configuration backups are stored in
/conf/backup/. Copy a working configuration:
cp /conf/backup/config-TIMESTAMP.xml /conf/config.xml
rebootFilesystem Issues
Signs of filesystem corruption: write errors in logs, inability to save configuration, spontaneous reboots.
To check and repair:
- Boot into single user mode
- Mount the root filesystem read-write:
mount -o rw / - Run a check:
fsck -y / - If errors are found, run the check again until a clean result is obtained
- Reboot:
reboot
State Table Exhaustion
Symptom: new connections fail to establish, logs show state table full messages.
Check current utilization: Diagnostics - States Summary or via the Dashboard - Firewall States widget.
Solutions:
- Increase the limit: System - Advanced - Firewall & NAT - Firewall Maximum States. The default value depends on available RAM
- Reduce timeouts: System - Advanced - Firewall & NAT - Firewall Optimization. The aggressive mode shortens idle state lifetimes
- Find the source: Diagnostics - States, sort by count. Common causes include P2P traffic, port scanning, or DDoS
Each state consumes approximately 1 KB of RAM. At 100,000 states, consumption is roughly 100 MB.
Package Problems
Package Fails to Install
If installing a package through Package Manager results in an error:
- Check DNS: packages are downloaded from the repository by DNS name
- Check internet access: pfSense must have internet connectivity to download packages
- Check free space: run
df -hfrom the Shell. Insufficient disk space is a common cause - Refresh the package list: System - Package Manager - Installed Packages, click Update All
- Check version compatibility: verify the package is compatible with the current pfSense version
Package Causes Instability
If the system becomes unstable after installing a package:
- Try removing the package through the web GUI: System - Package Manager - Installed Packages
- If the web GUI is inaccessible, remove the package from the console:
pkg delete package-name- Reboot pfSense after removal
Factory Reset Procedure
A factory reset completely erases the configuration and returns pfSense to default settings. Use only as a last resort.
Via Web GUI
Diagnostics - Factory Defaults. Confirm the reset. pfSense will reboot with default settings (LAN IP 192.168.1.1, DHCP enabled).
Via Console
- Connect to the console
- Select 4) Reset to factory defaults
- Confirm the reset
- Wait for the reboot to complete
Via Bootloader
If the console menu is inaccessible:
- Interrupt boot by pressing the spacebar
- Boot into single user mode
- Run:
mount -o rw /
rm /conf/config.xml
rebootpfSense will create a default configuration on the next boot.
For additional firewall rule configuration details, see the firewall rules section. For issues specific to virtualized pfSense, refer to the virtualization guide . VPN configuration is covered in the VPN section.