Post em Destaque

Comandos que todo bom admin deveria saber

Esse documento não é novo mas muitos que estão chegando ainda não leram e acredito que ele seja muito importante na vida de qualquer administrador de sistemas. É um guia de referência pra qualquer hora do dia ou quando necessitar. O man também é muito importante na dúvida de um comando. Aqui...

Leia mais...

Semana da Infraestrutura da Internet no Brasil

Posted by gondim | Posted in Dicas, Tecnologia | Posted on 26-11-2012

Tags:, , ,

0

Para todas as pessoas que são de Provedores de Conectividade, Autonomous Systems, Segurança da Informação, que buscam soluções para IPv6 e/ou queiram compartilhar suas experiências, serão 4 eventos importantes e reunidos em um só lugar. Os eventos serão:

Os eventos ocorrerão de 03/12 à 08/12 em Sampa e mais informações nos links acima ou abaixo:

http://nic.br/semanainfrabr/

Eu já fiz a minha inscrição e estarei lá. E você?  🙂

Share Button

BSD Magazine – Mês de Novembro.

Posted by gondim | Posted in Dicas, FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 07-11-2012

Tags:, ,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

Conteúdo:

  • NETGEAR Universal Wifi Adapter (WNCE2001)
  • Automating the Deployment of FreeBSD & PC-BSD Systems
  • Network Concepts, Routing and Firewalls
  • FreeBSD as a NAT Instance in Amazon Cloud
  • FreeBSD Enterprise Search with Apache Solr
  • PostgreSQL: Indexes

 

Bsd_11_2012_

Share Button

BSD Magazine – Mês de Outubro

Posted by gondim | Posted in Dicas, FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 14-10-2012

Tags:,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

Conteúdo:

  • VX ConnectBot: Open Source SSH Client for Android Devices
  • Installing Xfce Desktop Environment on OpenBSD 5.1
  • Browse the Internet Differently
  • FreeBSD Enterprise Search with Apache Solr (Part 2)
  • PostgreSQL: Indexes
  • Unix IPC with FIFOs
  • Capture Session Data with Argus on FreeBSD
  • Securing your Family with pfSense and IPSec
  • Installation and Setup of the Halon Virtual Security Router

Bsd_10_2012_cover

Share Button

Gravar a Área de Trabalho

Posted by Otacílio | Posted in Dicas, FreeBSD | Posted on 07-10-2012

Tags:, , ,

0

 

Olá

Este é um post simples, mas com uma dica bem útil para quem gosta de fazer tutoriais ou que, por qualquer outro motivo, deseje gravar a área de trabalho enquanto utiliza o seu sistema FreeBSD (deve funcionar com outros unix-like também). Para capturar a área de trabalho não é necessário nenhum aplicativo com interface gráfica complexa, basta utilizar o ffmpeg para isso.

Da página de manual do ffmpeg tem-se que:

"ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. "

É exatamente esta característica de capturar o vídeo de uma outra fonte “ao vivo” que pode-se utilizar para capturar a tela.

Antes de começar, obviamente é necessário instalar o ffmpeg. Na árvore do ports ele encontra-se em

multimedia/ffmpeg

A instalação deve ser feita com suporte a X11GRAB.  Utilize um make config dentro da pasta do ffmpeg para realizar a configuração da instalação. Para referência, esta é a configuração de uma instalação em que este recurso está funcionando.



===> The following configuration options are available for ffmpeg-0.7.13_6,1:
AACPLUS=off: AAC support via libaacplus
ALSA=off: ALSA audio architecture support
AMR_NB=off: AMR Narrow Band audio support (opencore)
AMR_WB=off: AMR Wide Band audio support (opencore)
CELT=off: CELT audio codec support
DEBUG=off: Install debug symbols
DIRAC=on: Dirac support via libdirac
FAAC=on: FAAC AAC encoder support
FFSERVER=on: Build and install ffserver
FREETYPE=on: TrueType font rendering support
FREI0R=on: Frei0r video plugins support
GSM=on: GSM codec support
LAME=on: LAME MP3 encoder support
OPENCV=on: OpenCV support
OPENJPEG=on: Enhanced JPEG graphics support
OPTIMIZED_CFLAGS=off: Use extra compiler optimizations
RTMP=off: RTMP protocol support via librtmp
SCHROEDINGER=off: Dirac support via libschroedinger
SDL=on: Simple Direct Media Layer support
SPEEX=on: Speex audio format support
THEORA=on: Ogg Theora support
VAAPI=on: VAAPI (GPU video acceleration) support
VDPAU=off: VDPAU (GPU video acceleration) support
VORBIS=on: Ogg Vorbis audio codec support
VO_AACENC=off: AAC audio encoding via vo-aacenc
VO_AMRWBENC=off: AMR Wide Band encoding via vo-amrwbenc
VPX=on: VP8 video codec support
X11GRAB=on: Enable x11 grabbing
X264=on: H.264 video codec support via x264
XVID=on: Xvid MPEG-4 video codec support
===> Use 'make config' to modify these settings

O comando make install realiza a instalação do pacote.


Sempre antes de realizar a captura da tela deve-se checar as configurações do mixer caso deseje-se também o audio na gravação. Pode-se utilizar o comando mixer para isso. Como exemplo, esses são os parâmetros de um sistema onde a gravação com áudio está funcionando:

[ota@squitch ~]$ mixer
Mixer vol      is currently set to 100:100

