Presumindo que já temos nossos clientes navegando na internet através no MikroTik, que o link já esteja mascarado e que os serviços de DNS estejam configurados, bem como suas rotas.
Primeiro escolha uma porta livre e dê um nome a ela sugestivo. (Ex. Cache, pfSense, no nosso caso ether4-proxy)
1 - Configure o endereço para a interface nomeada - ether4-proxy que é onde meu proxy está ligado)
/ip address add address=172.16.0.1/30 comment=CACHE disabled=no interface=ether4-proxy network=172.16.0.0
2 - Mascare a rede do pfSense para que ele possa ter acesso a internet. No nosso caso a ether1-internet-west é onde está meu link de internet, se for conexão PPPoE coloque sua conexão PPPoE)
/ip firewall nat add action=masquerade chain=srcnat disabled=no out-interface=ether1-internet-west src-address=172.16.0.0/30
3 - Criaremos um lista em Address Lists com o endereço do proxy pois vamos usá-la na regra Mangle para que nosso tráfego não entre em loop quando for redireicionado.
/ip firewall address-list add address=172.16.0.2 comment=Proxy disabled=no list=sem_proxy
4 - Criaremos um rota estática para o nosso endereço do proxy 172.16.0.2, marcando essa rota, de forma que iremos identificá-la na regra Mangle a frente. O nome da marcação pode ser qualquer um. Escolhi route_to_proxy.
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=172.16.0.2 routing-mark=route_to_proxy scope=30 target-scope=10
5 - Faremos o redirecionamento da porta 80 para rota estática que configuramos excluindo a própria interface do proxy e seu endereço que está em Address Lists, para evitar um loop de rede. A exclusão é sinalizada com a ! na frente da caixa.
src-address é a rede que você deseja redirecionar, no caso seus clientes.
5.1
/ip firewall mangle add action=mark-routing chain=prerouting comment="REDIRECT PPPoE" disabled=no dst-address-list=!sem_proxy dst-port=80 fragment=no hotspot="" in-interface=!ether4-proxy new-routing-mark=route_to_proxy passthrough=no protocol=tcp src-address=10.2.0.0/24
No caso de HOTSPOT observe que para redirecionar o tráfego, deve se marcar a opção auth conforme item 5.2
5.2
/ip firewall mangle add action=mark-routing chain=prerouting comment="REDIRECT HOTSPOT AUTENTICADOS" disabled=no dst-address-list=!sem_proxy dst-port=80 fragment=no hotspot=auth in-interface=!ether4-proxy new-routing-mark=route_to_proxy passthrough=no protocol=tcp src-address=192.168.0.0/24
6 - Feito isso iremos marcar nossos pacotes para que possamos identificá-los na saída global-out e podendo assim definir a que velocidade serão entregues aos nossos clientes.
Aqui eu fiz as marcações DNS para que a resolução seja feita a 100M já que os pacoes UDP DNS são pequenos e não há um consumo representativo de rede.
MARCAR PACOTES DNS
/ip firewall mangle add action=mark-packet chain=prerouting comment="DNS Packets" disabled=no dst-port=53 new-packet-mark=dns-packets passthrough=no protocol=udp
MARCAR PACOTES COM DSCP/TOS 12
/ip firewall mangle add action=mark-packet chain=prerouting comment="Mark Cache Hit Packets" disabled=yes dscp=12 new-packet-mark=proxy-hit passthrough=no
7 - Aqui vamos definir a velocidade de entrega dos pacotes marcados. Crio primeiro uma Queue Type pois uso o tipo PCQ por uma questão de desempenho. Recomendo sua leitura no Google para mais informações. Depois criaremos um Queue Tree para os pacotes DNS e os pacotes que sairão do cache.
EM QUEUES TYPE PRIMEIRO PARA QUE NOSSAS TREE POSSAM USAR ESSA TYPE
/queue type add kind=pcq name=CACHE pcq-burst-rate=50M pcq-burst-threshold=30M pcq-burst-time=10s pcq-classifier=dst-address pcq-dst-address-mask=32 pcq-dst-address6-mask=64 pcq-limit=2k pcq-rate=30M pcq-src-address-mask=32 pcq-src-address6-mask=64 pcq-total-limit=4000
Aqui defini que cada cliente terá um pico de 50M por 10s e se o tráfego for contínuo cairá para 30M, respeitando o total dividido ou não na Tree, que vamos setar logo a seguir.
EM QUEUES TREE DEPOIS
Aqui defino que o total para os pacotes marcados com DSCP/TOS será de 100M, ou seja se tivermos 3 clientes, 1 a 50M e 2 a 30, limitará em 100M. Ajuste conforme suas necessidades.
Aqui defino que nossos clientes farão resolução DNS a no máximo 100M
/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=100M name="DNS Packets" packet-mark=dns-packets parent=global-out priority=8 queue=default
VÍDEO:
http://youtu.be/f5EB95j1Hxw
muito bom!! parabéns
ResponderExcluirEstou com uma duvida, fiz um redirecionamento para meu proxy pfsense + squid , entretanto o squid esta bloqueando todas as paginas mesmo sem eu ter colocado na blacklist.
ResponderExcluirSegue abaixo meu squid.conf
# This file is automatically generated by pfSense
# Do not edit manually !
http_port 192.168.254.42:3128
http_port 127.0.0.1:3128 intercept
icp_port 0
dns_v4_first off
pid_filename /var/run/squid/squid.pid
cache_effective_user proxy
cache_effective_group proxy
error_default_language pt-br
icon_directory /usr/pbi/squid-amd64/local/etc/squid/icons
visible_hostname Rogerio
cache_mgr rogeriolopes1320@gmail.com
access_log /var/squid/logs/access.log
cache_log /var/squid/logs/cache.log
cache_store_log none
netdb_filename /var/squid/logs/netdb.state
pinger_enable on
pinger_program /usr/pbi/squid-amd64/local/libexec/squid/pinger
logfile_rotate 0
debug_options rotate=0
shutdown_lifetime 3 seconds
# Allow local network(s) on interface(s)
acl localnet src 192.168.254.0/24
forwarded_for on
httpd_suppress_version_string on
uri_whitespace strip
cache_mem 2048 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
minimum_object_size 0 KB
maximum_object_size 256000 MB
cache_dir ufs /var/squid/cache 30000 32 256
offline_mode off
cache_swap_low 90
cache_swap_high 95
cache allow all
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
#Remote proxies
# Setup some default acls
# From 3.2 further configuration cleanups have been done to make things easier and safer. The manager, localhost, and to_localhost ACL definitions are now built-in.
# acl localhost src 127.0.0.1/32
acl allsrc src all
acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901 3128 3129 1025-65535
acl sslports port 443 563
# From 3.2 further configuration cleanups have been done to make things easier and safer. The manager, localhost, and to_localhost ACL definitions are now built-in.
#acl manager proto cache_object
acl purge method PURGE
acl connect method CONNECT
# Define protocols used for redirects
acl HTTP proto HTTP
acl HTTPS proto HTTPS
acl allowed_subnets src 192.168.254.0/24 172.168.254.0/24
acl blacklist dstdom_regex -i "/var/squid/acl/blacklist.acl"
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslports
# Always allow localhost connections
# From 3.2 further configuration cleanups have been done to make things easier and safer.
# The manager, localhost, and to_localhost ACL definitions are now built-in.
# http_access allow localhost
quick_abort_min 0 KB
quick_abort_max 0 KB
request_body_max_size 0 KB
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_initial_bucket_level 100
delay_access 1 allow allsrc
# Reverse Proxy settings
# Custom options before auth
# Block access to blacklist domains
http_access deny blacklist
# Setup allowed ACLs
# Allow local network(s) on interface(s)
http_access allow allowed_subnets
http_access allow localnet
# Default block all to be sure
http_access deny allsrc