Archive for the 'FreeBSD/Unix/Linux' Category

Comandos e parâmetros da semana

November 20, 2009

Durante essa semana aprendi uns comandos e parâmetros interessantes para o FreeBSD:

Grep colorido

Eu sei, é frescura, mas é legal, o parâmetro –colour=auto do grep no FreeBSD deixa o texto que casou com a expressão usada destacado em vermelho.

Cmdwatch, um watch (do linux) para FreeBSD

Um comando que eu sentia falta era o watch do Linux, conheci o cmdwacth que faz o mesmo trabalho, para instalar acesse /usr/ports/sysutils/cmdwatch e dê um make install clean.

No “Freeba” não tem tac, vai de tail -r

Outra coisa que precisei essa semana, listar o conteúdo de um arquivo invertendo a saída, no Linux tem comando tac, no FreeBSD você pode usar o tail -r.

Usando PF com FIBs no FreeBSD

November 17, 2009

Com o advento das múltiplas tabelas de roteamento no FreeBSD (FIB) ficou muito fácil distribuir certos tipos de tráfego por determinados links. Por exemplo, vamos supor que temos 2 links com respectivos gateways 192.168.1.254 e 10.10.1.254, para adicionar as duas rotas como default em 2 tabelas diferentes faça o seguinte:

  • route add default 192.168.1.254
  • setfib 1 route add default 10.10.1.254

Agora temos a tabela 0 com a rota default 192.168.1.254 e a tabela 1 com a rota default 10.10.1.254, agora vamos enviar todo tráfego para porta 25 para o segundo link (10.10.1.254) usando o PF:

  • pass in quick on $int_if from any to port 25 rtable 1

Fonte: Lista do FUG.

Remontando partições no FreeBSD

November 17, 2009

Para remontar uma partição no FreeBSD enquanto ela está sendo usada use o parâmetro -u do comando mount. Por exemplo, você precisa remontar uma partição para adicionar as flags noexec, nosuid e noatime. O comando ficaria assim:

  • mount -urw -o noexec,nosuid,noatime /particao.

Rotacionando os logs do Squid com o Newsyslog no FreeBSD

September 19, 2009

O Newsyslog é uma ferramenta do FreeBSD criada para manutenção de logs, ela é usada pelo sistema para rotacionar logs como o /var/log/messages, /var/log/auth.log e etc. O link abaixo mostra como usá-la para rotacionar e compactar os logs do Squid, não se esqueça de colocar “logfile_rotate 0” no seu squid.conf.

REFERÊNCIA

Lista de idéias para o FreeBSD 9.0

September 18, 2009

Durante uma sessão de brainstorm entre os desenvolvedores do FreeBSD, algumas coisas interessantíssimas sairam daquelas mentes, como suporte a Xen dom0, melhorias para o VirtualBox e mais um monte de coisas.

REFERÊNCIA

ZFS considerado pronto para produção no FreeBSD 8

September 15, 2009

O ZFS agora é considerado pronto para produção no FreeBSD 8 segundo seus desenvolvedores. Isso realmente foi uma boa notícia, agora é só esperar o FreeBSD 8-RELEASE ficar pronto.

REFERÊNCIA 1REFERÊNCIA 2

Alterando o Splash da inicialização do Ubuntu

September 10, 2009

A pedidos de um cliente, precisei alterar o Splash da inicialização do Ubuntu para colocar o logo da empresa dele (“afff”, eu sei), o link no final do texto resolveu o meu problema. Basta converter a imagem que você quer usar para PNG, eu deixei com uma resolução de 1024×768 e 256 cores. Bem, baixe um splash de exemplo (compativel com o Splashy (vide link)), descompacte e altere o arquivo XML que está dentro dele, é possível alterar todas as características do Splash (cor da barra de progresso, tamanho e etc).

Não é necessário baixar o Splashy como descrito no texto, ele já está nos repositórios do ubuntu, instale via aptitude.

LINK NO FINAL DO TEXTO

Kernel Linux agora suporta até 64TB de memória

August 31, 2009

O desenvolvedor Rik van Riel adicionou um patch no Kernel Linux que fez com que o suporte a memória passasse de 16TB (2^44) para 64TB (2^46) em arquiteturas 64 bits.

REFERÊNCIA

IPFW com ALTQ

August 18, 2009

