Cấu hình VPN với strongSwan

Bà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 strongSwan (OpenSource IPsec-based VPN)

Mô Hình Thiết Kế:

Mô hình ví dụ:

Bước 1

– Mô hình sử dụng Ubuntu 16.04
– Tạo một server Linux chạy strongswan (Các bản OS hỗ trợ có trong link này)
– Cài đặt strongswan và các gói:

apt-get update && apt-get upgrade -y
apt-get install strongswan strongswan-starter strongswan-charon -y

Bước 2

– Khởi tạo VPN Tunnel trên Bizfly Cloud

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.

Các thông tin cần chú ý:
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

– Tiến hành cấu hình strongSwan
– Cấu hình file /etc/ipsec.secrets
– Thông tin chi tiết về file ipsec.secrets có thể được đọc ở đây

– Cấu hình file /etc/ipsec.conf
– Các cấu hình trong file cần phải trùng với thông tin được cài đặt trên VPN Tunnel tại Bizfly
– Thông tin chi tiết về file ipsec.conf có thể được tìm đọc tại đây
– Thông tin chi tiết về các options trong file có thể được tìm đọc tại đây
– Thông tin chi tiết về các phương thức mã hóa, cấu hình cài đặt IKE có thể đọc tại đây

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
charondebug=all
uniqueids=yes
strictcrlpolicy=no

# Add connections here.

# Sample VPN connections

conn <VPN_NAME>
authby=psk
type=tunnel
left=%defaultroute
leftid=<IP_SOURCE>
leftsubnet=<IP_SOURCE_LAN_SUBNET>
right=<IP_REMOTE> => được set sẵn trên trang bizfly
rightsubnet=<IP_REMOTE_LAN_SUBNET> => được set sẵn trên trang bizfly
ike=aes128-sha1-modp1536! => Cipher theo cấu hình trên bizfly (IKE)
esp=aes128-sha1! => Cipher theo cấu hình trên bizfly (IPSEC)
keyingtries=0
keyexchange=ikev1 => Cấu hình loại IKE tunnel sẽ sử dụng
ikelifetime=1h
lifetime=8h
dpddelay=30
dpdtimeout=120
dpdaction=restart
auto=start

– Sau khi cấu hình xong, tiến hành restart lại ipsec để ipsec nhận cấu hình VPN mới từ strongswan

sudo ipsec restart
sudo ipsec statusall

– Sau khi restart nếu ipsec statusall  hiện như dưới đây là config đã đúng và VPN Tunnel đã được tạo

Bước 4: Kiểm tra kết nối qua VPN

– Tiến hành add route cho server lab để có thể kết nối qua VPN TUNNEL

ip route add <IP_LAN_SUBNET_VPN> via <IP_LAN_STRONGSWAN> dev <INTERFACE>

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

– Kiểm tra kết nối từ server 10.20.150.15 đến server 10.6.169.166

– Kiểm tra kết nối từ server 10.6.169.166 đên server 10.20.150.15

– Kiểm tra trang thái VPN trên trang Bizfly Cloud VPN