Knowledge BasepfSense / OPNsense — Install + WAN/LAN + Firewall + IPsec Site-to-Site
intermediate

pfSense / OPNsense — Install + WAN/LAN + Firewall + IPsec Site-to-Site

คู่มือติดตั้ง pfSense / OPNsense ตั้งแต่ Download ISO จนถึง WAN/LAN, Firewall Rule และ IPsec Site-to-Site VPN แบบ IKEv2

A
Apinan
C9NETWORK Editor
19 พฤษภาคม 2569
11 นาที
0firewallipsecopnsensepfsensesite-to-sitetutorialvpn

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 คล้ายกันมาก

pfSense Web GUI

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
Tip

Intel NIC (i210/i350) ให้ Driver ที่เสถียรที่สุดบน FreeBSD ทั้ง pfSense และ OPNsense ใช้ Realtek ได้แต่อาจมีปัญหา Throughput สูง

Download ISO#

สร้าง Bootable USB#

bashbash
# 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:

  1. Welcome → กด Enter เลือก Install
  2. Keymap → ปล่อย default (US) หรือเลือก Thai ถ้าต้องการ
  3. Partitioning → เลือก ZFS (Recommended) → Pool Type: stripe (disk เดียว) หรือ mirror (2 disk)
  4. Disk Selection → เลือก SSD / NVMe → ยืนยัน YES, destroy
  5. ระบบ Install ไฟล์ ~5 นาที
⚠️ ข้อควรระวัง

เลือก ZFS stripe บน disk เดียวได้ แต่ไม่มี Redundancy — แนะนำ mirror ถ้ามี SSD 2 ตัว เพื่อ Boot Environment และ Snapshot

  1. Root Password → ตั้งรหัสผ่านให้แข็งแรง (16+ ตัวอักษร)
  2. Reboot → ถอด USB ก่อนเครื่อง Boot
pfSense Dashboard 2.7.0

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
ℹ️ Note

ถ้า 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 จะเปิดอัตโนมัติ:

  1. General Information → ตั้ง Hostname (เช่น fw01), Domain, DNS Server (เช่น 1.1.1.1, 8.8.8.8)
  2. Time Serverpool.ntp.org หรือ NTP Server ภายใน
  3. WAN → เลือก Type (ดูหัวข้อ 6)
  4. LAN → ยืนยัน IP 192.168.1.1/24 หรือเปลี่ยนตาม Network ของคุณ
  5. Admin Password → เปลี่ยนจาก default
  6. 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
Tip

ISP ไทยส่วนใหญ่ (TRUE, AIS, NT) ใช้ PPPoE กรอก Username ในรูปแบบ username@domain ตามที่ ISP กำหนด

บันทึกด้วย SaveApply 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.100192.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):

  1. ไปที่ Firewall → Aliases → สร้าง Alias ชื่อ SOCIAL_MEDIA ประเภท URL Table ชี้ไปยัง IP ของ Facebook/TikTok
  2. ไปที่ Firewall → Rules → LAN → กด Add (ขึ้นบน Default Allow)
  3. Action: Block, Protocol: TCP, Destination: Alias SOCIAL_MEDIA, Port: 443
  4. SaveApply
⚠️ ข้อควรระวัง

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

SaveApply Changes

ℹ️ Note

ทำซ้ำขั้นตอนเดียวกันบน Site B โดยสลับ Local/Remote Network และ Remote Gateway เป็น IP ของ Site A

OPNsense Dashboard

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

SaveApply 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 แล้วรัน:

bashbash
# 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 ทดสอบ#

bashbash
# จาก PC ใน Site A ping ไป Site B
ping 192.168.20.1

# จาก Diagnostics → Ping ใน Web GUI
# Source: LAN address, Target: 192.168.20.1
Tip

ถ้า Tunnel ขึ้นแต่ Ping ไม่ผ่าน ให้ตรวจ Firewall Rule บน IPsec Interface ก่อน และตรวจ Outbound NAT ว่าไม่ได้ NAT Traffic ที่ควรเข้า Tunnel

pfSense Dashboard พร้อมใช้งาน

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