pfSense / OPNsense — Install + WAN/LAN + Firewall + IPsec Site-to-Site
คู่มือติดตั้ง pfSense / OPNsense ตั้งแต่ Download ISO จนถึง WAN/LAN, Firewall Rule และ IPsec Site-to-Site VPN แบบ IKEv2
1. pfSense vs OPNsense — เลือกอันไหน#
pfSense และ OPNsense เกิดจาก BSD Firewall โอเพนซอร์สตัวเดียวกัน (m0n0wall) แต่แยกทางกัน:
- pfSense — พัฒนาโดย Netgate ตั้งแต่ปี 2004, Community Edition (CE) ยังฟรี, มี Plus Edition สำหรับ Hardware ของ Netgate; ฐานผู้ใช้ใหญ่มาก, เอกสารครบ
- OPNsense — Fork จาก pfSense ปี 2015 โดย Deciso, UI ทันสมัยกว่า, ออก Release ถี่กว่า (ทุก 2 สัปดาห์), รองรับ Plugin อย่าง Zenarmor และ WireGuard ในตัว
แนะนำ: ถ้าต้องการ Community ขนาดใหญ่และ Plugin เยอะ → pfSense CE; ถ้าต้องการ UI สะอาดและ Update เร็ว → OPNsense คู่มือนี้ครอบทั้งสองเพราะ Workflow คล้ายกันมาก

2. HW Spec + Download ISO + Bootable USB#
Hardware ขั้นต่ำ#
| Component | ขั้นต่ำ | แนะนำ |
|---|---|---|
| CPU | 64-bit Dual-core | x86-64 Quad-core |
| RAM | 1 GB | 4 GB+ |
| Storage | 8 GB SSD | 32 GB SSD/eMMC |
| NIC | 2 Port (WAN + LAN) | Intel NIC 2–4 Port |
Intel NIC (i210/i350) ให้ Driver ที่เสถียรที่สุดบน FreeBSD ทั้ง pfSense และ OPNsense ใช้ Realtek ได้แต่อาจมีปัญหา Throughput สูง
Download ISO#
- pfSense CE: https://www.pfsense.org/download/ → เลือก Architecture: AMD64, Installer: DVD Image (ISO)
- OPNsense: https://opnsense.org/download/ → เลือก dvd (ISO Installer), amd64
สร้าง Bootable USB#
# Linux / macOS — แทนที่ /dev/sdX ด้วย USB ของคุณ
dd if=pfSense-CE-2.7.x-RELEASE-amd64.iso of=/dev/sdX bs=4M status=progress && sync
Windows ใช้ Rufus หรือ balenaEtcher โหมด DD Image
3. Installer Steps (ZFS, Hostname, DNS, Password)#
หลัง Boot จาก USB ระบบแสดง Console Installer:
- Welcome → กด Enter เลือก
Install - Keymap → ปล่อย default (US) หรือเลือก Thai ถ้าต้องการ
- Partitioning → เลือก ZFS (Recommended) → Pool Type:
stripe(disk เดียว) หรือmirror(2 disk) - Disk Selection → เลือก SSD / NVMe → ยืนยัน
YES, destroy - ระบบ Install ไฟล์ ~5 นาที
เลือก ZFS stripe บน disk เดียวได้ แต่ไม่มี Redundancy — แนะนำ mirror ถ้ามี SSD 2 ตัว เพื่อ Boot Environment และ Snapshot
- Root Password → ตั้งรหัสผ่านให้แข็งแรง (16+ ตัวอักษร)
- Reboot → ถอด USB ก่อนเครื่อง Boot

