NAT and VPN Gateway on NCS with Pfsense-2.6.0
Prerequisite
Pfsense Image on Customer Project
2 VPC Network
1 Private Subnet for Assosiate with External IP สำหรับทำเป็น WAN Interface
1 Private subnet ของลูกค้าที่ต้องการจะใช้ NAT Gateway (มีได้มากกว่า 1 Subnet) สำหรับทำเป็น LAN Interface
1 External IP สำหรับใช้ในการทำ NAT ออกไปยัง Internet และสำหรับ VPN client (OpenVPN)
Instructions
วิธี Implement Pfsense
1. Create Pfsense Instance
1.1 Launch instance ด้วย Pfsense-2.6.0 Image



1.2 เลือก Virtual Network ที่จะผูก External IP ก่อน เพื่อที่สามารถเข้าถึง WebUI ได้


2. Basic Config Pfsense
2.1 เข้า WebUI ของ Pfsense ด้วย External IP
Username : admin
Password : pfsense

2.2 เมื่อเข้าแล้วให้ตั้งค่าพื้นฐานเช่น hostname, dns, ntp, password

2.3 เข้าไปที่เมนู Firewall ➝ Rule ➝ WAN แล้วเพิ่ม Rule Allow any IP


3. Add Network Interface ของ pfsense สำหรับ LAN Interface
หลังจากตั้งค่าพื้นฐานของ Pfsense เรียบร้อยแล้ว ดำเนินการดังต่อไปนี้
3.1 เพิ่ม Network Interface สำหรับ Subnet (LAN) เพื่อใช้งาน NAT Gateway
โดยสามารถมีได้มากกว่า 1 subnet ตัวอย่าง หากมี 2 subnet ที่ต้องการใช้งาน NAT Gateway จำเป็นต้อง add interface ของ 2 subnet นี้เข้าที่ pfsense ด้วย


3.2 แก้ Security Group ของ Port นั้น

3.3 กลับมาที่ Pfsense ที่เมนู Interfaces ➝ Assignments และ add interface เข้าไป


3.4 Allow Firewall ที่ขา LAN

3.5 Fix Default Route ของ Pfsense ให้ออกทางขา WAN เท่านั้น ที่เมนู System ➝ Routing ➝ Gateways

4. NAT Configuration
4.1 ไปที่เมนู Firewall ➝ NAT ➝ Outbound เปลี่ยน Mode จาก Automatic ไปยัง Manual และลบ Rule NAT ออกให้หมด

4.2 เพิ่ม Rule NAT สำหรับ Private IP ที่จะ NAT ผ่าน Interface WAN ที่มี External IP อยู่

5. Add Host Route on Virtual Network
5.1 กลับไปที่หน้า NCS ของ Project ลูกค้า เพื่อทำ Host Route บน Virtual Network
เพื่อให้ Instance ที่อยู่ภายใต้ Virtual Network นั้น ได้รับ DHCP Default Route ไปยัง Pfsense แทนที่จะเป็น vRouter
5.2 เพิ่ม Default Route ไปยังขาของ Pfsense

6. Disable RPF (Revert Path Forwarding) ใน Virtual Network
เมื่อทำ Host Route เรียบร้อยแล้ว จะต้อง Disable "Reverse Path Forwarding" บน Virtual Network ที่จะใช้ NAT Gateway โดยไปที่เมนู VPC Network > Subnet > more > Disable RPF > CONFIRM


7. Testing NAT Gateway
Launch instance ขึ้นมาเพื่อทดสอบ NAT Gateway โดยใช้ Private Network
จะเห็นว่า default route จะชี้ไปทาง Pfsense แทนแล้ว และลองออก Internet จะเห็นว่าออกไปด้วย External IP ที่ Assosiate บน Pfsense ขา WAN อยู่

วิธีการทำ OpenVPN
1. Install essential package
ไปที่เมนู System > Package Manager > Available Packages
จากนั้น Search "openvpn" และลง package "openvpn-client-export" เพื่อใช้สำหรับ export file opvn สำหรับลูกค้า


2. Create new CA
ไปที่เมนู System > Cert Manager > CA
Method : Create an internal Certificate Authority
Key Type : RSA 4096
Digest Algorithm : SHA256
Lifetime : 3650 (10 years)


3. Create Server Certificates for OpenVPN
ไปที่เมนู System > Cert Manager > Certificates
Method : Create an internal Certificates
Key Type : RSA 4096
Digest Algorithm : SHA256
Lifetime : 3650 (10 years)
Certificate Type : Server Certificate


4. Create OpenVPN Server
4.1 เข้าไปที่เมนู VPN > OpenVPN > Servers แล้วตั้งค่า OpenVPN Server ดังนี้
Server Mode : Remote Access (User Auth)
Device Mode : Tun - Layer 3 Tunnel Mode
Protocol : UDP on IPv4 Only
Interface : WAN
Peer Certificate Authority : NCS (ชื่อตามตอนที่สร้าง CA)
Server Certificate : NCS-Server (ชื่อตามตอนที่สร้าง Certificate Server)



IPv4 Tunnel Network : 10.147.0.0/24 (Subnet สำหรับแจก client เวลา VPN เข้ามา พยายามตั้งค่าให้ไม่ชนกับ subnet ที่ลูกค้าใช้งานอยู่)
IPv4 Local Network : 10.148.0.0/24, 10.149.0.0/24 (Subnet ที่ต้องการใช้งานเมื่อ VPN เข้ามา)

4.2 Assign Interface ใหม่

4.3 Allow Firewall สำหรับ Interface OpenVPN เพื่อให้ user สามารถ VPN แล้วเข้าถึง Interface อื่น ๆ ภายในได้

5. Create User for OpenVPN
เข้าไปที่เมนู System ➝ User Manager ➝ Users

สำหรับ VPN User ไม่จำเป็นต้องอยู่ใน Group Membership แค่สร้าง username/password ก็สามารถใช้งานได้

6. Client Profile Export
6.1 ไปที่เมนู VPN > OpenVPN > Client Export
ตั้งค่า Host Name Resolution เป็น other และใส่ Host Name เป็น External IP ที่ Assosiate กับขา WAN

6.2 Export OpenVPN Profile ไปใช้

7. Testing OpenVPN
ทดสอบโหลด Profile จาก Pfsense และใช้งานบน iPad
สร้าง instance ใหม่ใน Private Network เพื่อทำเป็น web server ไว้ทดสอบ OpenVPN
ทดสอบเข้า web ด้วย OpenVPN
Last updated
Was this helpful?