O ALTQ (Alternate Queueing) é um sistema de enfileiramento de pacotes amplamente usado para implementação de QoS. Muitos administradores de redes que trabalham com *BSD estão acostumados a com a utilização do PF para implementação do ALTQ. Mas também é possível a utilização dele com o IPFW. Vamos ver:

O primeiro passo é compilar o kernel do seu BSD (FreeBSD no meu caso) com as opções necessárias, precisaremos usar o PF para a configuração inicial do ALTQ (se alguém conhecer uma ferramenta específica para gerenciamento das filas, comentários serão bem vindos). Bem, adicione as seguintes linhas no arquivo de configurações do seu kernel:

#PF
device          pf

#ALTQ
options        ALTQ
options        ALTQ_RED
options        ALTQ_RIO
options        ALTQ_CBQ
options        ALTQ_CDNR
options        ALTQ_PRIQ
options        ALTQ_HFSC
options        ALTQ_NOPCC # se você usa sistemas SMP

# IPFIREWALL
options        IPFIREWALL
options        IPFIREWALL_VERBOSE
options        IPFIREWALL_FORWARD
options        IPFIREWALL_NAT
options        IPFIREWALL_DEFAULT_TO_ACCEPT
options        LIBALIAS
options        IPSTEALTH
options        DUMMYNET
options        IPDIVERT

Fiz uma regra de exemplo do ALTQ com subfilas e uso dos algoritmos de detecção e controle de congestionamento para demonstrar que é possível utilizá-lo no IPFW da mesma maneira como seria usado no PF. No seu pf.conf:

altq on nfe0 cbq bandwidth 100Mb queue { http, msn, resto }
.     queue http bandwidth 10% cbq(rio,default)
.     queue msn  bandwidth 10%
.     queue resto bandwidth 80% cbq(borrow, red) { smtp, pop }
.         queue smtp bandwidth 50%
.         queue pop  bandwidth 50% cbq(ecn)

Ative o PF e carregue as regras: pfctl -e -f /etc/pf.conf

Para mandar o tráfego do IPFW para o ALTQ, ative-o com o comando: ipfw enable altq

A regra abaixo envia para fila filha smtp todo o tráfego que sai na interface nfe0 pela porta 25:

ipfw add 50 allow altq smtp tcp from any to any 25 via nfe0 out

Você pode verificar o tráfego nas filas com o comando: pfctl -vvsq

REFERÊNCIA

Priorização de pacotes que passam pelo Squid

August 17, 2009

Tive um problema com priorização de tráfego quando precisei priorizar os pacotes vindos de uma determinada maquina na rede que passavam pelo Squid. Acontece que quando o tráfego passava pelo Squid, ele passava a ser local e não da máquina que o enviou originalmente. Sendo assim, não casava com a regra do firewall que enviava os pacotes da máquina interna para a fila de priorização. Bem, o Squid possui uma opção chamada tcp_outgoing_tos que serve para marcar com uma determinada flag o campo Type of Service do pacote. Foi com essa opção que consegui resolver o problema, marquei todos os pacotes que saiam do Squid vindos da máquina da rede interna e posteriormente usei a verificação de ToS do IPFW para mandar esses pacotes para a fila de priorização. Mão na massa.

Adicionei as seguintes opções no meu squid.conf:

acl barba src 172.16.1.100/32
tcp_outgoing_tos 0×02 barba

Você pode usar o tcpdump verificar se os pacotes estão sendo marcados de fato:
barba# tcpdump -nXi vr0 dst port 80


0×0000:  4502 003c e59f 4000 4006 fb0e c0a8…
0×0010:  4593 5326 30f0 0050 9322 93f3 0000…
0×0020:  a002 ffff adf7 0000 0204 05b4 0103…
0×0030:  0402 080a 00bd e6e8 0000 0000…

O segundo par de 4 bits do cabeçalho IP é o campo ToS, podemos verificar no fragmento do dump acima que ele está marcado com a flag que indicamos no Squid (IPTOS_MINCOST).

Muito bem, a regra do IPFW que vai enviar os pacotes com a marcação para o ALTQ (estou usando ALTQ para priorização, será o próximo artigo que vou escrever) ficará parecida com a regra abaixo:

ipfw -q add 160 allow altq p_altissima \
ip from any to any 80 via vr0 out iptos \
mincost keep-state