Thursday, May 08, 2008

OBSD Router part 1

Seminggu yg lalu aq dapet assignment buat bikin router berbasis OpenBSD. Alasannya? Karena menurut situs resminya (www.openbsd.org), nih OS bener-bener mengutamakan keamanan diatas segalanya. Konsekuensinya ada banyak pekerjaan yang harus dilakukan untuk membuat OS ini berjalan sesuai dengan keinginan kita.

Selain itu nie OS lumayan ringan, karena memang tidak banyak fitur yang disertakan dalam source instalasi standarnya.

Setelah muter-muter di sekitar materi tentang pembuatan router berbasis OpenBSD, ada beberapa pilihan yang tersedia. Dua aplikasi terpopuler diantaranya adalah menggunakan PF (packet filtering) dan Quagga. Aq memilih menggunakan PF karena memang merupakan sudah teruji menurut situs resminya, bahkan hasil benchmarking yg pernah dilakukan oleh pembuatnya dapat mengalahkan kemampuan PF yang ada di kernel sodaranya, si Linux.

Persiapan awal adalah mendownload source .iso OpenBSD 4.2, burning .iso tersebut, lalu instalasi deh (tahap-tahap instalasi yang lumayan bagus bisa dilihat di situs resminya si OBSD.

Langkah berikutnya setelah instalasi adalah meng-konfigurasi OpenBSD menjadi sebuah Router melalui menggunakan kemampuan "packet filtering"-nya (PF).

Setelah login, edit file : /etc/rc.conf.local kemudian, tambahkan baris berikut pada file tersebut :

pf=YES

Setelah itu, restart server.

Setelah itu, login, edit file /etc/pf.conf . Routing akan terjadi berdasarkan isi file ini. Jadi keberhasilan dari routing akan ditentukan pada bagaimana konfigurasi tersebut terbentuk. berikut ini adalah contoh sederhana sebuah routing pada pf.conf

Secara garis besar, PF memiliki 7 (tujuh) bagian utama, yaitu:
  1. Macros
  2. Tables
  3. Options
  4. Scrub
  5. Queueing
  6. Translation
  7. Filter Rules
Berikut ini penjelasan dari masing masing bagian :
  1. Macros
    Merupakan variabel yang diberikan oleh user, misalnya variabel nama interface yang akan digunakan, nomor port, nomor IP, dll. penggunaan macros sebenarnya adalah untuk mengurangi kompleksitas konfigurasi, sehingga perubahan hanya perlu dilakukan satu kali saat sebuah variabel digunakan berkali-kali dalam konfigurasi.
  2. Tables
    Digunakan untuk mengelompokkan alamat-alamat berdasarkan konvensi tertentu, sesuai dengan kebutuhan, desain, dan struktur yang diinginkan.
  3. Options
    Digunakan untuk kebutuhan mengontrol operasional PF. Misalnya, dimana tempat meletakkan log, atau sedalam apa PF akan di- debug (debugging level), dll.
  4. Scrub
    Digunakan untuk menormalisasikan semua paket yang melintasi router sehingga tidak jadi ambiguitas dalam interpretasi.
  5. Queueing
    Digunakan untuk menciptakan "ruang tunggu" untuk paket yang sedang antri untuk diproses.
  6. Translation
    Digunakan untuk mentranslasikan alamat IP dari dalam keluar dan dari luar ke dalam sehingga host yang ada di-luar, tidak perlu mengetahui alamat yang ada didalam. Hal ini biasa disebut NAT.
  7. Filter Rules
    Nah.. bagian inilah yang berfungsi me-routing paket paket data sesuai dengan aturan yang di-inginkan, apakah sebuah paket akan di-passing atau di-blocking.
Berikut ini merupakan sebuah contoh pf.conf yang sederhana, berikut penjelasannya

##--------------------> di-sadur dari www.thedeepsky.com
## Macros
SYN_ONLY="S/FSRA"
EXT_NIC="fxp0"
INT_NIC="fxp1"

# Your Internet IP goes in the EXT_IP variable
EXT_IP="11.22.33.44"

# Your private network IP goes in the INT_IP variable
# if you have two NICs on the machine
INT_IP="192.168.1.1"

## TABLES


## GLOBAL OPTIONS


## TRAFFIC NORMALIZATION


## QUEUEING RULES


## TRANSLATION RULES (NAT)


## FILTER RULES

# Block everything (inbound AND outbound on ALL interfaces) by default (catch-all)
block all

# Default TCP policy
block return-rst in log on $EXT_NIC proto TCP all
  pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 22 flags $SYN_ONLY keep state
  pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 113 flags $SYN_ONLY keep state

# Default UDP policy
block in log on $EXT_NIC proto udp all
  # It's rare to be hosting a service that requires UDP (unless you are hosting
  # a dns server for example), so there typically won't be any entries here.

# Default ICMP policy
block in log on $EXT_NIC proto icmp all
  pass in log quick on $EXT_NIC proto icmp from any to $EXT_IP echoreq keep state

block out log on $EXT_NIC all
  pass out log quick on $EXT_NIC from $EXT_IP to any keep state

# Allow the local interface to talk unrestricted
pass in quick on lo0 all
pass out quick on lo0 all

Monday, September 17, 2007

VPN atau Tunneling

Tanggal 15 september kemaren, saya diminta untuk meng-assist rekan saya dari aussie (melbouerne). kepentingannya adalah untuk membuat sebuah koneksi VPN dari bandung ke aussie. Logikanya sangat mudah, tetapi pada prakteknya masih merupakan sebuah masalah jika kita tidak memahami secara detail apa yang harus dilakukan.

Sebelum mulai membuat koneksi ke server VPN, ada beberapa informasi yang perlu anda siapkan sebelumnya, yaitu:
  1. Nama perusahaan, akan dijadikan nama koneksi anda, tetapi ini tidak terlalu mengikat.
  2. Alamat IP server VPN.
  3. Username dan PAssword koneksi anda.
  4. Alamat IP yang di assign untuk anda setelah terkoneksi.[jika auto assign, maka anda tidak perlu mengetahuinya].

Berikut ini beberapa step dasar membangun koneksi ke sebuah server VPN melalui mesin berplatform Ms.Windows XP/2k3.
  1. Start > Control Panel > Network Connections > New Connection Wizard > Next > pilih Connect to the network at my workplace > Next > pilih Vitual Private Network Connection > Next > [masukkan nama perusahaan -- apa saja] > Next > pilih Do not dial the initial connection [jika sudah ada koneksi lainnya] > Next > [masukkan alamat IP server VPN yang akan anda hubungi, atau bisa juga menggunakan nama server yg telah terdaftar di DNS] > Next > Finish

  2. Untuk mencegah semua traffic internet dilewatkan ke VPN, anda harus membuat sebuah static routing yang mana fungsinya untuk mengalihkan hanya semua request yang menuju ke alamat IP tunnel akan dilewatkan ke interface virtual yang telah di assign kepada anda. Dengan kata lain, hal ini untuk mencegah saat anda mengaktifkan koneksi ini, anda menjadi tidak bisa berselancar lagi di internet.


    Tetapi hal ini hanya berlaku jika interface metric koneksi tersebut lebih tinggi kedudukannya terhadap interface koneksi LAN - internet anda. Untuk menguji ini, anda dapat menjalankan perintah berikut melalui fasilitas command-prompt:

    c:\netstat -nr

  3. Tetapi masih ada jalan lain yang lebih mudah untuk mengatasi kendala tersebut, yaitu dengan cara:

    Klik kanan pada ikon koneksi VPN yang anda buat tadi kemudian klik Properties dari tab Networking, pilih Internet Protocol (TCP/IP), kemudian klik Properties dari tab General, klik Advance dari tab General, uncheck pilihan Use default gateway on remote network.

    Setelah semuanya selesai dilakukan, seharusnya koneksi anda sudah dapat digunakan. Kalau belum bisa, cobalah tanyakan kepada administrator anda... :p~

Thursday, April 26, 2007

A Review From The God

Beberapa hari ini aku banyak menerima pencerahan dalam hidupku... Tentang ketulusan hati, tentang menerima jawaban Tuhan, tentang melihat apa yang Tuhan ingin aku lihat,... dan banyak lagi yang lain...

Tentang ketulusan hati:
Selasa siang kemaren, aku membuat janji temu dengan salah satu institusi pendidikan di daerah Bandung. Aku menemui client-ku tersebut bersama seorang penghubung yang notabene seorang yang sudah berpengalaman, seorang business-man, dan pastinya seorang yang lebih tua dari aku kira kira sekitar 40 tahunan umurnya. Untuk menuju kesana, kami mengendarai motor masing-masing.

Ditengah perjalanan, kami disergap hujan... karena aku tidak membawa jas hujan, jadinya kami memutuskan untuk berhenti sejenak menunggu hujan reda, padahal penghubungku ini membawa jas hujan, tapi dia ikut menemaniku berteduh. Setelah hujan mulai berhenti, dia bergegas ke arah motornya, mengambil kain lap, lalu kulihat dia mulai mengeringkan tempat jok motornya. Melihat hal itu, kuputuskan untuk bersiap-siap untuk berangkat... tapi yang bikin aku terkejut saat kulihat dia mulai mengeringkan jok motorku juga... jadi serba-salah... masa seorang senior membersihkan tempat duduk juniornya...?!

Aku teringat tentang kisah Yesus membasuh kaki para murid, sesaat sebelum mereka melakukan perjamuan... pesan moral yang diberikan sangat dalam... lebih baik melayani dari pada dilayani... lebih baik memberi dari pada diberi...

Tentang menerima jawaban Tuhan:

Banyak hal yang sering membuatku sulit untuk menunggu jawaban dari Tuhan... sifat tidak sabar sudah merupakan sifat dasar manusia... Hari ini aku ikut persekutuan doa di GII Hok Im Tong Dago. Pesan firman Tuhan yang diberikan oleh pak pendeta Yahya, terambil dari Yesaya 50:4-...

Ada sebuah pesan yang sangat penting dalam hidup ini untuk menerima jawaban dari Tuhan, yaitu: Tidak selalu jawaban Tuhan hanya "Ya" atau "Tidak", tapi terkadang kita harus mendengarkan dia berkata "Nanti"... Kita harus menyadari sebuah realita bahwa mengikuti firman Tuhan, tidak ada jaminan terbebas dari problematika kehidupan (hidup bebas masalah).

Terkadang kita membuat keputusan yang sangat mementingkan diri sendiri (selfis) dengan dalih adalah yang terbaik... padahal poin terpenting dari isi keputusan tersebut hanya merupakan sebuah usaha membebaskan diri dari masalah... tapi bukankah itu merupakan sebuah insting bawaan dari setiap manusia... itu sih manusiawi... tapi bagaimana jika itu berarti mengorbankan perasaan orang lain!? Berdoalah... Akupun sering menghadapi keadaan ini... Sebenernya banyak yang mau ditulis... tapi dah ngantuk banget nih... cape banget hari ini...

Oya, hari ini aku sudah menyelesaikan pekerjaanku di PT. Balindo. Hari ini juga aku berkenalan dengan beberapa orang baru. Yang pertama, Mr. Wahyu, seorang marketing dari sebuah Master Dealer beberapa produk IT di Indonesia... trus yang kedua, seorang pengusaha dari Jakarta beserta keluarganya, kalo gak salah sang istri seorang pramugari garuda...

Kali ini aku mo nyanyiin sebuah lagu yang paling kufavoritkan dari dulu banget nih... judulnya : "...GOD IS GOOD..." yang nyanyiin kang "Don Moen"

God is good all the time
He put a song of praise in this heart of mine
God is good all the time
Through the darkest night, His light will shine
God is good, God is good all the time

If you're walking through the valley
And there are shadows all around
Do not fear, He will guide you
He will keep you safe and sound
'Cause He's promised to never leave you
Nor forsake you and His Word is true

God is good all the time
He put a song of praise in this heart of mine
God is good all the time
Through the darkest night, His light will shine
God is good, God is good all the time

We were sinners - so unworthy
Still for us He chose to die
Filled us with His Holy Spirit
Now we can stand and testify
That His love is everlasting
And His mercies - they will never end

God is good all the time
He put a song of praise in this heart of mine
God is good all the time
Through the darkest night, His light will shine
God is good, God is good all the time

Wednesday, April 18, 2007

How To Setup Speedy Connection

Beberapa minggu yang lalu, asrama kami sepakat untuk memasang koneksi internet ADSL punya Telkom (Speedy).

Berhubung masih pingin tau performance koneksi ini, kami memutuskan untuk menggunakan paket personal yang diberi kuota data sampai dengan 1 GB per bulan.

Setup paket personal ini di-bandrol seharga Rp.350.000,- yang isinya 1 buah modem ADSL2 Linksys AM300 + wiring dari roset ke splitter dan instalasi/setup modem.

Beberapa bagian perlu disetting pada Modem tersebut adalah sebagai berikut.
Jika, modem diset agar tetap terkoneksi ke internet dan dapat membagikan koneksi internet (ke setiap komputer yang terkoneksi dengan jaringan tersebut -- lihat gambar 1) secara langsung tanpa perlu otorisasi:

1. Encapsulation > RFC2516 PPPoE
2. Virtual Circuit ID > 8 VPI dan 81 VCI
3. Multiplexing > LLC
4. Username > (usrname_anda@telkom.net)contoh: 131169100302@telkom.net
5. Password > (password anda)contoh: mau tau aja sih..hehehe...
6. Yang lainnya, biarkan dalam keadaan default setting.

Berikut ini adalah wiring diagram yang digunakan:


Gambar 1. Wiring Diagram Design.


Setting diatas masih sangat mendasar jika hendak mengikuti desain seperti pada gambar 1. Untuk lebih jelasnya, boleh nanya langsung lewat e-mail koq...hehehe... no hidden charge tentunya...

Nah.. gimana kalau chargingnya pake yang paket time-based (kalo speedy ada yang 50jam sebulan)? wah... sangat tidak disarankan untuk menggunakan konfigurasi diatas... Untuk pembahasannya ntar pada Post berikutnya aja deh...