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

OS ที่ในการทดสอบจะใช้ Pfsense-2.6.0 ในการทำ NAT Gateway และ OpenVPN

***ในคู่มือนี้จะไม่มีขั้นตอนในการนำ Image Pfsense เข้า NCSOS ที่ในการทดสอบจะใช้ Pfsense-2.6.0 ในการทำ NAT Gateway และ OpenVPN

วิธี 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

OS Note : หากเข้าไม่ได้แล้วปรากฏ error ขึ้นมา ให้ทำการ console แล้วใส่ command line ตามด้านล่างนี้ครับ “pfSsh.php playback disablereferercheck“

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

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

ต้องทำก่อนการเพิ่ม Network Interface ที่ 2 เท่านั้น เนื่องจาก Default Rule ของ WAN ที่ Allow HTTP จะถูกย้ายไปอยู่ขา LAN เมื่อเราเพิ่ม Interface ใหม่ จะส่งผลให้ขา WAN ไม่มี Rule Firewall ที่ Allow HTTP ซึ่งทำให้เราไม่สามารถเข้าใช้งาน Pfsense ได้

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

การทำ Host Route จะเป็นการบอกให้ DHCP Server แจก Route ที่ระบุลงไปเมื่อ Client รับ DHCP ด้วย

  • ถ้า Instance เกิดขึ้นมาก่อนใส่ Host Route จำเป็นต้องต้อง release dhcp เพื่อที่จะได้รับ route ดังกล่าว "dhclient -r"

  • ถ้า instance เกิดมาหลังใส่ Host Route จะได้รับ route ดังกล่าวทันที

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