Mixer pcm      is currently set to 100:100
Mixer speaker  is currently set to 100:100
Mixer mic      is currently set to  90:90
Mixer cd       is currently set to  75:75
Mixer mix      is currently set to  90:90
Mixer rec      is currently set to  90:90
Mixer igain    is currently set to  75:75
Recording source: mic

Um outro pacote que deve ser instalado é o x11/xdpyinfo, pois ele é que será utilizado para retornar o tamanho da área de trabalho.

Por fim, aqui está o script que deve ser salvo em um arquivo e depois adicionado a permissão de execução para o mesmo (chmod ugo+x nome_do_arquivo).


#!/bin/sh
if [ -f /var/tmp/$USER.gravatela.pid ]; then
    kill -TERM `cat /var/tmp/$USER.gravatela.pid`;
    rm -rf cat /var/tmp/$USER.gravatela.pid
else
    /usr/local/bin/ffmpeg -y -f oss -async 441 -ar 44100 -i /dev/dsp  -f x11grab -s `/usr/local/bin/xdpyinfo | /usr/bin/grep 'dimensions:'| /usr/bin/awk '{print $2}'` -r 40 -i :0.0 -qscale 0 /home/$USER/Desktop/Video.avi &
echo $! > /var/tmp/$USER.gravatela.pid
fi


O funcionamento do script é simples. Ele, a primeira vez que é executado, inicia a captura da área de trabalho e salva em um arquivo na pasta Desktop do usuário. Se executado novamente ele termina o processo de captura. Este script pode ser acionado por um atalho de teclas do Gnome, basta para isso que, no Gnome 2, o usuário vá em Sistema->Preferência->Atalhos de Teclado e adicione um atalho personalizado para o script.

 

Ps.: Obrigado ao usuário Carlos Eduardo G. Carvalho (Cartola) da lista FUG-BR por ter adicionado ao comando para capturar a tela os parâmetros para capturar o áudio também.

Share Button

Repositório de Snapshots regulares do FreeBSD

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 06-10-2012

Tags:

12

Glen Garber mantém não oficialmente um repositório de snapshots de imagens (.ISO) e arquivos do FreeBSD 10.0 (HEAD) e FreeBSD 9.1. Isso facilita bastante para quem precisa de uma imagem do sistema mais atualizada.

Algumas pessoas nas listas oficiais (freebsd-stable e freebsd-current) comentaram que isso deveria ser oficial mas por enquanto não é e não se sabe se um dia será. O importante é que alguém pensou em ajudar e agora está aí, disponível para a comunidade.

Parabéns Glen Garber!

O link do Glen é este aqui.

Apareceu um novo link na lista que mantém muito mais ISOs e arquivos de várias arquiteturas.

Share Button

Acessar o Celular Android via Bluetooth no FreeBSD

Posted by Otacílio | Posted in Dicas, FreeBSD | Posted on 30-09-2012

Tags:, ,

4

 

 

Este pequeno roteiro eu realizei utilizando o adaptador Bluetooth bem Xing-Ling da imagem abaixo.

The Adaptador Bluetooth :)

 

 

 

 

 

 

 

O primeiro passo é verificar se os drivers necessários estão presentes no kernel. O meu sistema é este aqui:

FreeBSD squitch 8.3-RELEASE-p4 FreeBSD 8.3-RELEASE-p4 #22: Mon Sep 24 17:16:29 BRT 2012     ota@squitch:/usr/obj/usr/src/sys/SQUITCH  i386

Nele, apenas ao plugar o adaptador na entrada USB os seguintes drivers são carregados automaticamente:

ng_ubt.ko
ng_hci.ko
ng_bluetooth.ko
ng_l2cap.ko
ng_btsocket.ko
ng_socket.ko

Verifique no seu sistema se os drivers aparecem ao plugar o adaptador USB. Você pode fazer isso utilizando o comando kldstat. Ex:

[ota@squitch ota]$ kldstat

Se não for o caso do seu sistema, você pode carregar os módulos utilizando o comando kldload <nome do módulo>.  Por exemplo:

squitch# kldload ng_ubt

Caso deseje você pode também adicionar a seguinte linha

ng_ubt_load="YES"

no arquivo

/boot/loader.conf

e os seguintes drivers serão carregados no momento do boot:

ng_ubt.ko
ng_hci.ko
ng_bluetooth.ko

e os seguintes (na minha máquina) quando plugo o adaptador bluetooth:

ng_l2cap.ko
ng_btsocket.ko
ng_socket.ko

Verifique na sua máquina se os drivers estão sendo carregados. Você obviamente pode fazer uma comparação com os drivers que listei aqui. Caso esteja tendo problemas você pode dar uma olhada no handbook sobre o assunto. Note também que outros dispositivos necessitam de outros drivers como, por exemplo, os que usam o chip Broadcom BCM2033. Neste caso o handbook cobre com mais detalhes.


Após checar os drivers, ao plugar o seu dispositivo você deve ver no terminal do sistema (ou em algum terminal gráfico se digitar dmesg) algo semelhante a isso:

ugen1.2: <vendor 0x0a12> at usbus1
ubt0: <vendor 0x0a12 product 0x0001, class 224/1, rev 2.00/19.15, addr 2> on usbus1
WARNING: attempt to domain_add(bluetooth) after domainfinalize()
WARNING: attempt to domain_add(netgraph) after domainfinalize()

A mensagem contendo ubt0 é especialmente animadora, pois indica que o driver bluetooth reconheceu o seu dispositivo.

Descubra então os dispositivos bluetooth nas proximidades com o comando hccontrol:

