NAT Gateway and SSL VPN with Pfsense-2.6.0
Last updated
Last updated
Pfsense image บน 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)
OS ในการทดสอบจะใช้ Pfsense-2.6.0 ทำ NAT gateway และ OpenVPN
***ในคู่มือนี้จะไม่มีขั้นตอนในการนำ image Pfsense เข้า NCS ผู้ใช้งานสามารถ import image Pfsense-2.6.0 ได้เอง ตามอ้างอิงในเอกสาร https://docs-epc.gitbook.io/ncs-documents/image/importing-your-own-image
Launch instance ด้วย Pfsense-2.6.0 image
เลือก virtual network ที่จะผูก External IP เพื่อให้สามารถเข้าถึง WebUI ได้
หลังจาก launch instance แล้ว เข้า WebUI ของ Pfsense ด้วย external IP โดยกรอกรายละเอียดล็อกอินต่อไปนี้
Username: admin
Password: pfsense
OS Note : หากเข้าไม่ได้แล้วมี error ขึ้นมา ให้ทำการ console แล้วใส่ command line นี้ “pfSsh.php playback disablereferercheck“
เมื่อเข้าได้แล้ว ให้ตั้งค่าพื้นฐาน เช่น hostname, dns, ntp, password
จากนั้น เข้าไปที่เมนู Firewall ➝ Rule ➝ WAN
เพิ่ม rule allow any IP
โดยต้องทำก่อนการเพิ่ม network interface ที่ 2 เท่านั้น เนื่องจาก default rule ของ WAN ที่ allow HTTP จะถูกย้ายไปอยู่ขา LAN เมื่อเพิ่ม interface ใหม่ จะส่งผลให้ขา WAN ไม่มี rule firewall ที่ allow HTTP ซึ่งทำให้เราไม่สามารถเข้าใช้งาน Pfsense ได้
หลังจากตั้งค่าพื้นฐานของ Pfsense แล้ว ให้เพิ่ม network interface สำหรับ subnet (LAN) เพื่อใช้งาน NAT gateway โดยสามารถมีได้มากกว่า 1 subnet
ตัวอย่างคือ หากมี 2 subnet ที่ต้องการใช้งาน NAT gateway เราจำเป็นที่จะต้อง add interface ของ 2 subnet นี้เข้าที่ pfsense ด้วย
เมื่อเพิ่ม network interface ต้องแก้ security group ของ port นั้น ๆ ด้วย โดยต้องกำหนดให้เป็น allow all เพราะต้องกำหนด policy rule บน Pfsense อีกครั้ง
จากนั้น กลับมาที่ Pfsense ที่เมนู Interfaces ➝ Assignments
และ add interface เข้าไป
Allow Firewall ที่ขา LAN
หลังจากเพิ่ม Interface LAN แล้ว ให้ทำ fix default route ของ Pfsense ให้ออกทางขา WAN เท่านั้น
ที่เมนู System ➝ Routing ➝ Gateways
ตั้งค่า NAT โดยไปที่เมนู Firewall ➝ NAT ➝ Outbound
เปลี่ยน mode จาก automatic ไปยัง manual
จากนั้น ลบ rule NAT ออกให้หมด
เพิ่ม rule NAT สำหรับ private IP ที่จะ NAT ผ่าน Interface WAN ที่มี External IP อยู่
กลับไปที่หน้า NCS ของ project ของคุณเพื่อทำ host route บน virtual network เพื่อให้ instance ที่อยู่ภายใต้ virtual network นั้น ได้รับ DHCP default route ไปยัง Pfsense แทนที่จะเป็น vRouter
การทำ host route เป็นการบอกให้ DHCP server ของ Tungsten Fabric แจก route ที่ระบุลงไปเมื่อ Client รับ DHCP
ถ้า instance เกิดขึ้นมาก่อนจะใส่ host route จำเป็นต้อง release DHCP เพื่อให้ได้รับ route ดังกล่าว "dhclient -r"
ถ้า instance เกิดมาหลังใส่ Host Route จะได้รับ route ดังกล่าวทันที
ทำการเพิ่ม Default Route ไปยังขาของ Pfsense
เมื่อทำ host route แล้ว จะต้อง disable "Reverse Path Forwarding" บน virtual network ที่ต้องการใช้ NAT gateway ด้วย โดยสามารถดำเนินการบน virtaul network ได้โดยเลือกที่ Network & Security > VPC Network > เลือก virtual network ที่ใช้งานสำหรับ WAN (external IPs) และ virtual network ต้องการใช้งาน NAT gateway ตามรูปด้านล่างครับ
Launch instance ขึ้นมาเพื่อทดสอบ NAT gateway โดยใช้ private network
จะเห็นว่า default route จะชี้ไปทาง Pfsense แทน และเมื่อออก Internet จะเห็นว่าสามารถออกไปได้ด้วย external IP ที่ assosiate บน Pfsense ขา WAN อยู่
Note : หากมีเครื่อง instance ที่สร้างก่อนที่จะทำการกำหนด host route ใน VPC network จะไม่ได้รับ host route ซึ่งจะทำให้ไม่สามารถใช้งาน NAT gateway (internet) ได้ จึงจำเป็นต้อง reboot instance (VM) เครื่องดังกล่าวก่อน
ไปที่เมนู System ➝ Package Manager ➝ Available Packages
Search "openvpn" และลง package "openvpn-client-export" เพื่อใช้สำหรับ export file opvn สำหรับผู้ใช้งาน
ไปที่เมนู System ➝ Cert Manager ➝ CA
Method : Create an internal Certificate Authority
Key Type : RSA 4096
Digest Algorithm : SHA256
Lifetime : 3650 (10 years)
Note : การสร้าง SSL-VPN นี้ เป็นการใช้ certificate แบบ self signed แต่หากคุณมี CA แล้ว สามารถนำมาใช้ได้เช่นกัน
ไปที่เมนู System ➝ Cert Manager ➝ Certificates
Method : Create an internal Certificates
Key Type : RSA 4096
Digest Algorithm : SHA256
Lifetime : 3650 (10 years)
Certificate Type : Server Certificate
เข้าไปที่เมนู 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 เข้ามา)
เมื่อสร้าง OpenVPN server แล้ว ให้ assign interface ใหม่
และ allow firewall สำหรับ interface OpenVPN เพื่อให้ user สามารถใช้ VPN และเข้าถึง interface อื่นภายในได้
เข้าไปที่เมนู System ➝ User Manager ➝ Users
สำหรับ VPN user ไม่จำเป็นต้องอยู่ใน Group Membership แค่สร้าง username/password สามารถใช้งานได้เลย
ไปที่เมนู VPN ➝ OpenVPN ➝ Client Export
ทำการตั้งค่า Host Name Resolution เป็น other และใส่ Host Name เป็น External IP ที่ Assosiate กับขา WAN
Export OpenVPN Profile ไปใช้
ทดสอบโหลด profile จาก Pfsense และใช้งานบน iPad
สร้าง instance ใหม่ใน Private Network เพื่อทำเป็น web server ไว้ทดสอบ OpenVPN
ทดสอบเข้า web ด้วย OpenVPN
Bandwidth ที่ใช้งาน Internet ได้ ขึ้นอยู่กับ Instance (Pfsense) ที่เราสร้างตาม Flavor ที่เลือก โดยรายละเอียดสามารถดูเพิ่มได้ที่ https://nipa.cloud/th/pricing/nipa-space/instance
VPC Network ที่ใช้งาน NAT gateway จะไม่สามารถเชื่อมต่อกับ VPC Network อื่นๆ ที่เชื่อมต่อกับ logical router ได้ หากต้องการให้สามารถเชื่อมต่อกันได้ ต้องเพิ่ม destination route (host route) ของ VPC Network ของทั้ง 2 VPC network นั้น ซึ่งคล้ายการทำ static route
Configuration, Bug และ Issue ต่างๆ ที่เกิดจาก Pfsense ลูกค้าต้องดำเนินการตรวจสอบและแก้ไขด้วยตัวเอง
ผู้ใช้งานต้องดำเนินการตรวจสอบและแก้ไข configuration, bug และ issue ต่างๆ ที่เกิดจาก Pfsense
ผู้ใช้งานต้องดำเนินการด้าน security ต่างๆ ของ Pfsense (NAT gateway) ด้วยตนเอง
ไม่แนะนำให้ใช้งานกับ production หากต้องการใช้งานบน produciton กรุณาแจ้งติดต่อ sale เพื่อรับคำปรึกษาเพิ่มเติม