[FUG-BR] PF + ALTQ

Gilberto Villani Brito linux em giboia.org
Terça Agosto 28 10:19:49 BRT 2007


E-mail comentado:

On 21/08/07, Victor Loureiro Lima <victorloureirolima at gmail.com> wrote:
> I had enough ;)
>
> Cansei de ter menos banda na minha maquina (gateway da rede wireless
> la' de casa, rodando freebsd e meu desktop tambem ;)) toda vez que
> algum familiar ou visita entra na internet para ver os seus
> powerpoints sobre viagens no mundo, ou curiosidades no email, por
> tanto resolvi usar o altq a meu favor e incluir um controle de banda
> na rede la' de casa.
>
> A regra e' simples, quando eu estiver usando a internet (segundo eu li
> no manual da pf existe essa possibilidade) eu quero ter 60% da
> bandwidth apenas para mim, e os outros 40%, e quando nao houver nenhum
> uso de internet no gateway (meu desktop), a banda pode ir 100% para
> quem tiver usando. Nota: Nao quero que conexoes vindo da internet
> caiam em nenhuma queue, ou seja, tenham processamento normal sem
> limitacao de banda para eles. (considerando logicamente o limite
> fisico da capacidade da banda, e o caso da duvida 2 abaixo ;))
>
> Tendo essas premissas, existem a seguintes dúvidas:
> Como a minha rede e' disposta da seguinte forma:
>
> [ rede interna wireless de casa ] <---> [ath0]  [fxp0] <---> INTERNET
>                                                        (^^^^^^^^^^^^^^ gateway)
>
> 1a. duvida: eu devo habilitar o altq na interface ath0 ou na fxp0? Meu
> entendimento e' que
> se habilitar para a ath0, faria mais sentido, pois apenas o trafico
> wireless seria afetado.
> Caso seja essa a solução, estou certo em achar que simplesmente habilitando o
> altq na interface ath0 e passando um valor de 1600kb (meu link e' de
> 4mb, 1600 seria algo em torno de 40%), eu ja' conseguiria o resultado
> esperado? Depois seria apenas uma questao de habilitar no pass in on
> ath0 queue minha_queue?

Depende, se você for limitar SOMENTE o download usa a interface ath0,
mas se for limitar o upload também, terá que usar a fxp0.

>
> 2a. duvida: como fica a questão de limitar o que entra na rede? Teria
> como eu jogar os pacotes de resposta (vindos da internet) que foram
> originados de conexoes vindo da ath0 (usuarios internos) para uma
> queue que tenha menos banda, e deixar os outros que usam o fxp0 sem
> limitações de entrada/saida?!

Sim, tem como fazer isso.

>
>
> Ai vai o meu pf.conf (muito simples, nao tem nada...):
> #########################################################
> # Macros: define common values, so they can be referenced and changed easily.
> ext_if="fxp0"   # replace with actual external interface name i.e., dc0
> int_if="ath0"   # replace with actual internal interface name i.e., dc1
> internal_net="192.168.0.0/24"
> external_addr="`ifconfig fxp0 | grep inet | cut -d ' ' -f2`"
>
>
> # Options: tune the behavior of pf, default values are given.
> set timeout { interval 10, frag 30 }
> set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
> set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
> set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
> set timeout { icmp.first 20, icmp.error 10 }
> set timeout { other.first 60, other.single 30, other.multiple 60 }
> set timeout { adaptive.start 0, adaptive.end 0 }
> set limit { states 10000, frags 5000 }
> set loginterface none
> set optimization normal
> set block-policy drop
> set require-order yes
> set fingerprints "/etc/pf.os"
>
> # Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
> scrub in all
>
> nat on $ext_if from $internal_net to ! $internal_net -> ($ext_if)
>
> pass in log quick on $int_if keep state
> pass out log quick on $int_if keep state
> pass in log quick on $ext_if keep state
> pass out log quick on $ext_if keep state
> ################################################
>
> Abracos,
> Victor F. Loureiro Lima
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>

Mais ajuda: http://www.fug.com.br/historico/html/freebsd/2007-03/msg00028.html

Abraços
-- 
Gilberto Villani Brito
System Administrator
Londrina - PR
Brazil
gilbertovb(a)gmail.com


Mais detalhes sobre a lista de discussão freebsd