[ota@squitch ota]$ hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 94:51:03:ed:dd:f6
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 0x2
Page Scan Mode: 00
Class: 5a:02:0c
Clock offset: 0x67ec
Inquiry complete. Status: No error [00]

Note que alguns dispositivos podem estar configurados para não aparecer quando uma busca é feita. Então, verifique se o seu Android está com a configuração “Detectável” habilitada.

O meu sistema responde com a seguinte para o meu celular:

[ota@squitch ota]$ hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
    BD_ADDR: 94:51:03:ed:dd:f6
    Page Scan Rep. Mode: 0x1
    Page Scan Period Mode: 0x2
    Page Scan Mode: 00
    Class: 5a:02:0c
    Clock offset: 0x4106
Inquiry complete. Status: No error [00]

De posse do BD_ADDR você deve criar uma entrada no arquivo /etc/bluetooth/hcsecd.conf para que o dispositivo Android consiga parear com o computador. A entrada no meu caso tem:

device {
        bdaddr 94:51:03:ed:dd:f6;
        name    "GT-S5300B";
        pin     "3295";
}

Onde bdaddr foi obtido na busca de dispositivos, name é um nome dado por você, e pin é o pin que você deverá digitar no Android no momento do pareamento.

Agora como root rode os daemons que vão responder a comunicação bluetooth:

squitch# /etc/rc.d/hcsecd onestart ubt0
Starting hcsecd.
squitch# /etc/rc.d/sdpd onestart
Starting sdpd.
squitch#

Vamos então acessar o servidor de arquivos do dispositivo Android. Instale o port comms/obexapp e então execute (modificando o endereço para o seu caso, óbvio):

[ota@squitch ota]$ obexapp -a 94:51:03:ed:dd:f6 -C FTRN

Uma tela solicitando o pin deve ter sido aberta no dispositivo Android. Digite o pin do campo pin da entrada device do arquivo /etc/bluetooth/hcsecd.conf correspondente ao seu dispositivo.

Pronto, agora é só aceitar o pedido para transferência de arquivos do computador e um terminal será aberto. Você pode digitar help para abrir a ajuda dos comandos. Por exemplo:

obex> help
CApability, CD, DElete, DIsconnect, Empty, GET, GETDefault, Ls, Mkdir, Put?
obex> Ls
Access    Owner    Group    Size       Modified         Name
          n/a      n/a      n/a        n/a              LOST.DIR/
          n/a      n/a      n/a        n/a              external_sd/
          n/a      n/a      n/a        n/a              DCIM/
          n/a      n/a      n/a        n/a              Android/
          n/a      n/a      n/a        n/a              Notifications/
          n/a      n/a      n/a        n/a              samsungapps/
          n/a      n/a      n/a        n/a              Mercury/
          n/a      n/a      n/a        n/a              media/
          n/a      n/a      n/a        n/a              bluetooth/
          n/a      n/a      n/a        n/a              .polarisViewer/
          n/a      n/a      n/a        n/a              Sounds/
          n/a      n/a      n/a        n/a              burstlyImageCache/
          n/a      n/a      n/a        n/a              Ringtones/
          n/a      n/a      n/a        n/a              social_cache/
          n/a      n/a      n/a        n/a              Pictures/
          n/a      n/a      n/a        n/a              WhatsApp/
          n/a      n/a      n/a        n/a              .temp/
Success, response: OK, Success (0x20)
obex>

Lista os arquivos e diretórios do aparelho. Sendo que existe um porém. Por default os arquivos não aparecem na listagem. Por exemplo:

obex> cd DCIM
Success, response: OK, Success (0x20)
obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
          n/a      n/a      n/a        n/a              Camera/
          n/a      n/a      n/a        n/a              .thumbnails/
Success, response: OK, Success (0x20)
obex> cd Camera
Success, response: OK, Success (0x20)
obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
Success, response: OK, Success (0x20)
obex>

Não mostra nenhum arquivo embora eles estejam lá. Para que você possa visualizá-los você deve ir no aplicativo do Android “Meus arquivos“, ir até a pasta, tocar no botão à esquerda do botão central do celular, clicar na combo “Mais” e escolher “Visibilidade do Bluetooth“. Então é só marcar os arquivos que você quer que apareçam na listagem e depois em “Conc.“. A listagem agora exibe:

obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
  R       n/a      n/a      238658     n/a              2012-09-27 22.55.16.jpg
Success, response: OK, Success (0x20)
obex>

Para baixar o arquivo é só rodar (para o arquivo do exemplo):

obex> GET 2012-09-27\ 22.55.16.jpg
238658 bytes streamed in 3 seconds (79552 bytes/sec)
Success, response: OK, Success (0x20)
obex>

Caso deseje ter um terminal no dispositivo Android execute o comando (novamente substituído o endereço, óbvio):

squitch# rfcomm_sppd -a 94:51:03:ed:dd:f6 -c 1 -t /dev/ttyp1

Aceite o pedido de conexão no Android. Abra um outro terminal e execute

squitch# chgrp users /dev/ttyp1

Em seguida (como usuário comum mesmo) execute um terminal no dispositivo criado:

[ota@squitch ota]$ cu -l ttyp1

Pronto, você pode agora digitar comandos AT. Se tiver a lista de comandos AT que o Galaxy suporta por favor me envie para eu disponibilizar aqui.


Para enviar arquivos do Android para o FreeBSD diretamente pelos comandos Bluetooth do Android sem precisar conectar via terminal você deve rodar um servidor no FreeBSD na pasta que você quer que receba os arquivos. Ex:

