Membuat VPN mempergunakan Openswan
Openswan adalah implementasi protokol IPsec (IP Security) di linux yang mensupport kernel 2.0, 2.2, 2.4 dan 2.6. IPsec menyediakan layanan enkripsi dan otentikasi pada level IP, sehingga IPsec dapat memproteksi semua trafik yang dilewatkan melalui IP.
VPN (Virtual Private Network) mengijinkan 2 jaringan berkomunikasi secara aman melalui jaringan publik. Metode yang dipakai adalah dengan cara menempatkan security gateway di setiap jaringan yg akan berkomunikasi melalui jaringan publik. Gateway ini bertugas untuk mengenkrip paket yang keluar ke jaringan publik dan mendekrip paket yang masuk dari jaringan publik, sehingga menciptakan tunel yang aman.
Nah, sekarang kita coba membuat VPN dengan memanfaatkan openswan.
Berikut ini topologi jaringan yang akan kita buat :
172.19.3.0/24 —– 172.19.3.120 | 202.162.208.102 —– 202.162.208.103 | 172.20.3.120 —– 172.20.3.0/24
Jaringan 172.19.3.0/24 kita misalkan sbg jaringan private yang akan kita koneksikan ke jaringan private lainnya (172.20.3.0/24) melalui vpn yang akan kita bentuk antara 202.162.208.102 dan 202.162.208.103
Untuk mencoba konfigurasi ini, kita butuh 4 buah PC, yaitu 2 pc sebagai client dan 2 pc sebagai gateway.
Sekarang kita persiapkan dulu software2 yang dibutuhkan :
– kernel-module-openswan (ambil paket sesuai dengan versi kernel yang anda punya)
– openswan-utils
Instal kedua paket tersebut, kemudian edit file /etc/ipsec.conf
Isi file ipsec.conf di gateway #1
——
version 2.0
config setup
interfaces="ipsec0=eth0"
klipsdebug=none
plutodebug=none
conn tunnel
left=202.162.208.102
leftsubnet=172.19.3.0/24
leftnexthop=%direct
right=202.162.208.103
rightsubnet=172.20.3.0/24
rightnexthop=%direct
keyingtries=0
auto=add
include /etc/ipsec.d/examples/no_oe.conf
——-
Isi file ipsec.conf di gateway #2
——-
version 2.0
config setup
interfaces="ipsec0=eth1"
klipsdebug=none
plutodebug=none
conn tunnel
left=202.162.208.103
leftsubnet=172.20.3.0/24
leftnexthop=%direct
right=202.162.208.102
rightsubnet=172.19.3.0/24
rightnexthop=%direct
keyingtries=0
auto=add
include /etc/ipsec.d/examples/no_oe.conf
——–
Pastikan dukungan ipforwarding di kernel telah dihidupkan:
[root@vpn-gw root]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Kalau masih bernilai ‘0’, aktifkan dg cara menjalankan ‘sysctl -w net.ipv4.ip_forward=1
‘
Dan matikan seluruh filtering :
[root@vpn-gw root]# sysctl -a |grep filter
net.ipv4.conf.ipsec0.arp_filter = 0
net.ipv4.conf.ipsec0.rp_filter = 0
net.ipv4.conf.eth1.arp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.rp_filter = 0
Kemudian kita buat kunci untuk enkripsi oportunis dengan cara menjalankan perintah :
# dijalankan di gateway #1
ipsec mailkey --me dheche@brawijaya.ac.id --reverse 202.162.208.102
Hasilnya bisa dilihat di /root/OE_mail_202.162.208.102
# dijalankan di gateway #2
ipsec mailkey --me dheche@brawijaya.ac.id --reverse 202.162.208.103
Hasilnya bisa dilihat di /root/OE_mail_202.162.208.103
Sesuaikan IN TXT yg ada di DNS Server dengan nilai yang ada di file tersebut.
Periksa dengan utilitas ‘dig‘
Buat secret key unt masing2 gateway:
ipsec newhostkey --output /etc/ipsec.secrets --hostname vpg-gw.bits.or.id
Kemudian jalankan ipsec:
/etc/init.d/ipsec start
Periksa dengan perintah:
ipsec verify
[root@vpn-gw root]# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan 2.1.5 (klips)
Checking for IPsec support in kernel [OK]
Checking for RSA private key (/etc/ipsec.secrets) [OK]
Checking that pluto is running [OK]
Two or more interfaces found, checking IP forwarding [OK]
Checking NAT and MASQUERADEing [OK]
Checking for 'ip' command [OK]
Checking for 'iptables' command [OK]
Opportunistic Encryption DNS checks:
Looking for TXT in forward dns zone: vpn-gw.psb-online.or.id [OK]
Does the machine have at least one non-private address? [OK]
Looking for TXT in reverse dns zone: 102.208.162.202.in-addr.arpa. [OK]
[root@vpn-gw root]#
Periksa dg perintah ‘ipsec whack –status‘
[root@vpn-gw root]# ipsec whack --status
000 interface ipsec0/eth0 202.162.208.102
000 %myid = (none)
000 debug none
000
000 "tunnel": 172.19.3.0/24===202.162.208.102[S=C]...202.162.208.103[S=C]===172.20.3.0/24; erouted; eroute owner: #2
000 "tunnel": ike_life: 3600s; ipsec_life: 28800s; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0
000 "tunnel": policy: RSASIG+ENCRYPT+TUNNEL+PFS+lKOD+rKOD; prio: 24,24; interface: eth0;
000 "tunnel": newest ISAKMP SA: #3; newest IPsec SA: #2;
000
000 #3: "tunnel" STATE_MAIN_R3 (sent MR3, ISAKMP SA established); EVENT_SA_REPLACE in 2264s; newest ISAKMP
000 #2: "tunnel" STATE_QUICK_R2 (IPsec SA established); EVENT_SA_REPLACE in 24419s; newest IPSEC; eroute owner
000 #2: "tunnel" used 2496s ago; esp.7f8c910e@202.162.208.103 esp.286ed02@202.162.208.102 tun.1002@202.162.208.103 tun.1001@202.162.208.102
000
Point yg penting adalah di bagian ini :
000 “tunnel”: 172.19.3.0/24===202.162.208.102[S=C]…202.162.208.103[S=C]===172.20.3.0/24; erouted; eroute owner: #2
Kalau masih terlihat ‘unrouted‘, jalankan ‘ipsec auto –up tunnel‘
Dan pastikan terlihat kalimat ‘ISAKMP SA established‘ dan ‘IPsec SA established‘.
Periksa di /var/log/messages dan /var/log/secure unt membantu proses debugging.
Kemudian kita cek koneksi vpn yg telah kita bentuk :
dijalankan dari gateway #1:
ping 172.20.3.121 -I eth1
[root@vpn-gw root]# ping 172.20.3.121 -I eth1
PING 172.20.3.121 (172.20.3.121) from 172.19.3.120 eth1: 56(84) bytes of data.
64 bytes from 172.20.3.121: icmp_seq=1 ttl=64 time=0.471 ms
64 bytes from 172.20.3.121: icmp_seq=2 ttl=64 time=0.139 ms
64 bytes from 172.20.3.121: icmp_seq=3 ttl=64 time=0.136 ms
SIPPPP 🙂
silahkan dicoba dari client #1 dan client #2, seharusnya sih bisa juga 🙂
PS.
jangan lupa, sesuaikan konfigurasi gateway di masing2 client.
Leave a Reply