Hướng dẫn cài đặt VPN Site to Site trên Ubuntu, Centos sử dụng StrongSwan

Hướng dẫn cài đặt VPN Site to Site trên Ubuntu, Centos sử dụng StrongSwan

1/ Giới thiệu và mô hình

1.1/ Giới thiệu

StrongSwan là open source để kết nối VPN site to site giữa 2 branch​​ hoặc client to site khá đơn giản cấu hình.​​ 

Trang chủ:

https://www.strongswan.org/

Giới thiệu và các giao thức:

https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan

 

1.2/ Mô hình Lab

ở bài lab này mình sẽ cài đặt và cấu hình VPN site to site.

 

Yêu cầu: dải Lan giữa 2 điểm cần đặt dải IP khác nhau. Ở đây mình đặt dải 192.168.102.0/24 và 172.16.102.0/24. các bạn có thể tự đặt tuý ý theo từng trường hợp.

Sau khi cài đặt thành công 2 dải ip private trên phải thông được với nhau.

 

2/ Cài đặt StrongSwan

cài đặt trên cả 2 server StrongSwan01 và StrongSwan02​​ 

 

với server​​ Ubuntu

apt update && sudo apt upgrade -y

apt install strongswan -y

systemctl enable strongswan

 

 

với server Centos

yum -y install epel-release

yum -y install strongswan

systemctl enable strongswan

 

cài đặt tham số Kernel như sau:

cat >> /etc/sysctl.conf <<​​ EOF

echo net.ipv4.ip_forward = 1

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

EOF

kiểm tra lại:

sysctl -p /etc/sysctl.conf

 

sau đó cài đặt trên từng server như sau:

​​ 2.1/ Server StrongSwan01

Cài đặt IP:

 

 

Khởi tạo Preshared​​ key trên server StrongSwan01 sau đó sẽ copy sang server StrongSwan02 ở bước sau. Yêu cầu Preshared key trên cả 2 server phải giống nhau để xác thực:

openssl rand -base64 64

sẽ sinh ra một mã như sau:

e2rARNQ9fTVTMLIVRHCARkYVMuLy5J8ufugQYu228uBiqFAxsSF1fxACrhSHlG3q

cấu hình file​​ /etc/ipsec.secrets​​ với chuỗi mã PSK được sinh ra ở trên:

nano /etc/ipsec.secrets

#paste

10.0.1.23 10.0.1.24 : PSK "e2rARNQ9fTVTMLIVRHCARkYVMuLy5J8ufugQYu228uBiqFAxsSF1fxACrhSHlG3q"

Tiếp theo cấu hình file config StrongSwan /etc/ipsec.conf:

nano /etc/ipsec.conf

 

#paste

config setup

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ charondebug="all"

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ uniqueids=yes

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ strictcrlpolicy=no

 

# connection to HCM​​ 

conn hanoi-to-hochiminh

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ authby=secret

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ left=%defaultroute

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ leftid=10.0.1.23

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ leftsubnet=192.168.102.0/24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ right=10.0.1.24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ rightsubnet=172.16.102.0/24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ike=aes256-sha2_256-modp1024!

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ esp=aes256-sha2_256!

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ keyingtries=0

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ikelifetime=1h

 ​​ ​​ ​​​​  ​​ ​​ ​​​​ lifetime=8h

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpddelay=30

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpdtimeout=120

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpdaction=restart

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ auto=start

 

 

 

2.2/ Server StrongSwan02

cài đặt IP

 

 

Hoàn toàn tương tự cấu hình trên server StrongSwan01

setup file​​ /etc/ipsec.secrets

nano /etc/ipsec.secrets

 

#paste

10.0.1.24 10.0.1.23 : PSK " e2rARNQ9fTVTMLIVRHCARkYVMuLy5J8ufugQYu228uBiqFAxsSF1fxACrhSHlG3q"

 

Tiếp theo cấu hình file config StrongSwan /etc/ipsec.conf:

nano /etc/ipsec.conf

 

#paste

#nano /etc/ipsec.conf

# basic configuration

config setup

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ charondebug="all"

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ uniqueids=yes

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ strictcrlpolicy=no

 

# connection to HN​​ 

conn hochiminh-to-hanoi

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ authby=secret

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ left=%defaultroute

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ leftid=10.0.1.24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ leftsubnet=172.16.102.0/24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ right=10.0.1.23

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ rightsubnet=192.168.102.0/24

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ike=aes256-sha2_256-modp1024!

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ esp=aes256-sha2_256!

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ keyingtries=0

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ikelifetime=1h

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ lifetime=8h

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpddelay=30

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpdtimeout=120

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ dpdaction=restart

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ auto=start

2.3/ Cấu​​ hình mở Firewall trên cả 2 server StrongSwan01 và StrongSwan02

chỉ cần allow IP public của 2 server StrongSwan01 và StrongSwan02. và mở Forward như bên dưới.

 

 

cụ thể rule sẽ như sau:

-A FORWARD -s 192.168.102.0/24 -j ACCEPT

-A FORWARD -s 172.16.102.0/24 -j ACCEPT

-A FORWARD -s 10.0.1.0/24 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A INPUT -s 10.0.1.0/24 -p tcp -m state --state NEW -m tcp -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

 

2.4/ Add static route

sau khi cài xong các bước trên cần add thêm static route để 2 server StrongSwan biết được dải IP LAN của nhau:

trên server StrongSwan01:

ip route add 172.16.102.0/24 via 10.0.1.24 dev ens160

kiểm tra:

 

 

Tương tự trên server StrongSwan02:

ip route add 192.168.102.0/24 via 10.0.1.23 dev ens160

kiểm tra:

 

 

2.5/ Start StrongSwan

sudo ipsec restart

sudo ipsec status

 

 

hoặc kiểm tra kĩ hơn bằng lệnh:​​ 

sudo ipsec statusall

 

Khởi động strongswan khi start lại server.

 

sudo systemctl enable strongswan

2.6/ các câu lệnh khác:

sudo ipsec up connection-name

sudo ipsec down connection-name

sudo ipsec restart

sudo ipsec status

sudo ipsec statusall

Kiểm tra trạng thái của Ipsec tunnel

sudo ip xfrm state

sudo ip xfrm policy

Reload lại chuỗi kết nối trong khi vẫn đang chạy Ipsec

sudo​​ ipsec rereadsecrets

Kiểm tra gói tin với tcpdump

sudo tcpdump esp

 

 

 

 

 

 

 

2.7/ Test trên 2 server Client xem đã thông LAN với nhau hay chưa.

client01:

 

ping test

 

 

client02