[ota@squitch ota]$ cd Downloads/
[ota@squitch Downloads]$ obexapp -s
[ota@squitch Downloads]$

E enviar os arquivos pelo Bluetooth do Android. Os arquivos deverão aparecer na pasta onde você rodou o servidor.


Muito mais detalhes você pode encontrar em: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bluetooth.html.


Se esta página foi útil para você, por favor, deixe um comentário.

Share Button

Ferramentas complementares ao dmesg

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 29-09-2012

Tags:, , , ,

1

Todos usam o dmesg para visualizar o hardware detectado no boot pelo kernel, mas as vezes precisamos de mais informação sobre o nosso equipamento e nesse momento entram em ação algumas ferramentas abaixo:

  • devinfo
  • pciconf
  • dmidecode

Os 2 primeiros já fazem parte da base do sistema FreeBSD e o dmidecode vem no ports. A função deles é nos dar informação mais detalhada que precisamos. Abaixo exemplos das saídas de cada um deles:

# devinfo -rv

# pciconf -lv

# dmidecode

 

Espero que esses programas ajudem mais na informação do que estamos utilizando.

Bom divertimento.

Share Button

BSD Magazine – Mês de Setembro

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre, Tecnologia | Posted on 06-09-2012

Tags:, , ,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

Conteúdo:

  • What’s New in PC-BSD 9.1
  • Unix IPC with Pipes
  • Setting up Your OwnCloud Instance via the Warden™
  • FreeBSD Enterprise Search with Apache Solr
  • PostgreSQL Partitioning (part 2)
  • Hardening FreeBSD with TrustedBSD and MAC
  • Nmap: The Network Swiss Army Knife
  • Interview with Jeroen van Nieuwenhuizen

Bsd_09_2012_whats_new_in_pc_bsd_9_1

Share Button

jnettop – ferramenta X9 de consumo de banda

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 21-08-2012

Tags:,

5

Hoje venho apenas passar uma dica muito legal para os momentos em que percebemos certas lentidões de acesso. Usei essa ferramenta em outros sistemas e logicamente continuo usando no FreeBSD. Quando queremos descobrir, dentro da nossa rede, quem está consumindo mais banda de acesso, a ferramenta que mais me adaptei foi a jnettop que é um top por consumo de banda.

Ele é muito simples de usar e na sua forma mais básica já faz o que se propõe. Para instalar esse port basta fazer o seguinte:

# cd /usr/ports/net-mgmt/jnettop
# make install clean distclean

Para verificar quem está utilizando mais banda, usando a interface de rede interna do seu proxy ou gateway basta rodar:

# jnettop -i <interface_interna>

Para fazer o mesmo sem resolver nomes:

# jnettop -i <interface_interna> -n

Também podemos fazer filtragens como fazemos no tcpdump, usando o -x como argumento. No exemplo abaixo pegaremos somente as conexões usando a porta 80, sem resolver nomes e na minha interface interna em1:

# jnettop -i em1 -n -x “port 80”

Ao abrir a tela do jnettop o mesmo mostrará os dados em bytes por segundo, para alterar para bits por segundo basta apertar a tecla “b” uma vez e outra vez para mudar para bytes por segundo novamente. Existe o parâmetro -b em linha de comando que deveria setar para bits por segundo mas estranhamente nunca funcionou comigo em nenhum sistema em que usei o jnettop. Provavelmente não foi implementado como deveria mas o importante é a utilidade da ferramenta como um todo.

Abaixo a tela do mesmo em ação:

Jnettop também pode ler um arquivo de configuração local. Toda informação adicional pode ser lida em seu man:

# man jnettop

É isso aí pessoal. Bom proveito. 😉

Share Button

Tuning – uma coisa muito importante e que faz a diferença

Posted by gondim | Posted in Dicas, FreeBSD, Segurança | Posted on 13-07-2012

Tags:

7

Cada Sistema Operacional tem o seu tuning próprio e isso pode realmente fazer a diferença quando você coloca um servidor em produção. Por si só e sem modificações os sistemas tem seus valores padrões de forma que funcionem em qualquer equipamento mas quando necessitamos que o servidor trabalhe com a melhor performance para aquela aplicação, aí sim você começa à quebrar a cabeça.

O problema é que muitos desses parâmetros são obscuros ou tem pouca informação na Internet e quem poderia nos informar mais sobre eles seriam os desenvolvedores que os criaram. No FreeBSD o tuning é feito em 3 lugares:

  • Kernel
  • loader.conf
  • sysctl.conf

O kernel que é instalado é sempre o GENERIC, um kernel suficiente (mínimo) para que o sistema inicie em qualquer hardware para que se tenha uma menor probabilidade de erros com o equipamento. O resultado é um kernel que tem coisas à mais do que necessitamos e ao mesmo tempo faltando outras que precisamos. Um exemplo disso é o firewall que não vem no kernel GENERIC.

Todos os drivers de dispositivos que você não utiliza, deveriam ser removidos do nosso novo kernel mas nunca edite/altere o arquivo GENERIC. Faça uma cópia do GENERIC para outro nome e aí sim edite esse arquivo novo.

Se você instalou um FreeBSD i386 seu kernel GENERIC estará em: /sys/i386/conf/  e se for um amd64 estará em: /sys/amd64/conf/

O NOTES é um cara que possui todas as opções, devices e parâmetros que podemos usar no nosso kernel mas existem 2 NOTES, o NOTES da sua arquitetura e o NOTES genérico que serviria para qualquer arquitetura. Podemos criar um NOTES completo da seguinte forma. Vamos supor que eu esteja em uma arquitetura de 64 bits (amd64):

