15 Januari 2012

PF Dilema Rules

Saya mempunyai PF rules spt ini di /etc/pf.conf:
porthttp = "80"           # HTTP Port
portsquid = "7080"        # Squid Port
ifint0 = "rl0"            # Ethernet ke LAN
rdr pass on $ifint0 proto tcp from 192.168.0.0/24 to any port $porthttp -> $ipproxy port $portsquid
Rules diatas berguna untuk Redirection (RDR)/Transparent Proxy. Lalu saya mempunyai rules spt ini:
ipwebmodem = "{ 10.0.0.1/32, 10.1.0.1/32 }"
block  in     quick on $ifint0 proto tcp from 192.168.0.0/24 to $ipwebmodem port = 80
Hasil: block rules ke 2 tidak akan bekerja alias tidak akan keblock. Jika rules diatas dituker tentu tidak akan bisa karena Statement Order tidak valid. Cara ini bisa diakali dengan menambahkan Exception (Pengecualian) menggunakan table unproxy pada RDR rules, sehingga rules menjadi:
table  { 0.0.0.0/0, !10.0.0.0/30, !10.1.0.0/30 }
porthttp = "80"              # HTTP Port
portsquid = "7080"           # Squid Port
ifint0 = "rl0"               # Ethernet ke LAN

rdr pass on $ifint0 proto tcp from 192.168.0.0/24 to  port $porthttp -> $ipproxy port $portsquid

ipwebmodem = "{ 10.0.0.1/32, 10.1.0.1/32 }"
block in quick on $ifint0 proto tcp from 192.168.0.0/24 to $ipwebmodem port = 80
Terus terang dengan sistem seperti ini lumayan agak repot juga, jika ingin ngeblock site tertentu harus meng-unproxy dulu site tersebut. Lebih fleksible menggunakan IPFW untuk kepentingan spt ini, saya belum menemukan cara yg simple dengan menggunakan PF.

Tidak ada komentar: