Transparent Squid with PF
от ILuxWiki
Най-сетне се реших да направя една проба как се да използвам PF за да си направя transparent proxy. Вариантите за Линукс с iptables ги има под път и над път :). В този пример трафика на всички клиенти трябва да преминава през самата машина на която работи squid-а. Разбира се може да се направи пренасочване пренасочване от основния gateway router всичко към порт 80 да отива към отделна машина със squid-cache, но това обяснение си остава за друг път, за сега нямам нужда от такъв вариант.
Ето съдържадението на squid.conf:
http_port 127.0.0.1:3128 http_access deny to_localhost acl our_networks src 10.0.0.0/8 http_access allow our_networks visible_hostname insomnia.benzedrine.cx httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
Необходими редове в pf.conf
# ip-тата на машината
table <me> { 195.138.138.25, 195.138.138.198, 10.50.1.2, 10.10.10.40 }
scrub in all
no rdr on lo0 from any to any
no rdr from any to <me>
int_if="em0"
ext_if="rl0"
rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
pass in on $int_if inet proto tcp from any to 127.0.0.1 port 3128 keep state
pass out on $ext_if inet proto tcp from any to any port www keep state
Примерът е взет от http://www.benzedrine.cx/transquid.html, които е за OPENBSD, вариантът при мене работи за FreeBSD 6.0 без промяна в правата на /dev/pf.

