Cấu hình VPN với pfsense

ài viết sẽ hướng dẫn các bạn tạo 1 VPN connection để kết nối Bizfly Cloud tới một server chạy pfsense (opensource firewall)

Mô Hình Thiết Kế:

Mô hình Ví dụ:

Bước 1:

Cài đặt một server chạy Pfsense Firewall
Links: Download
Sau khi cài đặt xong Pfsense, chúng ta cần phải truy cập vào server pfsense và tiến hành cấu hình firewall rules để server chạy pfsense allow truy cập vào web GUI:

  • Kiểm tra lại các cầu hình pfsense về các IP LAN, IP WAN, SSH, ….
  • Tại màn hình giao diện của pfsense chọn số 8 để truy cập vào shell

  • Tại shell gõ lệnh:
    easyrule pass wan tcp <port_trên_IP_đích>

Ví dụ như trong hình trên, ta sẽ có các câu lệnh sau:
ALLOW WEB GUI: easyrule passwan tcp any 103.56.158.50 443
ALLOW SSH: easyrule passwan tcp any 103.56.158.50 22

Bước 2

Truy cập trang quản trị VPN của Bizfly để tạo mới một VPN
– Chọn nút Tạo VPN để tiến hành truy cập vào trang khởi tạo VPN

Giải thích các thông số:
– Bizfly VPN gateway IP address: Địa chỉ IP WAN của VPN và sẽ được cấu hình tại server pfsense để forward các gói tin, và tập tin đến.
– Bizfly private IP subnet: Địa chỉ dải IP LAN của VPN
– IPsec Policy: Cấu hình các config cho phase 2 của VPN IPSEC trên pfsense (Config tại 2 bên phải trùng nhau thì VPN mới hoạt động)
– IKE Policy: Cấu hình các config cho phase 1 của VPN IPSEC trên pfsense (Config tại 2 bên phải trùng nhau thì VPN mới hoạt động)
– Pre-shared Key: Là mật khẩu, keys mà VPN và Pfsense sẽ dùng để auth cho nhau (Pre-shared Key – PSK phải giống nhau trên cả 2 bên)
– Remote VPN gateway IP address: Địa chỉ IP WAN của server pfsense
– Remote private IP subnet: Dải địa chỉ IP LAN của server pfsense

Trong mục cấu hình nâng cao:
– Thông số MTU: Maxium Transmission Unit (MTU) là kích thước gói dữ liệu lớn nhất, được đo bằng byte, có thể được truyền tải.
– Thông số DPD: Dead Peer Detection (DPD) là thông số để IPSEC xác nhận các kết nối của IPsec có hoạt động khộng. Thông số này được sử dụng trong trường hợp kết nối tới VPN qua IPsec Tunnel, VPN sẽ gửi gói IPsec DPD “R_U_THERE” để ngang hàng và chờ gói tin ACK. Nếu không có phản hồi, VPN sẽ ngắt kết nối đường hầm IPsec.

Lấy thông tin từ server pfsense, ta sẽ có cấu hình thông tin VPN như hình dưới:

Thông tin cấu hình IPsec Policy:
Các cấu hình này có thể được tùy chỉnh tùy ý khách hàng.

Thông tin cấu hình IKE Policy
Các cấu hình này có thể được tùy chỉnh tùy ý khách hàng.

Bước 3

Truy cập vào web GUI của pfsense với thông tin đăng nhập mặc định là:
User: admin
PW: pfsense

– Truy cập vào tab VPN, chọn mục IPSEC
– Click chọn nút ADD P1
– Trong trang cấu hình Phase 1 của VPN IPsec trên server pfsense, ta điền các thông tin theo config giống cấu hình của Bizfly VPN

Config Phase 1

– Remote Gateway tại phase 1 của pfsense ta sẽ để là IP WAN của VPN ta đã tạo trước đó

– PSK có thể tự gen hoặc chọn một chuỗi ký tự bất kỳ, nhưng PSK ở VPN và Pfsense phải giống nhau.

Thông số Phase 1 phải giống với IKE config bên Bizfly VPN

– Sau đó save lại cấu hình của phase 1, ta nhấn chọn tiếp nút ADD P2 ngay phía dưới.

Config Phase 2

– Thông số remote network tại phase 2, ta sẽ điền vào là thông số Bizfly Private IP subnet

– Cấu hình các thông số trong phase 2 theo giống config trong IPsec Config đã tạo bên Bizfly VPN rồi Save lại.

– Tiến hành config tiếp firewall trên pfsense để pfsense allow các gói tin đi qua VPN IPsec Tunnel:
– Chọn tab Firewall => Rules, Chọn tab IPSEC
– Tiến hành ADD FIREWALL RULES

– Mục Source, ta có thể chỉ định một vài IP hoặc một dải IP được kết nối đến VPN IPSec Tunnel

– Mục Destination, ta có thể chỉ định một vài IP hoặc một dải IP được kết nối đến VPN IPSec Tunnel qua IP của Pfsense

– Tiến hành Apply các config đã thay đổi trên.

Bước 4

Truy cập vào một server cũng dải LAN với server pfsense (trong ví dụ là server có IP: 10.20.150.15)

Tiến hành add route cho server:
ip route add via dev <IP_LAN_SUBNET_VPN> via <IP_LAN_PFSENSE> dev

Ví dụ: ip route add 10.6.169.0/24 via 10.20.150.30 dev eth0

– Xác nhận kết nối trên VPN IPSec Tunnel trên PFsense

– Kiểm tra trang thái VPN
– Tiến hành kiểm thử, ping từ server 10.20.150.15 sang server 10.6.169.166

– Tiến hành ping ngược từ server 10.6.169.166 sang server 10.20.150.15