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:
- Macros
- Tables
- Options
- Scrub
- Queueing
- Translation
- Filter Rules
- 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. - Tables
Digunakan untuk mengelompokkan alamat-alamat berdasarkan konvensi tertentu, sesuai dengan kebutuhan, desain, dan struktur yang diinginkan. - Options
Digunakan untuk kebutuhan mengontrol operasional PF. Misalnya, dimana tempat meletakkan log, atau sedalam apa PF akan di- debug (debugging level), dll. - Scrub
Digunakan untuk menormalisasikan semua paket yang melintasi router sehingga tidak jadi ambiguitas dalam interpretasi. - Queueing
Digunakan untuk menciptakan "ruang tunggu" untuk paket yang sedang antri untuk diproses. - 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. - 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.
##--------------------> 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