# cd /sys/amd64/conf
# cat /sys/conf/NOTES NOTES > NOTES-FULL

Agora sim temos um NOTES com todas as opções que podemos usar e servir de referência.

Um exemplo de tuning de Kernel seria o parâmetro HZ que se você tiver um servidor com alto tráfego, um router por exemplo, deveria ser um valor de uns 3000 em máquinas 64 bits SMP.

Então nosso tuning envolve enxugar o kernel e adicionar coisas que usaremos. Abaixo colocarei alguns exemplos de KERNCONF. No final do artigo colocarei o link no qual coletei essas configurações:

=========================================================================

# Just some of them, see also
# cat /sys/{i386,amd64,}/conf/NOTES

# This one useful only on i386
#options         KVA_PAGES=512

# You can play with HZ in environments with high interrupt rate (default is 1000)
# 100 is for my notebook to prolong it’s battery life
#options         HZ=100

# Eliminate datacopy on socket read-write
# To take advantage with zero copy sockets you should have an MTU >= 4k
# This req. is only for receiving data.
# Read more in man zero_copy_sockets
# Also this epic thread on kernel trap:
#    http://kerneltrap.org/node/6506
# Here Linus says that “anybody that does it that way (FreeBSD) is totally incompetent”
#options         ZERO_COPY_SOCKETS

# Support TCP sign. Used for IPSec
options         TCP_SIGNATURE
# There was stackoverflow found in KAME IPSec stack:
# See http://secunia.com/advisories/43995/
# For quick workaround you can use `ipfw add deny proto ipcomp`
options         IPSEC

# This ones can be loaded as modules. They described in loader.conf section
#options         ACCEPT_FILTER_DATA
#options         ACCEPT_FILTER_HTTP

# Adding ipfw, also can be loaded as modules
options         IPFIREWALL
# On 8.1+ you can disable verbose to see blocked packets on ipfw0 interface.
# Also there is no point in compiling verbose into the kernel, because
# now there is net.inet.ip.fw.verbose tunable.
#options         IPFIREWALL_VERBOSE
#options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPFIREWALL_FORWARD
# Adding kernel NAT
options         IPFIREWALL_NAT
options         LIBALIAS
# Traffic shaping
options         DUMMYNET
# Divert, i.e. for userspace NAT
options         IPDIVERT

# This is for OpenBSD’s pf firewall
device          pf
device          pflog
# pf’s QoS – ALTQ
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

# Pretty console
# Manual can be found here http://forums.freebsd.org/showthread.php?t=6134
#options         VESA
#options         SC_PIXEL_MODE

# Disable reboot on Ctrl Alt Del
#options         SC_DISABLE_REBOOT
# Change normal|kernel messages color
options         SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options         SC_KERNEL_CONS_ATTR=(FG_YELLOW|BG_BLACK)
# More scroll space
options         SC_HISTORY_SIZE=8192

# Adding hardware crypto device
device          crypto
device          cryptodev

# Useful network interfaces
device          vlan
device          tap                     #Virtual Ethernet driver
device          gre                     #IP over IP tunneling
device          if_bridge               #Bridge interface
device          pfsync                  #synchronization interface for PF
device          carp                    #Common Address Redundancy Protocol
device          enc                     #IPsec interface
device          lagg                    #Link aggregation interface
device          stf                     #IPv4-IPv6 port

# Also for my notebook, but may be used with Opteron
device         amdtemp
# Same for Intel processors
device         coretemp

# man 4 cpuctl
device         cpuctl                   # CPU control pseudo-device

# Support for ECMP. More than one route for destination
# Works even with default route so one can use it as LB for two ISP
# For now code is unstable and panics (panic: rtfree 2) on route deletions.
#options         RADIX_MPATH

# Multicast routing
#options         MROUTING
#options         PIM

# Debug & DTrace
options        KDB                     # Kernel debugger related code
options        KDB_TRACE               # Print a stack trace for a panic
options        KDTRACE_FRAME           # amd64-only(?)
options        KDTRACE_HOOKS           # all architectures – enable general DTrace hooks
#options        DDB
#options        DDB_CTF                 # all architectures – kernel ELF linker loads CTF data

# Adaptive spining in lockmgr (8.x+)
# See http://www.mail-archive.com/svn-src-all@freebsd.org/msg10782.html
options         ADAPTIVE_LOCKMGRS

# UTF-8 in console (8.x+)
#options         TEKEN_UTF8

# FreeBSD 8.1+
# Deadlock resolver thread
# For additional information see http://www.mail-archive.com/svn-src-all@freebsd.org/msg18124.html
# (FYI: “resolution” is panic so use with caution)
#options         DEADLKRES

# Increase maximum size of Raw I/O and sendfile(2) readahead
#options MAXPHYS=(1024*1024)
#options MAXBSIZE=(1024*1024)

# For scheduler debug enable following option.
# Debug will be available via `kern.sched.stats` sysctl
# For more information see http://svnweb.freebsd.org/base/head/sys/conf/NOTES?view=markup
#options SCHED_STATS

# A framework for very efficient packet I/O from userspace, capable of
# line rate at 10G (FreeBSD10+)
# See http://svnweb.freebsd.org/base?view=revision&revision=227614
#device netmap

=========================================================================

Agora veremos uns exemplos relacionados ao /boot/loader.conf:

=========================================================================

# Accept filters for data, http and DNS requests
# Useful when your software uses select() instead of kevent/kqueue or when you under DDoS
# Note: DNS accf available on 8.0+
#accf_data_load=”YES”
#accf_http_load=”YES”
#accf_dns_load=”YES”

