ipfw: Traffic Shaping

6

Não sei ao certo, mas parece que estou fazendo algo errado ... meu objetivo é limitar um pouco do meu tráfego, para ser o tráfego exato da www. Um dos meus clientes está executando o que é chamado de webproxy, onde um usuário final pode navegar em qualquer página da Web por meio de seu site, se alguém interessado der uma olhada:

link

Então, aqui está meu arquivo /etc/ipfw.rules seguido por ipfw show e ipfw pipe show :

flush
pipe flush
pipe 1 config bw 1Mbit/s mask src-port www
pipe 2 config bw 1Mbit/s mask src-port www
add 100 allow ip from any to any via lo0
add 200 deny ip from any to 127.0.0.0/8
add 300 deny ip from 127.0.0.0/8 to any
add 8381 pipe 1 tcp from any to any dst-port www uid daemon
add 8382 pipe 2 tcp from any to any src-port www uid daemon
add 8025 allow tcp from any to any dst-port smtp
add 8110 allow tcp from any to any dst-port pop3
add 8143 allow tcp from any to any dst-port imap
add 8993 allow tcp from any to any dst-port imaps
add 8995 allow tcp from any to any dst-port pop3s
add 65000 pass all from any to any

su-3.2# ipfw show
00100  85839853  23452504269 allow ip from any to any via lo0
00200         0            0 deny ip from any to 127.0.0.0/8
00300         0            0 deny ip from 127.0.0.0/8 to any
08025   8835622   3440233341 allow tcp from any to any dst-port 25
08110    748762     44303607 allow tcp from any to any dst-port 110
08143    443916     26822178 allow tcp from any to any dst-port 143
08381 139901701  10870804903 pipe 1 tcp from any to any dst-port 80 uid daemon
08382 181159216 209004032651 pipe 2 tcp from any 80 to any uid daemon
08993   2621221    332143828 allow tcp from any to any dst-port 993
08995    880748     87973919 allow tcp from any to any dst-port 995
65000 323132905 187469722830 allow ip from any to any
65535         0            0 deny ip from any to any
su-3.2# ipfw pipe show
00001:   1.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp     64.237.55.83/49910  66.218.161.133/80    139909114 10871439505  0    0  50
00002:   1.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp   66.218.161.133/80       64.237.55.83/49910 181159216 209004032651  0    0 21025730
su-3.2# 

De acordo com mrtg , estou passando dos 1Mbit / s que defini em ipfw . Terei todo o prazer em fornecer qualquer informação adicional necessária para resolver este problema, mas para iniciantes:

su-3.2# uname -a
FreeBSD x.xxx.xxx 7.3-RELEASE FreeBSD 7.3-RELEASE #13: Tue Mar 23 20:47:52 UTC 2010     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64
su-3.2# 
    
por alexus 30.08.2010 / 17:51

1 resposta

1

Primeiro, verifique se net.inet.ip.fw.one_pass está definido.

Em segundo lugar, não acho que você precise desse parâmetro de máscara na configuração do pipe. Você não pode ter certeza de que os pacotes vêm da porta 80, por exemplo. se um usuário se comunica por trás de um NAT, etc.

Terceiro, eu tentaria sem as regras 200 e 300. Não sei ao certo como está lidando com a tubulação internamente, mas a seção Traffic Shaping de ipfw(8) tem essas dicas inscritas:

CHECKLIST Here are some important points to consider when designing your rules:

+o     Remember that you filter both packets going in and out.  Most connec-

tions need packets going in both directions.

+o     Remember to test very carefully.  It is a good idea to be near the

console when doing this. If you cannot be near the console, use an auto-recovery script such as the one in /usr/share/examples/ipfw/change_rules.sh.

+o     **Do not forget the loopback interface.**

E em quarto lugar, eu mudaria a regra padrão (= a última regra 65000) para negar tudo. É um bom design de firewall e, sem ele, todas essas outras regras de permissão são desperdiçadas;)

    
por 18.09.2010 / 13:36