Konfigurasi GRE Tunnel dengan Enskripsi ipsec di OpenBSD

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 0×8d8b5b6b: 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

Leave a Reply