# Async IO system calls
aio_load=”YES”

# Linux specific devices in /dev
# As for 8.1 it only /dev/full
#lindev_load=”YES”

# Adds NCQ support in FreeBSD
# WARNING! all ad[0-9]+ devices will be renamed to ada[0-9]+
# 8.0+ only
#ahci_load=”YES”
#siis_load=”YES”

# FreeBSD 9+
# New Congestion Control for FreeBSD
# http://caia.swin.edu.au/urp/newtcp/tools/cc_chd-readme-0.1.txt
# http://www.ietf.org/proceedings/78/slides/iccrg-5.pdf
# Initial merge commit message http://www.mail-archive.com/svn-src-all@freebsd.org/msg31410.html
#cc_chd_load=”YES”

# Increase kernel memory size to 3G.
#
# Use ONLY if you have KVA_PAGES in kernel configuration, and you have more than 3G RAM
# Otherwise panic will happen on next reboot!
#
# It’s required for high buffer sizes: kern.ipc.nmbjumbop, kern.ipc.nmbclusters, etc
# Useful on highload stateful firewalls, proxies or ZFS fileservers
# (FreeBSD 7.2+ amd64 users: Check that current value is lower!)
#vm.kmem_size=”3G”

# If your server has lots of swap (>4Gb) you should increase following value
# according to http://lists.freebsd.org/pipermail/freebsd-hackers/2009-October/029616.html
# Otherwise you’ll be getting errors
# “kernel: swap zone exhausted, increase kern.maxswzone”
#kern.maxswzone=”256M”

# Older versions of FreeBSD can’t tune maxfiles on the fly
#kern.maxfiles=”200000″

# Useful for databases
# Sets maximum data size to 1G
# (FreeBSD 7.2+ amd64 users: Check that current value is lower!)
#kern.maxdsiz=”1G”

# Maximum buffer size(vfs.maxbufspace)
# You can check current one via vfs.bufspace
# Should be lowered/upped depending on server’s load-type
# Usually decreased to preserve kmem
# (default is 10% of mem)
#kern.maxbcache=”512M”

# Sendfile buffers
# For i386 only
#kern.ipc.nsfbufs=10240

# FreeBSD 9+
# HPET “legacy route” support. It should allow HPET to work per-CPU
# See http://www.mail-archive.com/svn-src-head@freebsd.org/msg03603.html
#hint.atrtc.0.clock=0
#hint.attimer.0.clock=0
#hint.hpet.0.legacy_route=1

# syncache Hash table tuning
net.inet.tcp.syncache.hashsize=32768
net.inet.tcp.syncache.bucketlimit=32
net.inet.tcp.syncache.cachelimit=1048576

# Increased hostcache
# Later host cache can be viewed via net.inet.tcp.hostcache.list hidden sysctl
# Very useful for it’s RTT RTTVAR
# Must be power of two
net.inet.tcp.hostcache.hashsize=65536
# hashsize * bucketlimit (which is 30 by default)
# It allocates 255Mb (1966080*136) of RAM
net.inet.tcp.hostcache.cachelimit=1966080

# TCP control-block Hash table tuning
net.inet.tcp.tcbhashsize=4096

# Disable ipfw deny all
# Should be uncommented when there is a chance that
# kernel and ipfw binary may be out-of sync on next reboot
#net.inet.ip.fw.default_to_accept=1

#
# SIFTR (Statistical Information For TCP Research) is a kernel module that
# logs a range of statistics on active TCP connections to a log file.
# See prerelease notes http://groups.google.com/group/mailing.freebsd.current/browse_thread/thread/b4c18be6cdce76e4
# and man 4 sitfr
#siftr_load=”YES”

# Enable superpages, for 7.2+ only
# See: http://lists.freebsd.org/pipermail/freebsd-hackers/2009-November/030094.html
vm.pmap.pg_ps_enabled=1

# Usefull if you are using Intel-Gigabit NIC
#hw.em.rxd=4096
#hw.em.txd=4096
#hw.em.rx_process_limit=”-1″
# Also if you have ALOT interrupts on NIC – play with following parameters
# NOTE: You should set them for every NIC
#dev.em.0.rx_int_delay: 250
#dev.em.0.tx_int_delay: 250
#dev.em.0.rx_abs_int_delay: 250
#dev.em.0.tx_abs_int_delay: 250
# There is also multithreaded version of em/igb drivers that can be found here:
# http://people.yandex-team.ru/~wawa/
#
# for additional em monitoring and statistics use
# sysctl dev.em.0.stats=1 ; dmesg
# sysctl dev.em.0.debug=1 ; dmesg
# Also after r209242 (-CURRENT) there is a separate sysctl for each stat variable;
# Same tunings for igb
#hw.igb.rxd=4096
#hw.igb.txd=4096
#hw.igb.rx_process_limit=100

# Some useful netisr tunables. See sysctl net.isr
#net.isr.maxthreads=4
#net.isr.defaultqlimit=10240
#net.isr.maxqlimit=10240
# Bind netisr threads to CPUs
#net.isr.bindthreads=1

#
# FreeBSD 9.x+
# Increase interface send queue length
# See commit message http://svn.freebsd.org/viewvc/base?view=revision&revision=207554
#net.link.ifqmaxlen=1024

# Nicer boot logo =)
loader_logo=”beastie”

=========================================================================

E agora por último mas não tão menos importante um /etc/sysctl.conf:

=========================================================================

