IPSec adalah salah satu solusi VPN yang stabil dan aman untuk menghubungkan banyak perangkat ke server pusat. Pada artikel ini kita akan membuat koneksi IPSec IKEv2 antara banyak Raspberry Pi dan satu server AWS menggunakan StrongSwan.
Konfigurasi ini cocok untuk:
- IoT
- Remote monitoring
- Akses jaringan private
- Sensor dan device lapangan
- Tunnel aman antar lokasi
Topologi yang digunakan:
[Raspberry Pi Banyak]
│
│ IPSec IKEv2
▼
[AWS Ubuntu 24.04]
Server AWS akan menjadi pusat VPN, sedangkan Raspberry Pi bertindak sebagai client.
Kenapa Menggunakan IPSec StrongSwan
StrongSwan cukup populer untuk implementasi IPSec di Linux karena:
- Stabil untuk jangka panjang
- Mendukung IKEv2
- Support NAT Traversal
- Cocok untuk device kecil seperti Raspberry Pi
- Bisa digunakan untuk banyak client sekaligus
Pada tutorial ini:
- AWS menggunakan
ipsec.conf - Raspberry Pi menggunakan
swanctl.conf - Autentikasi menggunakan PSK
- Support banyak Raspberry Pi
Persiapan Server AWS
Gunakan Ubuntu 24.04 pada AWS.
Update package:
sudo apt update
Install StrongSwan:
sudo apt install \
strongswan \
strongswan-starter \
strongswan-swanctl \
libcharon-extra-plugins \
libstrongswan-extra-plugins \
-y
Enable IP Forwarding
Edit file:
sudo nano /etc/sysctl.conf
Tambahkan:
net.ipv4.ip_forward=1
Apply:
sudo sysctl -p
Konfigurasi IPSec di AWS
Buat file:
sudo nano /etc/ipsec.conf
Isi dengan:
config setup
uniqueids=no
conn raspberry-clients
auto=add
type=tunnel
keyexchange=ikev2
authby=psk
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
left=%any
leftid=AWS_VPN
leftsubnet=10.10.0.0/24
right=%any
rightid=%any
rightsubnet=0.0.0.0/0
dpdaction=restart
dpddelay=30s
ikev2=insist
Konfigurasi Secret AWS
Edit file:
sudo nano /etc/ipsec.secrets
Isi:
AWS_VPN %any : PSK "VPN-SECRET-123"
Restart StrongSwan di AWS
sudo systemctl restart strongswan-starter
sudo systemctl enable strongswan-starter
Buka Port di AWS Security Group
Jangan lupa membuka port berikut:
UDP 500
UDP 4500
Port tersebut digunakan untuk IPSec dan NAT Traversal.
Install StrongSwan di Raspberry Pi
Masuk ke Raspberry Pi lalu install package:
sudo apt update
sudo apt install \
strongswan \
strongswan-swanctl \
libcharon-extra-plugins \
libstrongswan-extra-plugins \
-y
Konfigurasi Raspberry Pi
Edit file:
sudo nano /etc/swanctl/swanctl.conf
Isi dengan:
connections {
aws-vpn {
version = 2
proposals = aes256-sha256-modp2048
local_addrs = %any
remote_addrs = 16.78.26.164
local {
auth = psk
id = rpi-01
}
remote {
auth = psk
id = AWS_VPN
}
children {
net {
local_ts = 0.0.0.0/0
remote_ts = 10.10.0.0/24
esp_proposals = aes256-sha256
start_action = start
}
}
dpd_delay = 30s
dpd_timeout = 120s
}
}
secrets {
ike-psk {
secret = VPN-SECRET-123
}
}
Ganti:
16.78.26.164
menjadi IP public server AWS Anda.
Menjalankan VPN di Raspberry Pi
sudo systemctl enable strongswan
sudo systemctl restart strongswan
sudo swanctl --load-all
sudo swanctl --initiate --child net
Cek Status Tunnel IPSec
Gunakan perintah:
sudo swanctl --list-sas
Jika berhasil akan muncul status:
ESTABLISHED
Artinya Raspberry Pi sudah berhasil terhubung ke AWS menggunakan IPSec.
Test Koneksi
Coba ping subnet AWS:
ping 10.10.0.1
Lalu cek traffic IPSec:
sudo swanctl --list-sas
Counter packet akan mulai bertambah.
Auto Install Raspberry Pi
Jika Raspberry Pi yang digunakan cukup banyak, konfigurasi manual tentu akan memakan waktu. Solusinya adalah menggunakan script auto install.
Buat file:
nano install-vpn.sh
Isi script:
#!/bin/bash
AWS_IP=$1
DEVICE_ID=$2
PSK=$3
apt update
apt install \
strongswan \
strongswan-swanctl \
libcharon-extra-plugins \
libstrongswan-extra-plugins \
-y
cat > /etc/swanctl/swanctl.conf <<EOF
connections {
aws-vpn {
version = 2
proposals = aes256-sha256-modp2048
local_addrs = %any
remote_addrs = $AWS_IP
local {
auth = psk
id = $DEVICE_ID
}
remote {
auth = psk
id = AWS_VPN
}
children {
net {
local_ts = 0.0.0.0/0
remote_ts = 10.10.0.0/24
esp_proposals = aes256-sha256
start_action = start
}
}
dpd_delay = 30s
dpd_timeout = 120s
}
}
secrets {
ike-psk {
secret = $PSK
}
}
EOF
systemctl enable strongswan
systemctl restart strongswan
swanctl --load-all
swanctl --initiate --child net
echo "VPN INSTALLED"
Jalankan:
chmod +x install-vpn.sh
Contoh penggunaan:
sudo ./install-vpn.sh 16.78.26.164 rpi-01 VPN-SECRET-123
Untuk device lain:
sudo ./install-vpn.sh 16.78.26.164 rpi-02 VPN-SECRET-123
Auto Install AWS
Agar setup server AWS lebih cepat, gunakan script berikut.
Buat file:
nano install-aws-ipsec.sh
Isi:
#!/bin/bash
VPN_SUBNET=${1:-10.10.0.0/24}
PSK=${2:-VPN-SECRET-123}
apt update
apt install -y \
strongswan \
strongswan-starter \
strongswan-swanctl \
libcharon-extra-plugins \
libstrongswan-extra-plugins \
iptables-persistent \
ufw
grep -q "net.ipv4.ip_forward=1" /etc/sysctl.conf || \
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
DEFAULT_IF=$(ip route | grep default | awk '{print $5}' | head -n1)
cat > /etc/ipsec.conf <<EOF
config setup
uniqueids=no
conn raspberry-clients
auto=add
type=tunnel
keyexchange=ikev2
authby=psk
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
left=%any
leftid=AWS_VPN
leftsubnet=$VPN_SUBNET
right=%any
rightid=%any
rightsubnet=0.0.0.0/0
dpdaction=restart
dpddelay=30s
ikev2=insist
EOF
cat > /etc/ipsec.secrets <<EOF
AWS_VPN %any : PSK "$PSK"
EOF
ufw allow 500/udp
ufw allow 4500/udp
echo "y" | ufw enable
iptables -t nat -A POSTROUTING -o $DEFAULT_IF -j MASQUERADE
netfilter-persistent save
systemctl enable strongswan-starter
systemctl restart strongswan-starter
Jalankan:
chmod +x install-aws-ipsec.sh
Contoh:
sudo ./install-aws-ipsec.sh 10.10.0.0/24 VPN-SECRET-123
Tips untuk Banyak Raspberry Pi
Gunakan ID yang rapi seperti:
rpi-001
rpi-002
rpi-003
Dengan begitu proses monitoring dan maintenance akan lebih mudah.
Kesimpulan
Menghubungkan banyak Raspberry Pi ke AWS menggunakan IPSec IKEv2 dan StrongSwan ternyata cukup sederhana jika menggunakan konfigurasi yang tepat.
Setup ini cocok untuk:
- IoT
- Monitoring device
- Akses private network
- Remote site
- Sensor lapangan
- Gateway terenkripsi
Keunggulan utama konfigurasi ini adalah:
- Stabil
- Aman
- Bisa auto reconnect
- Support NAT
- Mudah diperbanyak
- Cocok untuk Raspberry Pi
Jika nanti jumlah device semakin besar, Anda bisa mempertimbangkan penggunaan certificate authentication agar pengelolaan VPN menjadi lebih aman dan lebih mudah.