4. First Boot — Interface Assignment (WAN/LAN)#
หลัง Boot ขึ้น Console Menu จะถามว่าต้องการ Assign Interface:
Valid interfaces are:
em0 00:1a:4b:xx:xx:01 (up)
em1 00:1a:4b:xx:xx:02 (up)
Do VLANs need to be set up first? [y|n]: n
Enter the WAN interface name or 'a' for auto-detection: em0
Enter the LAN interface name or 'a' for auto-detection: em1
The interfaces will be assigned as follows:
WAN -> em0
LAN -> em1
Do you want to proceed? [y|n]: y
หลัง Assign เสร็จ Console แสดง IP:
WAN (wan) -> em0 -> v4/DHCP4: 203.0.113.1/24
LAN (lan) -> em1 -> v4: 192.168.1.1/24
ถ้า NIC เป็น Port เดียว (เช่น VM ทดสอบ) ให้ตั้ง LAN เป็น none แล้วแก้ไขภายหลังใน Web GUI
5. Web GUI First Login + Setup Wizard#
เปิด Browser บน PC ที่ต่ออยู่กับ LAN Port → ไปที่ https://192.168.1.1
- Username:
admin - Password:
pfsense(default) — เปลี่ยนทันทีหลัง Login
Setup Wizard จะเปิดอัตโนมัติ:
- General Information → ตั้ง Hostname (เช่น
fw01), Domain, DNS Server (เช่น1.1.1.1,8.8.8.8) - Time Server →
pool.ntp.orgหรือ NTP Server ภายใน - WAN → เลือก Type (ดูหัวข้อ 6)
- LAN → ยืนยัน IP
192.168.1.1/24หรือเปลี่ยนตาม Network ของคุณ - Admin Password → เปลี่ยนจาก default
- Reload → Apply
6. Configure WAN (DHCP / PPPoE / Static)#
ไปที่ Interfaces → WAN:
- DHCP — เหมาะกับ ISP ที่ให้ IP อัตโนมัติ; ไม่ต้องตั้งอะไรเพิ่ม
- PPPoE — ISP ADSL/VDSL: ใส่ Username + Password ที่ได้จาก ISP; MTU แนะนำ
1492 - Static — ใส่ IP Address, Subnet Mask, Upstream Gateway, DNS
ISP ไทยส่วนใหญ่ (TRUE, AIS, NT) ใช้ PPPoE กรอก Username ในรูปแบบ username@domain ตามที่ ISP กำหนด
บันทึกด้วย Save → Apply Changes
7. Configure LAN + DHCP Server#
ไปที่ Interfaces → LAN:
- IPv4 Address:
192.168.10.1/24(ปรับตาม Subnet ของคุณ) - บันทึก → Apply
ตั้งค่า DHCP Server ที่ Services → DHCP Server → LAN:
- Enable: ✅
- Range:
192.168.10.100–192.168.10.200 - DNS Server:
192.168.10.1(ให้ใช้ Resolver ของ Firewall) หรือ Public DNS - Lease Time:
86400(1 วัน)
8. Firewall Rule — Allow LAN→any + Block Examples#
pfSense/OPNsense มี Rule Default allow LAN to any อยู่แล้วหลัง Install ซึ่งให้ทุก Client ออก Internet ได้
ดู Rule ที่: Firewall → Rules → LAN
เพิ่ม Block Rule (ตัวอย่าง)#
สมมติต้องการ Block Social Media (ใช้ IP/Alias):
- ไปที่ Firewall → Aliases → สร้าง Alias ชื่อ
SOCIAL_MEDIAประเภท URL Table ชี้ไปยัง IP ของ Facebook/TikTok - ไปที่ Firewall → Rules → LAN → กด Add (ขึ้นบน Default Allow)
- Action: Block, Protocol: TCP, Destination: Alias
SOCIAL_MEDIA, Port: 443 - Save → Apply
Rule ใน pfSense/OPNsense ประมวลผล จากบนลงล่าง (First Match) — Block Rule ต้องอยู่เหนือ Allow Rule เสมอ
9. NAT Outbound (Auto vs Manual)#
ไปที่ Firewall → NAT → Outbound:
- Automatic Outbound NAT (Default) — ระบบสร้าง NAT Rule อัตโนมัติให้ทุก Interface ออก WAN
- Manual Outbound NAT — ควบคุมได้เต็มที่, เหมาะเมื่อมี Multiple WAN หรือ Policy Routing
สำหรับ Site-to-Site IPsec ให้เปลี่ยนเป็น Manual และ ลบ NAT Rule ที่ชี้จาก LAN Subnet ไปยัง Remote Subnet (เพื่อไม่ให้ Traffic ถูก NAT ก่อนเข้า Tunnel)
10. IPsec Site-to-Site — Phase 1 (Peer IP, PSK, IKEv2, AES256)#
สถานการณ์ตัวอย่าง:
| Site A (HQ) | Site B (Branch) | |
|---|---|---|
| WAN IP | 203.0.113.1 |
198.51.100.1 |
| LAN Subnet | 192.168.10.0/24 |
192.168.20.0/24 |
ไปที่ VPN → IPsec → Tunnel Settings → กด + Add P1:
| Field | ค่า |
|---|---|
| Key Exchange Version | IKEv2 |
| Internet Protocol | IPv4 |
| Remote Gateway | 198.51.100.1 (IP ของ Site B) |
| Authentication Method | Mutual PSK |
| Pre-Shared Key | MyStr0ngPSK2026! (เหมือนกันทั้ง 2 ฝั่ง) |
| Encryption Algorithm | AES 256 |
| Hash Algorithm | SHA-512 |
| DH Group | 14 (2048 bit) |
| Lifetime | 28800 |
PSK ต้องตรงกันทุกตัวอักษรทั้งสองฝั่ง ตัวพิมพ์เล็ก/ใหญ่ต่างกัน = Tunnel ไม่ขึ้น
Save Phase 1
11. IPsec Phase 2 (Network Selectors, Encryption Proposal)#
กดปุ่ม + หน้า Phase 1 ที่สร้างไว้เพื่อเพิ่ม Phase 2:
| Field | ค่า |
|---|---|
| Mode | Tunnel IPv4 |
| Local Network | 192.168.10.0/24 (LAN ของ Site A) |
| Remote Network | 192.168.20.0/24 (LAN ของ Site B) |
| Protocol | ESP |
| Encryption Algorithm | AES 256 |
| Hash Algorithm | SHA-512 |
| PFS Key Group | 14 (2048 bit) |
| Lifetime | 3600 |
Save → Apply Changes
ทำซ้ำขั้นตอนเดียวกันบน Site B โดยสลับ Local/Remote Network และ Remote Gateway เป็น IP ของ Site A

