Ada beberapa protokol vpn di antara nya pptp, openvpn, sstp, l2tp dan wireguard. kali ini kita akan bahas untuk protokol l2tp dengan kombinasi ipsec. dengan ada nya kombinasi ipsec ini maka protokol l2tp nya akan di enkripsi.
pertama install dulu package nya.
# yum install libreswan xl2tpd
kemudian buatlah sebuah configurasi untuk penamaan bebas, disini saya akan mencoba membuat config dengan nama :
create file /etc/ipsec.d/l2tp_psk.conf
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
dpddelay=30
dpdtimeout=120
dpdaction=clear
rekey=yes
ikelifetime=8h
keylife=1h
type=transport
left=%defaultroute
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
ikev2=never
ike=aes128-sha1-modp1024,aes256-sha1-modp2048
esp=aes128-sha1,aes256-sha1-modp4096
setelah itu tambahkan pre share key di /etc/ipsec.d/my.secrets
192.168.10.100 %any: PSK "kodesecretanda"
silahkan ganti ip 192.168.10.100 dengan ip server anda.
kemudian edit file /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter= 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.rp_filter= 0
setelah itu jalankan perintah untuk melakukan reload sysctl
# sysctl -p
sampai disini jalankan service ipsec nya
# service ipsec start
kemudian untuk mengecek apakah ipsec ini sudah berhasil atau tidak nya
# ipsec verify
seharusnya keluar tampilan output seperti dibawah ini
Verifying installed system and configuration files
Version check and ipsec on-path [OK]
Libreswan 3.29 (netkey) on 4.18.0-193.14.2.el8_2.x86_64
Checking for IPsec support in kernel [OK]
NETKEY: Testing XFRM related proc values
ICMP default/send_redirects [OK]
ICMP default/accept_redirects [OK]
XFRM larval drop [OK]
Pluto ipsec.conf syntax [OK]
Checking rp_filter [OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for IKE/NAT-T on udp 4500 [OK]
Pluto ipsec.secret syntax [OK]
Checking 'ip' command [OK]
Checking 'iptables' command [OK]
Checking 'prelink' command does not interfere with FIPS [OK]
Checking for obsolete ipsec.conf options [OK]
jika sudah mari kita lanjutkan untuk melakukan konfigurasi l2tp nya. edit file /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes
[lns default]
ip range = 10.11.11.2-10.11.11.100
local ip = 10.11.11.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
setelah itu edit file /etc/ppp/options.xl2tpd
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 4.2.2.4
noccp
auth
crtscts
idle 1800
mtu 1450
mru 1450
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
kemudian edit credential username dan password di /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
uservpn * passwordvpn *
setelah itu coba jalankan service xl2tpd nya :
# service xl2tpd start
jangan lupa untuk allow protocol dan port di firewall nya, disini kita menggunakan firewalld di centos 8
# firewall-cmd --permanent --zone=public --add-service=ipsec
# firewall-cmd --permanent --zone=public --add-port={4500,500}/udp
# firewall-cmd --permanent --zone=public --add-protocol={50,51}
# firewall-cmd --permanent --zone=public --add-port=1701/udp
# firewall-cmd --permanent --zone=public --add-masquerade
# firewall-cmd --reload
setelah itu mari kita coba testing menggunakan windows

kemudian edit credential di network connection


kemudian pilih allow these protocol dan mencentang chap dan ms-chap v2
dan kemudian lakukan koneksi ke vpn tersebut.

berikut tampilan jika berhasil connect menggunakan windows.
jangan lupa agar pada waktu reboot service ipsec dan xl2tpd auto start
# systemctl enable ipsec
# systemctl enable xl2tpd