Banyak perusahaan ataupun orang memilih menggunakan IPsec karena support IPsec sudah ada dimana-mana, hampir semua sistem operasi mendukung IPsec tanpa perlu tambahan software lain. Salah satu software yang bisa digunakan untuk membuat server VPN IPsec adalah Strongswan, software tersebut juga yang akan kita gunakan di tutorial kali ini.
Beberapa hal yang perlu di perhatikan/kebutuhan adalah
 – IPsec bisa di install tanpa SSL
 – Ubuntu 20.04 dengan Public IP
 – Client bisa mengunakan Windows, MacOS, Linux, Android ataupun iOS.
 – Akses root
Setting DNS
Untuk mendapatkan SSL gratis terlebih dahulu setting DNS record ke IP server
┌────────┬────────────────────────────────────────┬──────────────────────────────────────────────────┬──────────┬────────┬──────────────────────────────────┐ │ Type │ Name │ Value │ TTL │ Active │ ID │ ├────────┼────────────────────────────────────────┼──────────────────────────────────────────────────┼──────────┼────────┼──────────────────────────────────┤ │ A │ ipsec.jaranguda.com │ 192.168.100.87 │ 1 │ false │ aasdasdsadasdasdasdasdadasdsadas │ └────────┴────────────────────────────────────────┴──────────────────────────────────────────────────┴──────────┴────────┴──────────────────────────────────┘
Install dependency
sudo apt install curl socat -y
Install acme.sh Lets Encrypt Client
 Daripada menggunakan self-sign SSL saya
curl https://get.acme.sh | sh
update perubahan di ~/.bashrc
source ~/.bashrc
Generate SSL
Untuk penggunaan SSLnya kita akan generate dengan acme.
acme.sh --issue -d ipsec.jaranguda.com --standalone
setelah menjalankan perintah tersebut, tunggu beberapa saat sampai muncul certificate yang diminta
 
Install Strongswan dan pluginnya
apt install strongswan strongswan-pki libcharon-extauth-plugins libcharon-extra-plugins -y
Konfigurasi IPsec
Ingat untuk merubah ipsec.EXAMPLE.com dengan domain yang ada buat sebelumnya.
Salin file sertifikat dan private key ke folder /etc/ipsec.d
cp /root/.acme.sh/ipsec.EXAMPLE.com/fullchain.cer /etc/ipsec.d/certs/ipsec.EXAMPLE.com.cer cp /root/.acme.sh/ipsec.EXAMPLE.com/ipsec.EXAMPLE.com.key /etc/ipsec.d/private/
Konfigurasi IPsec strongswan berada di file /etc/ipsec.conf, hapus file tersebut ganti dengan
config setup
    plutostart=no
 
conn ipsec-jaranguda
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@ipsec.EXAMPLE.com
    leftcert=ipsec.EXAMPLE.com.cer
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.1.2.0/24
    rightdns=1.1.1.1,8.8.8.8
    eap_identity=%identitySetting IPsec Secret
Buka file /etc/ipsec.secrets, tambahkan
 : RSA ipsec.jaranguda.com.key
jaranguda : EAP "PASSWORD-SUPER-AMAN"Restart service strongswan
Setelah melakukan perubahan tersebut, restart service strongswan
 
Aktifkan IP Forwarding
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.conf
Aplikasikan perubahan tersebut
sysctl -pSetting Iptables
Agar client yang menggunakan VPN bisa mengakses internet, setting IPTABLES sebagai berikut
iptables -t nat -A POSTROUTING -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sesuaikan eth0 dengan default interface yang digunakan. Untuk melihatnya gunakan ip route | grep default
# ip route | grep default
default via 192.168.1.2 dev eth0 proto static