12. Firewall Rule for IPsec Interface#
หลัง Tunnel ขึ้นมา Traffic ยังไม่ผ่านถ้าไม่มี Rule บน IPsec Interface:
ไปที่ Firewall → Rules → IPsec → กด + Add:
| Field | ค่า |
|---|---|
| Action | Pass |
| Interface | IPsec |
| Protocol | Any |
| Source | 192.168.20.0/24 (Remote Subnet) |
| Destination | 192.168.10.0/24 (Local Subnet) |
| Description | Allow Branch to HQ via IPsec |
Save → Apply Changes
นอกจากนี้ ตรวจสอบ Rule บน WAN ว่าอนุญาต:
- UDP Port 500 (IKE)
- UDP Port 4500 (NAT-T)
- Protocol 50 (ESP)
pfSense/OPNsense มักสร้าง Rule เหล่านี้อัตโนมัติเมื่อ Enable IPsec แต่ควรตรวจสอบ
13. Verify ใน Status > IPsec + Ping ทดสอบ#
ตรวจสอบ Tunnel Status#
ไปที่ Status → IPsec — ถ้า Tunnel ขึ้นสำเร็จจะแสดง:
ESTABLISHED 2 seconds ago, 203.0.113.1[My IP]...198.51.100.1[Peer]
INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c1234567_i d7654321_o
192.168.10.0/24 === 192.168.20.0/24
ตรวจสอบผ่าน CLI#
SSH เข้า Firewall แล้วรัน:
# pfSense (FreeBSD shell)
ipsec statusall
# OPNsense
ipsec statusall
# หรือ
swanctl --list-sas
Output ที่ถูกต้อง:
Security Associations (1 up, 0 connecting):
HQ-Branch[1]: ESTABLISHED 5 minutes ago, 203.0.113.1...198.51.100.1
HQ-Branch{1}: INSTALLED, TUNNEL, 192.168.10.0/24 === 192.168.20.0/24
Ping ทดสอบ#
# จาก PC ใน Site A ping ไป Site B
ping 192.168.20.1
# จาก Diagnostics → Ping ใน Web GUI
# Source: LAN address, Target: 192.168.20.1
ถ้า Tunnel ขึ้นแต่ Ping ไม่ผ่าน ให้ตรวจ Firewall Rule บน IPsec Interface ก่อน และตรวจ Outbound NAT ว่าไม่ได้ NAT Traffic ที่ควรเข้า Tunnel

C9NETWORK ให้บริการ Deploy และ Configure pfSense / OPNsense สำหรับองค์กรทุกขนาด ตั้งแต่ Single-site จนถึง IPsec Multi-Branch ข้ามจังหวัด พร้อม Support ตลอด 24/7 — ติดต่อทีมงาน C9NETWORK