Теперь о сети локальная сеть(192.168.0.0.24),1- канал стоит аппаратный роутер 192.168.3.1 ,2- канал ADSL модем 192.168.2.1.(прилагаться картинка).Пользователи попадают на шлюз(squid) через настойку proxy server в браузере,в настоящий момент у них прописан основным шлюзом другой шлюз,так как этот пока тестовый! В мануале по PF даны пару примеров реализации двух каналов через route to и round-robin.
Cделал оттуда по примеру. В итоге получается инет идет только по одному default route, и в упор не хочет видеть второй канал.Самое интересное правило:
Код: Выделить всё
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
proto tcp from self to any port $client_out keep state
Полный pf.conf
Код: Выделить всё
int_if="re0" # local
ext_if1="fxp0" # inet
ext_if2="vr0" # ADSL
ext_gw1= "192.168.3.1"
ext_gw2= "192.168.2.1"
int_net="{192.168.0.0/24}" # local
non_route_nets_inet="{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, \
169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, 240.0.0.0/4 }"
client_out = "{ ftp-data, ftp, ssh, domain, pop3, auth, nntp, \
https, 446, cvspserver,80 , cvsup, 8080,110 ,60177,443,53 }"
allowed_icmp_types="{ echoreq, unreach }"
table <BRUTEFORCERS> persist
set timeout { frag 10, tcp.established 3600 }
set block-policy drop
set skip on lo0
set skip on $int_if
scrub in all
#---------Order-------------------------------------------
block all
antispoof log quick for { lo0, $int_if, $ext_if1 }
block drop in log quick on $ext_if1 from $non_route_nets_inet to any
block drop log quick from <BRUTEFORCERS>
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
proto tcp from self to any port $client_out keep state
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
proto {udp,icmp} from self to any keep state
#---------SHH--------------------------------------------------
pass in on $int_if proto tcp from $int_net to $int_if port ssh queue ( qssh, qack ) synproxy state ( max-src-conn-rate 1/60,overload <BRUTEFORCERS> flush global )
pass in on $ext_if1 proto tcp from any to $ext_if1 port ssh queue ( qssh, qack ) synproxy state ( max-src-conn-rate 1/60,overload <BRUTEFORCERS> flush global )
#---------------------------------------------------------------
pass out on $ext_if1 proto tcp from any to any port $client_out flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any port $client_out flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state