Страница 1 из 1

Шэйпинг PF+ALTQ и SQID ntlm

Добавлено: 2011-03-23 13:01:00
lDeNl
На данный момент PF шэйпит все нормально, но не трогая трафик проходящий через squid :( Все это работает в домене по этому прозрачный squid не работает.
Можно конечно пулы настроить на сквиде, но так будет несколько минусов в последующей работе...

Можно ли как то шэйпить http трафик проходящий через сквид с помощью PF?

pf.conf

Код: Выделить всё

ext_if="de1"
int_if="de0"
lo="l0"
vpn_if="tun0"
ext_ip_1 = "82.*.*.*"
lan_work = "192.168.10.0/24".
vpn_lan = "198.168.2.0/24"

table <all_user_ips> { 192.168.10.0/24 }
table <sp_user_ips> { 192.168.10.113 }
table <admin_ips> { 192.168.10.11 }
admin_ip="{ 192.168.10.11  }"

tcp_udp_out = "53"
tcp_out = "22, 25, 110, 1723"
tcp_services = "{ 113, 22 }"
icmp_types = "echoreq"

# списки приватных сетей, для блокировки их на внешнем интерфейсе
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

#Поведение по умолчанию для правил фильтра, когда срабатывает правило block
# в нашем случае для отброшенных пакетов TCP отсылается TCP RST, для прочих
#ICMP Unreacheble
set block-policy drop
#Нормализация входящего трафика
scrub in all

#ALTQ
#download
altq on $int_if cbq bandwidth 100Mb queue { inet_in, default_in }
queue inet_in bandwidth 10Mb { all_user_in, sp_user_in, admin_in }
queue all_user_in bandwidth 10% cbq(red, borrow)
queue sp_user_in bandwidth 30% cbq(red, borrow)
queue admin_in bandwidth 50% cbq(red)
queue default_in bandwidth 10% cbq(default)
#upload
altq on $ext_if cbq bandwidth 100Mb queue { inet_out, default_out }
queue inet_out bandwidth 10Mb { all_user_out, sp_user_out, admin_out }
queue all_user_out bandwidth 10% cbq(red, borrow)
queue sp_user_out bandwidth 30% cbq(red, borrow)
queue admin_out bandwidth 50% cbq(red)
queue default_out bandwidth 10% cbq(default)

#NAT
nat on $ext_if from $lan_work to !$lan_work -> $ext_ip_1

#Проброска портов в локалку на comp_rdr_lan
#rdr pass on $ext_if inet proto { tcp, udp } from any to ($ext_if) \
#port { $comp_rdr_port } -> $comp_rdr_lan

# по умолчанию запрещаем все
block all
#разрешаем все через локальный интерфейс
pass quick on lo0 all

#Блокируем приватные сети на внешнем интерфейсе
block drop in  quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets

#Разрешаем доступ к нашему серваку снаружи к определенным портам
pass in on $ext_if inet proto tcp from any to $ext_if port $tcp_services \
flags S/SA keep state

#Натим пакеты из локалки
#nat on $ext_if from $lan_work to !$lan_work -> $ext_ip_1

#block in quick proto tcp from !<admin> to port { 21, 22 } #закрываем ftp и ssh
pass in on $int_if proto tcp from $admin_ip to $int_if port ssh

#Разрешаем входящие icmp ping
pass in inet proto icmp all icmp-type $icmp_types keep state

#Разрешаем все через туннель
pass on tun0 all
#pass on tun1 all

#Разрешить из локалки доступ к внутреннему интерфейсу и к локалке работы
pass in quick on $int_if from $int_if:network to { $int_if, $lan_work } \
keep state

#Разрешить из локалки tcp и udp на tcp_udp_out
pass in quick on $int_if inet proto { tcp, udp } from $int_if:network to any \
port { $tcp_udp_out } keep state
#Разрешить из локалки tcp на tcp_out
pass in quick on $int_if inet proto tcp from $int_if:network to any port \
{ $tcp_out } keep state
#Разрешить из локалки gre
pass in quick on $int_if inet proto gre from $int_if:network to any keep state
#Разрешить в локалку все через внутренний интерфейс
pass out on $int_if from any to $int_if:network keep state
#Разрешить наружу tcp через внешний интерфейс
pass out on $ext_if proto tcp all modulate state flags S/SA
#Разрешить наружу udp, icmp, gre через внешний интерфейс
pass out on $ext_if proto { udp, icmp, gre } all keep state

#Проброс очередей 
pass in on $int_if from <all_user_ips> to !$lan_work queue all_user_out no state
pass in on $int_if from <sp_user_ips> to !$lan_work queue sp_user_out no state
pass in on $int_if from <admin_ips> to !$lan_work queue admin_out no state
pass out on $int_if from !$lan_work to <all_user_ips> queue all_user_in no state
pass out on $int_if from !$lan_work to <sp_user_ips> queue sp_user_in no state
pass out on $int_if from !$lan_work to <admin_ips> queue admin_in no state 

Re: Шэйпинг PF+ALTQ и SQID ntlm

Добавлено: 2011-03-26 17:47:03
vadim64
шейпте трафик в локальную сеть по порту сквида