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=%identity
Setting 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 -p
Setting 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