[FUG-BR] teste do mod_evasive rodando lento na VM
vic
vic em wa.pro.br
Terça Setembro 10 17:40:48 BRT 2013
Em 2013-09-10 15:26, Marcelo Gondim escreveu:
> Em 10/09/13 10:16, vic escreveu:
>> Em 2013-09-10 9:23, Marcelo Gondim escreveu:
>>> Pessoal,
>>>
>>> Sei que muitos aqui conhecem o mod_evasive pro apache que no FreeBSD
>>> é
>>> o
>>> pacote ap22-mod_evasive.
>>> Ele vem com um script de teste que sempre utilizei pra checar se o
>>> mod_evasive tá legal:
>>>
>>> test.pl:
>>>
>>> #!/usr/bin/perl
>>> # test.pl: small script to test mod_dosevasive's effectiveness
>>> use IO::Socket;
>>> use strict;
>>> for(0..100) {
>>> my($response);
>>> my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
>>> PeerAddr=> "127.0.0.1:80");
>>> if (! defined $SOCKET) { die $!; }
>>> print $SOCKET "GET /?$_ HTTP/1.0\n\n";
>>> $response = <$SOCKET>;
>>> print $response;
>>> close($SOCKET);
>>> }
>>>
>>> Só que quando rodo numa VM com FreeBSD ele abre as conexões
>>> lentamente,
>>> fazendo com que o teste não funcione. Fiz o mesmo teste em um FreeBSD
>>> sem ser VM e rodou mais rápido e consegui fazer os testes. Fui
>>> comparar
>>> com uma outra máquina com Linux e rodou estupidamente mais rápido.
>>> Logicamente que diferenças de processamento podem ser uma das causas
>>> mas
>>> porque rodou tão lento numa VM é que não descobri ainda.
>>> Alguém tem alguma ideia?
>>>
>>> Grande abraço
>> Suponho que sua aquela sua VM em Xen. Por acaso você tem um firewall
>> PF
>> na VM? Se sim tente:
>>
>> ifconfig xn0 -tso
>> sysctl -w net.inet.tcp.tso=0
>>
>> Referências:
>>
>> http://www.freebsd.org/cgi/query-pr.cgi?pr=154428
>> http://www.freebsd.org/cgi/query-pr.cgi?pr=135178
>>
>> Além disso, se você não compilou o kernel XENHVM, faça um teste com
>> ele
>> e mude a configuração do xen na vif para usar o type=netfront
>>
> É vic compilei com o XENHVM fiz as mudanças de disco e interface de
> rede
> e mesmo assim continua lento as conexões localhost do test.pl:
>
> # df -h
> Filesystem Size Used Avail Capacity Mounted on
> /dev/xbd0p2 2G 190M 1.6G 10% /
> devfs 1.0k 1.0k 0B 100% /dev
> /dev/xbd0p4 58G 15G 37G 29% /var
> /dev/xbd0p5 31G 6.0G 22G 21% /usr
> /dev/xbd0p6 2G 16M 1.8G 1% /tmp
>
> xn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
> 1500
> options=503<RXCSUM,TXCSUM,TSO4,LRO>
> ether 00:16:3e:02:9d:d6
> inet xx.xxx.xxx.xx netmask 0xfffffff8 broadcast 67.212.89.79
> inet6 fe80::216:3eff:fe02:9dd6%xn0 prefixlen 64 scopeid 0x6
> nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
> media: Ethernet manual
> status: active
>
> # uname -a
> FreeBSD xxxx.xxx.xxx.xx 9.2-PRERELEASE FreeBSD 9.2-PRERELEASE #0
> r255410M: Tue Sep 10 14:58:33 BRT 2013
> root em xxxx.xxx.xxx.xx:/usr/obj/usr/src/sys/XENHVM amd64
>
> Quem tiver a curiosidade de fazer esse teste nas mesmas condições que
> eu
> aqui, seria interessante. Abaixo os dados:
>
> No servidor Debian 7 amd64
> ii libxen-4.1 4.1.4-3+deb7u1 amd64
> Public libs for Xen
> ii libxenstore3.0 4.1.4-3+deb7u1 amd64
> Xenstore communications library for Xen
> ii xen-hypervisor-4.1-amd64 4.1.4-3+deb7u1 amd64 Xen
> Hypervisor on AMD64
> ii xen-linux-system-3.2.0-4-amd64 3.2.46-1+deb7u1 amd64 Xen
> system with Linux 3.2 on 64-bit PCs (meta-package)
> ii xen-linux-system-amd64 3.2+46 amd64 Xen system
> with Linux for 64-bit PCs (meta-package)
> ii xen-system-amd64 4.1.4-3+deb7u1 amd64 Xen
> System on AMD64 (meta-package)
> ii xen-tools 4.3.1-1 all Tools to
> manage Xen virtual servers
> ii xen-utils-4.1 4.1.4-3+deb7u1 amd64 XEN
> administrative tools
> ii xen-utils-common 4.1.4-3+deb7u1 all Xen
> administrative tools - common files
> ii xenstore-utils 4.1.4-3+deb7u1 amd64
> Xenstore utilities for Xen
>
> Arquivo conf da VM:
>
> kernel = '/usr/lib/xen-4.1/boot/hvmloader'
> builder = 'hvm'
> vcpus = 4
> memory = 2048
> shadow_memory = 8
> name = 'freeba'
> vif = [ 'type=netfront, model=e1000, bridge=xenbr0', ]
> #vif = [ 'type=ioemu, bridge=xenbr0, mac=00:00:00:ff:fe:01' ]
> disk = [
> 'file:/home/xen/domains/freeba/freeba.img,xvda,w',
> 'file:/home/xen/domains/freeba/FreeBSD-9.2-PRERELEASE-amd64-20130831-r255108-disc1.iso,xvdc:cdrom,r'
> ]
> device_model = '/usr/lib/xen-4.1/bin/qemu-dm'
> boot = 'cd'
> sdl=0
> vnc = '1'
> vncviewer = '1'
> vnclisten = "0.0.0.0"
> vncpasswd = 'songamonga'
> stdvga=0
> serial='pty'
> usbdevice='tablet'
> on_poweroff = 'destroy'
> on_reboot = 'restart'
> on_crash = 'restart'
>
> Pacote do mod_evasive no FreeBSD: www/mod_evasive -
> ap22-mod_evasive-1.10.1_1 An Apache module to try to protect the
> HTTP Server from DoS/DDoS attacks
>
> []'s
> Gondim
Eu instalei o www/apache22 num 9.1 XENVHM e rodei o test.pl e o ab -kc
10 -t 30 http://IP_VM/ a partir do meu computador.
Depois eu instalei e habilitei o mod_evasive e refiz os teste. Ambos
rodaram... claro que o test.pl teve uns 403 e o ab não teve todas as
requisições respondidas.. mas isso era esperado. Todos os testes rodaram
rapidinho.
Na minha conf do xen não tem setado
shadow_memory
usbdevice
e o cdrom (afinal já instalei)
com 4Gb de memória
vcpus=2
O host é um Scientific Linux 6 com linux 3.8.7-1.el6xen.x86_64
--
vic
choppnerd.com
donttrack.us | dontbubble.us
Mais detalhes sobre a lista de discussão freebsd