Tulisan kali ini akan menjelaskan sedikit tentangcara mengkonfigurasi gre tunnel dengan enskripsi ipsec. System yang saya gunakan OpenBSD 4.1.
Untuk memulai,untuk menghindari trobleshooting saya sarankan gre0 dan enc0 didisable di pf nya sampai proses enskripsi tunnel berjalan. masukan dua baris berikut ke dalam pf.conf
set skip on enc0
set skip on gre0
Dalam tulisan kali ini saya memakai contoh 2 host yang berjauhan, host X dan host Y.
Host X
public ip 202.149.90.1
private interface 192.168.1.0/24
Host Y
public interface 202.169.80.12
private interface 192.168.50.0/24
Pertama, aktifkan gre di kedua host X & host Y
# sysctl -w net.inet.gre.allow=1
Supaya bisa permanent jalan tiap booting, tambahkan net.inet.gre.allow=1 ke /etc/sysctl.conf
Sekarang buat gre tunnel supaya masing-masing private network bisa saling berkomunikasi
Host X
Lakukan :
# ifconfig gre0 create
# ifconfig gre0 172.17.1.1 172.17.1.2 netmask 0xffffffff link0 up
# ifconfig gre0 tunnel 202.149.90.1 202.169.80.12
# route add 192.168.50.0/24 172.17.1.2
Mungkin anda akan bertanya darimana alokasi ip 172.17.1.1 dan 172.17.1.2 ? ip ini diambil dari RFC1918 untuk point to point gre tunnel.
Host Y
# ifconfig gre0 create
# ifconfig gre0 172.17.1.2 172.17.1.1 netmask 0xffffffff link0 up
# ifconfig gre0 tunnel 202.169.80.12 202.149.90.1
# route add 192.168.1.0/24 172.17.1.1
Apabila sudah yakin network 192.168.1.0/24 dan 192.168.50.0/24 bisa berkomunikasi sekarang buat file /etc/hostname.gre0
Host X /etc/hostname.gre0
172.17.1.1 172.17.1.2 netmask 0xffffffff link0 up
tunnel 202.149.90.1 202.169.80.12
!route add 192.168.50.0/24 172.17.1.2
Host Y /etc/hostname.gre0
172.17.1.2 172.17.1.1 netmask 0xffffffff link0 up
tunnel 202.169.80.12 202.149.90.1
!route add 192.168.1.0/24 172.17.1.1
Sampai langkah di atas gre tunnel sudah aktif, jangan lanjutkan untuk mengaktifkan ipsec sebelum gre tunnel nya berfungsi, apabila ipsec diaktifkan sedangkan gre tunnel belum berjalan hanya akan memperumit trobleshooting
Sekarang aktifkan ipsec di Host X & Host Y net.inet.esp.enable
# sysctl -w net.inet.esp.enable=1
Supaya permanent tiap booting langsung aktif, tambahkan net.inet.esp.enable=1 ke /etc/sysctl.conf
Saya menggunakan publick key authentication
Untuk publick key enscryption buat file /etc/isakmpd/local.pub. jika tidak ada, cek /etc/isakmpd/private/local.key ada atau tidak?, jika keduanya tidak ada buat dengan perintah berikut :
# /usr/sbin/openssl genrsa -out /etc/isakmpd/private/local.key 1024
# chmod 600 /etc/isakmpd/private/local.key
# openssl rsa -out /etc/isakmpd/local.pub \
-in /etc/isakmpd/private/local.key -pubout
Jika /etc/isakmpd/private/local.key masih ada tapi /etc/isakmpd/local.pub tidak ada, bisa digenerate dengan perintah berikut
# openssl rsa -out /etc/isakmpd/local.pub \
-in /etc/isakmpd/private/local.key -pubout
Sekarang kopi /etc/isakmpd/local.pub punya nya Host X ke Host Y dengan nama file di Host Y/etc/isakmpd/pubkeys/ipv4/202.149.90.1
Catatan: 202.149.90.1 adalah file, bukan direktori.
Sebaliknya, kopi juga file /etc/isakmpd/local.pub punya Host Y dan kopikan menjadi /etc/isakmpd/pubkeys/ipv4/202.169.80.12 di Host X
Ok sudah dikopi, sekarang konfigurasi ipsec, di Host X /etc/ipsec.conf isinya adalah berikut
ike esp transport from 202.149.90.1 to 202.169.80.12
Dan Host Y/etc/ipsec.conf isinya adalah berikut
ike esp transport from 202.169.80.12 to 202.149.90.1
Note: Pilih menggunakan transport, karena ipsec tidak melakukan tunneling, gre tunnel lah yang melakukan hal tersebut, ipsec hanya melakukan enskripsi tunnel di antara 2 host tersebut.
Sekarang jalankan isakmpd dan load rule ipsec
# isakmpd -K
# ipsecctl -f /etc/ipsec.conf
Sekarang test sudah berhasil atau belum, cuba lakukan komunikasi dari host di network 192.168.1.0/24 dengan host di network 192.168.50.0/24 saat koneksi masih terjadi lakukan :
# tcpdump -ni enc0
tcpdump: WARNING: enc0: no IPv4 address assigned
tcpdump: listening on enc0, link-type ENC
20:07:03.036687 (authentic,confidential): SPI 0x8d8b5b6b: 192.168.50.120 > 192.168.1.10: icmp: echo request (gre encap)
20:07:03.075990 (authentic,confidential): SPI 0xaf01c27a: 192.168.1.10 > 192.168.50.120: icmp: echo reply (gre encap)
Berhasil! hasil dari tcpdump menunjukan terjadi enskapsulasi paket gre dan proses enskripsi
Sekarang supaya permanent tiap booting jalan, tambahkan option berikut ke /etc/rc.conf.local
isakmpd_flags="-K"
ipsec=YES
Sekarang ipsec & gre tunnel sudah berjalan, saya sarankan hapus set skip rule yang ditambahkan di pf.conf dan modifikasi pf.conf sesuai kebutuhan anda.
Thx to Jeff
Original Post : www [dot] bsdsupport [dot] org



