Add pfSense backup utility and documentation

- Add backup-pfsense-config.sh script for automated config backups via SSH
- Auto-commits backups to git with timestamped filenames
- Includes validation, error handling, and troubleshooting guides
- Add scripts/README.md with detailed usage and crontab examples
- Add BACKUP-QUICKSTART.md for quick reference commands
- Update README.md to reference automated backup workflow
- Create backups/ directory structure

The script tests SSH connectivity successfully to pfSense.
This commit is contained in:
Kenji Morishige
2026-04-22 14:42:43 -05:00
commit 38f2aefecd
12 changed files with 2122 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
# Transparent proxy notes for zet (172.27.0.35)
Summary
- Squid runs on 172.27.0.35 (zet). We'll intercept HTTP traffic from selected child IPs and forward it to Squid.
- Approach: configure Squid for intercepted HTTP, create a pfSense Alias for children, add a NAT port-forward (80 -> 172.27.0.35:3128) limited to that Alias, and ensure appropriate firewall rules.
Prerequisites
- Squid installed and reachable from pfSense (172.27.0.35).
- pfSense LAN interface used by children (pfSense at 172.27.0.1).
- List of children IPs or an IP range (create Alias in pfSense).
Squid minimal config (intercept HTTP)
```
http_port 3128 intercept
acl localnet src 172.27.0.0/24
acl children src 172.27.0.100-172.27.0.110 # replace with your child IPs/range
http_access allow children
http_access deny all
access_log /var/log/squid/access.log
```
- Restart Squid after changes: `sudo systemctl restart squid` or `service squid restart`.
pfSense steps (high level)
1. Firewall → Aliases → Add
- Type: Hosts (or Network)
- Name: Children_Devices
- Add each child's static IP (or a range entry)
- Save
2. Firewall → NAT → Port Forward → Add
- Interface: LAN (or interface children use)
- Protocol: TCP
- Source: Children_Devices (the Alias)
- Destination: any
- Destination port range: HTTP (80)
- Redirect target IP: 172.27.0.35
- Redirect target port: 3128
- Description: Redirect children HTTP -> Squid
- Save and Apply
- If prompted, allow pfSense to add the required firewall rule; otherwise add a LAN rule permitting Source=Children_Devices -> Destination=172.27.0.35 port 3128.
3. Firewall rule: ensure the Alias is allowed outbound on LAN as needed. The NAT rule will create a rule; double-check to avoid accidental blocking.
Verification
- Watch Squid logs on `zet`:
- `sudo tail -F /var/log/squid/access.log`
- From a child device, request an HTTP page and confirm the request appears in the access log.
- On pfSense: Diagnostics → Packet Capture (interface LAN, filter host <child_ip> and port 80) to confirm redirection.
- On `zet`: `sudo tcpdump -n -i any host <child_ip> and port 80` to see forwarded connections.
Notes & caveats
- This only intercepts plain HTTP (port 80). HTTPS (port 443) interception requires ssl-bump / TLS interception:
- Requires creating a CA, configuring Squid SSL bump, and installing the CA on every client — this is intrusive and may break some apps.
- Consider leaving HTTPS un-intercepted or using explicit proxying for HTTPS instead.
- If clients have explicit proxy settings (via WPAD/DHCP 252), they will send traffic directly to the proxy and the NAT interception will not be used for those flows.
- WPAD option: you can advertise a PAC via DHCP Option 252 (value `http://172.27.0.35/wpad.dat`) to auto-configure browsers instead of intercepting.
Quick debug commands
- Restart squid: `sudo systemctl restart squid` or `service squid restart`
- Tail access log: `sudo tail -F /var/log/squid/access.log`
- Test from a child: `curl -I http://example.com`
- tcpdump on zet: `sudo tcpdump -n -i any host <child_ip> and port 80`
If you want, provide the exact child IPs and I will give you the precise pfSense NAT rule fields and a ready-to-paste `squid.conf` snippet for your environment.
-- notes written by assistant