# No zero mapping feature
# May break wine
# (There are also reports about broken samba3)
#security.bsd.map_at_zero=0

# If you have really busy webserver with apache13 you may run out of processes
#kern.maxproc=10000
# Same for servers with apache2 / Pound
#kern.threads.max_threads_per_proc=4096

# Max. backlog size
kern.ipc.somaxconn=4096

# Shared memory // 7.2+ can use shared memory > 2Gb
kern.ipc.shmmax=2147483648

# Sockets
kern.ipc.maxsockets=204800

# Mbuf 2k clusters (on amd64 7.2+ 25600 is default)
# Note that defaults for other variables depend on this variable, for example `tcpreass`
# Note for FreeBSD-7 and older: For such high value vm.kmem_size must be increased to 3G
kern.ipc.nmbclusters=262144

# Jumbo pagesize(_SC_PAGESIZE) clusters
# Used as general packet storage for jumbo frames on some network cards
# Can be monitored via `netstat -m`
#kern.ipc.nmbjumbop=262144

# Jumbo 9k/16k clusters
# If you are using them
#kern.ipc.nmbjumbo9=65536
#kern.ipc.nmbjumbo16=32768

# For lower latency you can decrease scheduler’s maximum time slice
# default: stathz/10 (~ 13)
#kern.sched.slice=1

# Increase max command-line length showed in `ps` (e.g for Tomcat/Java)
# Default is PAGE_SIZE / 16 or 256 on x86
# This avoids commands to be presented as [executable] in `ps`
# For more info see: http://www.freebsd.org/cgi/query-pr.cgi?pr=120749
kern.ps_arg_cache_limit=4096

# Every socket is a file, so increase them
kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.maxvnodes=200000

# On some systems HPET is almost 2 times faster than default ACPI-fast
# Useful on systems with lots of clock_gettime / gettimeofday calls
# See http://old.nabble.com/ACPI-fast-default-timecounter,-but-HPET-83–faster-td23248172.html
# After revision 222222 HPET became default: http://svnweb.freebsd.org/base?view=revision&revision=222222
kern.timecounter.hardware=HPET

# Small receive space, only usable on http-server, on file server this
# should be increased to 65535 or even more
#net.inet.tcp.recvspace=8192

# This is useful on Fat-Long-Pipes
#kern.ipc.maxsockbuf=10485760
#net.inet.tcp.recvbuf_max=10485760
#net.inet.tcp.recvbuf_inc=65535

# Small send space is useful for http servers that serve small files
# Autotuned since 7.x
net.inet.tcp.sendspace=16384

# This is useful on Fat-Long-Pipes
#net.inet.tcp.sendbuf_max=10485760
#net.inet.tcp.sendbuf_inc=65535

# Turn off receive autotuning
# You can play with it.
#net.inet.tcp.recvbuf_auto=0
#net.inet.tcp.sendbuf_auto=0

# This should be enabled if you going to use big spaces (>64k)
# Also timestamp field is useful when using syncookies
net.inet.tcp.rfc1323=1
# Turn this off on high-speed, lossless connections (LAN 1Gbit+)
net.inet.tcp.delayed_ack=0

# This feature is useful if you are serving data over modems, Gigabit Ethernet,
# or even high speed WAN links (or any other link with a high bandwidth delay product),
# especially if you are also using window scaling or have configured a large send window.
# Automatically disables on small RTT ( http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/tcp_subr.c?#rev1.237 )
# This sysctl was removed in 10-CURRENT:
# See: http://www.mail-archive.com/svn-src-head@freebsd.org/msg06178.html
#net.inet.tcp.inflight.enable=0

# TCP slowstart algorithm tunings
# Here we are assuming VERY uncongested network
# Only takes effect if net.inet.tcp.rfc3390 is set to 0
# Otherwise formula teken from http://tools.ietf.org/html/rfc3390
#net.inet.tcp.slowstart_flightsize=10
#net.inet.tcp.local_slowstart_flightsize=100

# Disable randomizing of ports to avoid false RST
# Before usage check SA here www.bsdcan.org/2006/papers/ImprovingTCPIP.pdf
# (it’s also says that port randomization auto-disables at some conn.rates, but I didn’t checked it thou)
#net.inet.ip.portrange.randomized=0

# Increase portrange
# For outgoing connections only. Good for seed-boxes and ftp servers.
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535

#
# stops route cache degregation during a high-bandwidth flood
# http://www.freebsd.org/doc/en/books/handbook/securing-freebsd.html
#net.inet.ip.rtexpire=2
net.inet.ip.rtminexpire=2
net.inet.ip.rtmaxcache=1024

# Security
net.inet.ip.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.maskrepl=0
net.inet.icmp.log_redirect=0
net.inet.icmp.drop_redirect=1
net.inet.tcp.drop_synfin=1
#
# There is also good example of sysctl.conf with comments:
# http://www.thern.org/projects/sysctl.conf
#
# icmp may NOT rst, helpful for those pesky spoofed
# icmp/udp floods that end up taking up your outgoing
# bandwidth/ifqueue due to all that outgoing RST traffic.
#
#net.inet.tcp.icmp_may_rst=0

# Security
net.inet.udp.blackhole=1
net.inet.tcp.blackhole=2

