11 September 2009

PF Tabel

Perkenalan

Tabel digunakan untuk memperoleh kelompok alamat IPv4 dan atau IPv6. Membaca kembali tabel lebih cepat dan mengkonsumsi sedikit memori dan waktu prosesor dari daftar. Untuk alasan ini, tabel adalah ideal untuk memperoleh kelompok alamat yang besar atas waktu yang diperoleh kembali 50.000 alamat hanya sedikit lebih dibandingkan untuk mendapatkan 50 alamat. Tabel dapat digunakan di dalam sumber dan tujuan bidang alamat aturan penyaring, penggorok, nat, dan pengalihan tetapi mereka tidak dapat digunakan pengalihan alamat di dalam aturan nat atau di dalam opsi rute aturan penyaring (route-to, reply-to, dup-to). Tabel dibuat salah satu dari dua di dalam /etc/pf.conf atau menggunakan pfctl(8).
Konfigurasi
Di pf.conf, tabel dibuat menggunakan perintah table. atribut berikut yang mungkin ditentukan untuk tiap tabel:

* const - tabel tidak dapat dimasukan ke salahs atu tabel yang dibuat. Ketika atribut ini tidak ditentukan, pfctl(8) memungkinkan digunakan untuk memasukan atau menghapus alamat dari tabel setiap saat, sama ketika berjalan dengan securelevel(7) dua atau lebih besar.
* persist - menyebabkan kernel untuk mengkosongkan tabel di dalam penyimpan (memory) sama ketika tidak ada aturan penghubung untuknya. Tanpa atribut ini, kernel akan otomatis menghapus tabel ketika aturan terakhir merujuknya dihapus.

Contoh:

table { 192.0.2.0/24 }
table const { 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }
table persist

block in on fxp0 from { , } to any
pass in on fxp0 from to any

Alamat juga dapat ditentukan menggunakan pengubah penangkalan (or "not") seperti:Addresses can also be specified using the negation (or "not") modifier such as:

table { 192.0.2.0/24, !192.0.2.5 }

Tabel goodguys sekarang akan mencocokkan semua alamat di dalam jaringan 192.0.2.0/24 kecuali untuk 192.0.2.5.

Catatan nama tabel itu selalu ditutup dengan < >

Tabel juga dapat ditempatkan dari berkas teks mengandung daftar alamat IP dan jaringan:

table persist file "/etc/spammers"

block in on fxp0 from to any

Berkas /etc/spammers akan memuat daftar alamat IP satu perbaris. Baris lain yang diawali dengan # adalah dianggap sebagai komentar dan akan diabaikan.
Memanipulasi dengan pfctl
Tabel dapat dimanipulasi secara langsung dengan menggunakan pfctl(8). sebagai contoh, untuk menambah masukan ke tabel yang dibuat di atas:

# pfctl -t spammers -Tadd 218.70.0.0/16

Ini juga akan membuat tabel jika sudah tidak ada. Untuk daftar alamat dalam tabel:

# pfctl -t spammers -Tshow

Argumen -v dapat juga digunakan dengan -Tshow untuk menampilkan statistik untuk tiap tabel masukan. Untuk menghapus alamat dari tabel:

# pfctl -t spammers -Tdelete 218.70.0.0/16

Untuk informasi lebih lengkap tentang memanipulasi tabel dengan pfctl, silahkan lihat pfctl(8).
Menentukan Alamat
Selain itu untuk menentukan alamat IP, mungkin juga host ditentukan dengan nama host mereka. Ketika nama host ditemukan mengacu dengan sebuah alamat IP, semua hasil alamat IPv4 dan IPv6 dimasukkan ke dalam tabel. Alamat IP juga dapat dimasukkan ke dalam tabel dengan menentukan nama antar muka sah atau kata kunci sendiri pembungkus yang mana semua alamat ditugaskan untuk antar muka yang akan di masukan ke dalam tabel.
Alamat Sebanding
Setiap alamat memandang pada tabel akan kembali sebagian besar hampir sebanding masukan. Hal ini mengijinkan untuk membuat tabel seperti:

table { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }

block in on dc0 all
pass in on dc0 from to any

Sembarang paket yang masuk melalui dc0 akan mempunyai sumber alamat yang sebanding pada tabel :

* 172.16.50.5 - terbatas pada 172.16.0.0/16; paket mencocokkan tabel dan akan dilewatkan
* 172.16.1.25 - terbatas pada !172.16.1.0/24; paket mencocokkan masukan di dalam tabel tetapi antrian itu ditiadakan (menggunakan perubah"!"); paket tidak cocok dengan tabel dan akan ditutup.
* 172.16.1.100 - kecuali cocok 172.16.1.100; paket mencocokkan tabel dan akan diteruskan.
* 10.1.4.55 - tidak cocok dengan tabel dan akan ditutup.