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ủ:
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