# IPv6 Security
# For more info see http://www.fosslc.org/drupal/content/security-implications-ipv6
# Disable Node info replies
# To see this vulnerability in action run `ping6 -a sglAac ::1` or `ping6 -w ::1` on unprotected node
net.inet6.icmp6.nodeinfo=0
# Turn on IPv6 privacy extensions
# For more info see proposal http://unix.derkeiler.com/Mailing-Lists/FreeBSD/net/2008-06/msg00103.html
net.inet6.ip6.use_tempaddr=1
net.inet6.ip6.prefer_tempaddr=1
# Disable ICMP redirect
net.inet6.icmp6.rediraccept=0
# Disable acceptation of RA and auto linklocal generation if you don’t use them
#net.inet6.ip6.accept_rtadv=0
#net.inet6.ip6.auto_linklocal=0

# Increases default TTL, sometimes useful
# Default is 64
net.inet.ip.ttl=128

# Lessen max segment life to conserve resources
# ACK waiting time in miliseconds
# (default: 30000. RFC from 1979 recommends 120000)
net.inet.tcp.msl=5000

# Max bumber of timewait sockets
net.inet.tcp.maxtcptw=200000
# Don’t use tw on local connections
# As of 15 Apr 2009. Igor Sysoev says that nolocaltimewait has some buggy realization.
# So disable it or now till get fixed
#net.inet.tcp.nolocaltimewait=1

# FIN_WAIT_2 state fast recycle
net.inet.tcp.fast_finwait2_recycle=1

# Time before tcp keepalive probe is sent
# default is 2 hours (7200000)
#net.inet.tcp.keepidle=60000

# Should be increased until net.inet.ip.intr_queue_drops is zero
net.inet.ip.intr_queue_maxlen=4096

# Protocol decoding in interrupt thread.
# If you have NIC that automatically sets flow_id then it’s better to not use direct_force, and use advantages of multithreaded netisr(9)
# If you have Yandex drives you better off with net.isr.direct_force=1 and net.inet.tcp.read_locking=0 otherwise you may run into some TCP related problems
# If you have old NIC that don’t set flow_ids you may need to patch ip_input to manually set FLOW_ID via nh_m2flow
# FreeBSD 8+
#net.isr.direct=1
#net.isr.direct_force=1
# In FreeBSD 9+ it was renamed to
#net.isr.dispatch=direct

# This is for routers only
#net.inet.ip.forwarding=1
#net.inet.ip.fastforwarding=1

# This speed ups dummynet when channel isn’t saturated
net.inet.ip.dummynet.io_fast=1
# Increase dummynet(4) hash
#net.inet.ip.dummynet.hash_size=2048
#net.inet.ip.dummynet.max_chain_len

# Should be increased when you have A LOT of files on server
# (Increase until vfs.ufs.dirhash_mem becomes lower)
vfs.ufs.dirhash_maxmem=67108864

# Note from commit http://svn.freebsd.org/base/head@211031 :
# For systems with RAID volumes and/or virtualization envirnments, where
# read performance is very important, increasing this sysctl tunable to 32
# or even more will demonstratively yield additional performance benefits.
vfs.read_max=32

# Explicit Congestion Notification (see http://en.wikipedia.org/wiki/Explicit_Congestion_Notification)
net.inet.tcp.ecn.enable=1

# Flowtable – flow caching mechanism
# Useful for routers
#net.inet.flowtable.enable=1
#net.inet.flowtable.nmbflows=65535

# IPFW dynamic rules and timeouts tuning
# Increase dyn_buckets till net.inet.ip.fw.curr_dyn_buckets is lower
net.inet.ip.fw.dyn_buckets=65536
net.inet.ip.fw.dyn_max=65536
net.inet.ip.fw.dyn_ack_lifetime=120
net.inet.ip.fw.dyn_syn_lifetime=10
net.inet.ip.fw.dyn_fin_lifetime=2
net.inet.ip.fw.dyn_short_lifetime=10
# Make packets pass firewall only once when using dummynet
# i.e. packets going thru pipe are passing out from firewall with accept
#net.inet.ip.fw.one_pass=1

# shm_use_phys Wires all shared pages, making them unswappable
# Use this to lessen Virtual Memory Manager’s work when using Shared Mem.
# Useful for databases
#kern.ipc.shm_use_phys=1

# ZFS
# Enable prefetch. Useful for sequential load type i.e fileserver.
# FreeBSD sets vfs.zfs.prefetch_disable to 1 on any i386 systems and
# on any amd64 systems with less than 4GB of avaiable memory
# For additional info check this nabble thread http://old.nabble.com/Samba-read-speed-performance-tuning-td27964534.html
#vfs.zfs.prefetch_disable=0

# On highload servers you may notice following message in dmesg:
# “Approaching the limit on PV entries, consider increasing either the
# vm.pmap.shpgperproc or the vm.pmap.pv_entry_max tunable”
vm.pmap.shpgperproc=2048

=========================================================================

Como podem ver existem muitas variáveis que alteradas de forma correta, podem fazer com que o nosso servidor fique mais seguro, mais rápido, mais estável e principalmente atendendo nossas necessidades. O tuning de um servidor é importante porque nos dá o total controle de como o servidor vai responder às solicitações de carga. Algumas pessoas preferem um sistema mais automático e outras preferem moldar nas suas necessidades. Eu acredito mais em sistemas moldáveis, como é o FreeBSD, pois temos o poder de melhorar onde temos que realmente melhorar.

Existe, logicamente, sempre o lado ruim da questão que é a seguinte: se o sysadmin não souber fazer o tuning correto e o sistema não atender às suas necessidades, este logo culpará o sistema dizendo que não suporta ou não serve para o projeto.

Esse artigo foi feito com dados deste artigo que achei muito interessante e extremamente útil para ser estudado e testado.

Share Button