Post em Destaque

Feliz Natal e fechando com dica do fsck automático

Gostaria de desejar, em nome de todos da BSDInfo, um feliz Natal para todos os leitores do nosso blog. Que a paz e muita saúde estejam com vocês e esperamos fazer mais em 2013. Aproveitando deixo aqui uma pequena dica para quem tem servidores à distância. Pode ocorrer em algum momento a necessidade...

Leia mais...

Testando a performance da sua rede com o iperf

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 27-04-2012

Tags:, ,

0

Hoje veremos uma ferramenta muito interessante chamada iperf que nos permite testar a nossa taxa de transferência entre 2 pontos na nossa rede. Dessa forma poderíamos, por exemplo, testar quanto um equipamento está suportando transferir tanto em download quanto em upload.

O iperf pode ser encontrado para BSD no ports, Linux, Windows usando cygwin e Mac OS. Ele é uma ferramenta cliente/servidor onde o cliente envia os pacotes para o servidor descartar e assim fazer a análise da performance.

Abaixo vou dar um exemplo, mas fazendo: man iperf vais encontrar uma excelente documentação sobre os parâmetros existentes.

Vamos pegar 2 máquinas rodando FreeBSD e instalar o iperf em cada uma delas através do ports:

# cd /usr/ports/benchmarks/iperf

# make install clean distclean

O iperf pode fazer testes individuais como somente de upload, download ou ambos bi-direcionalmente. Vamos escolher uma máquina para ser o cliente e a outra para rodar como server. O cliente é quem envia os pacotes e por isso testa o upload mas em modo bi-direcional o mesmo faz o envio e também recebe do server testando assim upload e download.

Em uma máquina de IP 192.168.0.1 vamos rodar assim:

# iperf -s

Isso faz com que ele rode em modo server, esperando as conexões.

Na outra máquina de IP 192.168.0.2 rodaremos como client assim de exemplo:

# iperf -c 192.168.0.1 -t 60 -f m -d -L 3000 -P 10

Nesse exemplo acima estamos dizendo para o iperf enviar os pacotes para o IP 192.168.0.1 que é nosso server de testes, tempo de teste de 60 segundos, o “-d” diz que será bi-direcional o teste (download e upload), “-L 3000” diz a porta que o server vai usar para fazer o acesso contrário para o teste bi-direcional, o “-P 10” diz quantas conexões simultâneas, nesse caso coloquei 10 e o “-f m” para mostrar os resultados em mbps.

Por padrão o protocolo usado é o TCP mas pode ser usado UDP também.

Abaixo a saída do teste:

# iperf -c 192.168.0.1 -t 60 -f m -d -L 3000 -P 10

————————————————————
Server listening on TCP port 3000
TCP window size: 0.06 MByte (default)
————————————————————
————————————————————
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 0.03 MByte (default)
————————————————————
[ 14] local 192.168.0.2 port 15056 connected with 192.168.0.1 port 5001
[  8] local 192.168.0.2 port 14193 connected with 192.168.0.1 port 5001
[  7] local 192.168.0.2 port 11420 connected with 192.168.0.1 port 5001
[ 11] local 192.168.0.2 port 37950 connected with 192.168.0.1 port 5001
[ 12] local 192.168.0.2 port 28811 connected with 192.168.0.1 port 5001
[ 13] local 192.168.0.2 port 16575 connected with 192.168.0.1 port 5001
[  3] local 192.168.0.2 port 46848 connected with 192.168.0.1 port 5001
[  9] local 192.168.0.2 port 44703 connected with 192.168.0.1 port 5001
[ 10] local 192.168.0.2 port 38972 connected with 192.168.0.1 port 5001
[  4] local 192.168.0.2 port 27373 connected with 192.168.0.1 port 5001
[  6] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 55321
[ 17] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 37120
[ 16] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 51996
[ 15] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 51216
[ 18] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 17844
[ 19] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 53913
[ 22] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 38914
[ 21] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 61725
[ 20] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 33246
[ 23] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 18179

[ ID] Interval       Transfer     Bandwidth
[  9]  0.0-60.1 sec   172 MBytes  24.0 Mbits/sec
[ 23]  0.0-60.1 sec   151 MBytes  21.0 Mbits/sec
[  8]  0.0-60.1 sec   178 MBytes  24.9 Mbits/sec
[  7]  0.0-60.1 sec   207 MBytes  28.9 Mbits/sec
[ 11]  0.0-60.1 sec   165 MBytes  23.1 Mbits/sec
[ 12]  0.0-60.1 sec   124 MBytes  17.3 Mbits/sec
[  4]  0.0-60.1 sec   148 MBytes  20.7 Mbits/sec
[ 15]  0.0-60.1 sec   141 MBytes  19.6 Mbits/sec
[ 22]  0.0-60.1 sec   109 MBytes  15.2 Mbits/sec
[ 20]  0.0-60.1 sec   120 MBytes  16.7 Mbits/sec
[ 13]  0.0-60.2 sec   146 MBytes  20.3 Mbits/sec
[ 10]  0.0-60.2 sec   162 MBytes  22.6 Mbits/sec
[ 21]  0.0-60.2 sec   163 MBytes  22.7 Mbits/sec
[  3]  0.0-60.3 sec   140 MBytes  19.5 Mbits/sec
[  6]  0.0-60.3 sec   133 MBytes  18.5 Mbits/sec
[ 16]  0.0-60.3 sec   121 MBytes  16.9 Mbits/sec
[ 14]  0.0-60.3 sec   131 MBytes  18.2 Mbits/sec
[SUM]  0.0-60.3 sec  1573 MBytes   219 Mbits/sec
[ 17]  0.0-60.3 sec   125 MBytes  17.3 Mbits/sec
[ 19]  0.0-60.5 sec   121 MBytes  16.7 Mbits/sec
[ 18]  0.0-64.7 sec   104 MBytes  13.4 Mbits/sec
[SUM]  0.0-64.7 sec  1286 MBytes   167 Mbits/sec

O primeiro [SUM] é o somatório referente ao upload que no meu caso deu 219Mbps de transferência porque eu já tinha um tráfego saindo no momento do meu teste e porque desses 2 equipamentos que usei, um deles é o meu router em outra Cidade. O outro [SUM] de 167Mbps é referente ao tráfego de download. Você também pode acompanhar o consumo total de banda usando um outro aplicativo como nload que também pode ser encontrado no ports do FreeBSD.

Fica aqui mais esse ferramenta importante para avaliarmos nossa rede. Be happy!

 

Share Button

Como saber de forma rápida e prática se perdeu alguma lib importante

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 22-04-2012

Tags:,

8

Uma das coisas que mais acontecem quando atualizamos determinados pacotes ou até mesmo o sistema FreeBSD é alguma lib que já existia ser atualizada e os programas que já haviam sido instalados e compilados com aquela lib antiga, darem pau.

Normalmente isso ocorre com alguma lib muito utilizada como foi o caso recentemente do pacote pcre-8.30_1 que vem a libpcre que contém funções de expressões regulares e que são utilizadas por aplicações importantes como: Postfix e PHP

Nesse caso todos os pacotes que estavam usando a libpcre após a atualização, quebraram e você não percebeu. Vai perceber quando os serviços caírem e não levantarem mais. Por isso é sempre bom fazer uma checagem após as atualizações e existe um pacote muito importante que pode lhe ajudar nessa tarefa de checar todos os pacotes instalados no sistema e lhe dizer quem precisa ser recompilado.

O nome do “santo” aqui é o bsdadminscripts que possui algumas ferramentas e a que vamos usar é a pkg_libchk. Mãos à obra:

# cd /usr/ports/sysutils/bsdadminscripts

# make install clean distclean

Após a instalação o comando à seguir vai ler todos os pacotes instalados e se tiver algum quebrado será mostrado:

# pkg_libchk -q -r

Com a lista de pacotes quebrados você já saberá o que precisa ser recompilado. Como eu utilizo o portmaster para gerenciar meus pacotes, o trabalho fica bem mais tranquilo. Mas cada um usa o que achar melhor, o importante é saber o que consertar.

É isso aí pessoal.

Share Button

Quando serviços ficam caindo… o que fazer até a solução chegar?

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 22-04-2012

Tags:, , ,

3

Serviços rodando não deveriam cair simplesmente do nada. Muitos deles informam a causa em seus logs ou tentam pelo menos dar uma dica do problema. Pode estar relacionado muitas das vezes com problemas de memória como os segfaults (signal 11) mas as vezes os segfaults podem indicar um bug na aplicação que em algum momento esta simplesmente fecha. O fato é que você precisa investigar o que esta causando o problema mas enquanto isso você precisa garantir que o serviço não pare. Existe uma ferramenta chamada daemontools que monitora um determinado serviço que desejar e se o mesmo cair, instantaneamente o daemontools trata de levantá-lo. É a famosa “gambiarra”.

Para instalarmos o daemontools farei com exemplo o serviço do radius, pois se este cair a autenticação de vários clientes parariam aqui no meu caso:

# cd /usr/ports/sysutils/daemontools

# make install clean distclean

Após instalarmos criaremos o diretório de monitoramento do nosso serviço de exemplo, o radius:

# mkdir -p /var/service/radius

Dentro desse diretório que criamos, você criará um arquivo chamado run com o seguinte conteúdo:

#!/bin/sh
exec fghack /usr/local/sbin/radiusd

Nesse caso o daemontools vai iniciar o /usr/local/sbin/radiusd. Não vamos habilitar o radius no /etc/rc.conf porque o próprio daemontools vai se encarregar de levantar o serviço. Veja que estou dando um exemplo com o radiusd mas que pode ser aplicado à outros serviços.

# chmod 755 /var/service/radius/run

Não podemos deixar de dar permissão de execução para o nosso script. O nome dele precisa ser run. Ok?

Se for monitorar outros serviços basta criar outros subdiretórios dentro do /var/service e os devidos arquivos run.

Para finalizarmos nosso exemplo colocamos a seguinte configuração no /etc/rc.conf:

svscan_enable=”YES”
svscan_servicedir=”/var/service”

Agora podemos iniciar o daemontools e quando fizermos isso, todos os serviços que ele estiver monitorando serão levantados:

# /usr/local/etc/rc.d/svscan start

Vejamos o que ele fez:

# ps afx|grep radius
1587  ??  I         0:00.12 supervise radius
35029  ??  I         0:00.00 fghack /usr/local/sbin/radiusd
35031  ??  Ss       57:22.67 /usr/local/sbin/radiusd

O PID 35031 é o nosso radius rodando propriamente dito, os outros são o daemontools fazendo seu papel. Se quiser fazer um teste basta fazer um kill -9 no 35031 e verá que o mesmo será levantado instantaneamente. 🙂

Bem é isso, be happy!

PS: Sempre verifique o motivo das quedas, veja nos logs, contate o mantenedor do port, busque a solução e não a gambiarra.  🙂

Share Button

Comandos que todo bom admin deveria saber

Posted by gondim | Posted in Dicas | Posted on 19-04-2012

Tags:, , ,

0

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 está o Unix Toolbox.

Share Button

PPPoE client no FreeBSD, do ppp ao mpd.

Posted by gondim | Posted in FreeBSD | Posted on 17-04-2012

Tags:, , ,

0

Com o crescimento da banda larga no Brasil e diminuição dos valores cobrados pelas operadoras, as empresas cada vez mais contratam links não dedicados para acesso à Internet. Tais links, na maioria das vezes, vem acompanhados de um protocolo chamado PPPoE.

O FreeBSD vem com um cliente nativo para fazer essa conexão PPPoE (ppp) e um outro muito mais parrudo que pode ser instalado via ports, chamado mpd. O mpd é um software polivalente porque ele faz quase tudo em 1. Ele pode fazer pppoe client, pppoe server, pptp server, pptp client e outras coisinhas lá.

Se você está recebendo agora o link do seu ISP e ele exige que você faça uma conexão PPPoE, você só as seguintes opções:

1ª Colocar um router e compartilhar para a sua rede.

ou

2ª Ligar o link no seu Windão e fazer a configuração do PPPoE.

ou

3ª Usar outro sistema que tenha suporte ao PPPoE.

ou

4ª Deixar o seu FreeBSD fazer todo o trabalho de conexão e ainda agregar outras coisas à ele como: Proxy, Firewall, dhcp para a sua rede, redundância de link/balanceamento e o que lhe for mais útil.

Vamos primeiramente configurar o PPPoE nativo e depois com a Internet funcionando poderemos instalar o mpd:

Salvando a configuração atual do ppp.conf:

# cp /etc/ppp/ppp.conf /etc/ppp/ppp.conf.bkp

Depois zerem o arquivo original:

# >/etc/ppp/ppp.conf

Agora com um editor ee ou vi ou seu editor preferido coloque esses dados dentro do arquivo ppp.conf:

default:
      ident user-ppp VERSION (built COMPILATIONDATE)
      set log phase
      set log local phase lcp ipcp ccp tun command
intnet:
      set device PPPoE:em0:Intnet5
      set mru 1492
      set mtu 1492
      set authname gondim
      set authkey 12345678
      set login
      set dial
      enable dns
      add default HISADDR
      set timeout 0
      open

Reparem na identação pois temos 2 sessões chamadas “default:” e “intnet:”. O que vem abaixo deles está identado um ou mais espaços para a direita. Onde tem “intnet:” você pode trocar para o nome do seu provedor. Exemplo: velox:

Mais abaixo tem a linha: set device PPPoE:em0:Intnet5  onde você vai alterar para:

device PPPoE:<sua_interface_de_rede_de_saída>:<nome_do_serviço>

Se você não souber o nome do serviço então você pode remove-lo ficando assim como exemplo:

device PPPoE:em0

O em0 é nome da minha interface de rede e que por um acaso é onde está ligado o cabo de rede do Provedor.

Em authname gondim você vai colocar seu login de acesso no provedor. Exemplo de um acesso ao Velox:

set authname [email protected] 

Em set authkey você vai colocar a sua senha de acesso.  Exemplo aqui do Velox seria:

set authkey 2266666666

O restante na conexão você vai receber o DNS do seu provedor, IP e gateway default. Tudo na interface tun0.

Para testar a conexão só executar:

# ppp -ddial intnet

Onde intnet é o nome que  escolhi na sessão no ppp.conf. Se conectar certinho quando você fizer o ifconfig vai ver que a interface tun0 vai estar com o IP dado pelo provedor da conexão.

([email protected])[/etc/ppp]# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
options=80000<LINKSTATE>
inet 186.xxx.48.69 –> 10.247.0.1 netmask 0xffffffff
Opened by PID 447

Se for querer parar por aqui e quiser usar apenas essa configuração, você pode colocar isso tudo no /etc/rc.conf para que conecte automaticamente após o boot do sistema:

# Configurando a conexão PPPoE
ppp_enable=”YES”
ppp_mode=”ddial”
ppp_profile=”intnet”

Só não esqueça de trocar o ppp_profile para o nome que você escolheu na sessão no ppp.conf.

Uma vez que estamos conectados na Internet agora podemos passar para o mpd. O mpd que instalaremos será a versão 5:

# cd /usr/ports/net/mpd5

# make install clean distclean

Após a instalação do mpd as configurações serão colocadas em /usr/local/etc/mpd5.

No diretório de configuração encontraremos 3 arquivos exemplos: mpd.conf.sample, mpd.script.sample e mpd.secret.sample

Para o nosso caso usaremos o mpd.conf.sample que renomearemos para mpd.conf

# cd /usr/local/etc/mpd5

# mv mpd.conf.sample mpd.conf

Abaixo meu exemplo de configuração:

startup:
      # configure mpd users
      set user gondim minha_senha admin
      # configure the console
      set console self 127.0.0.1 5005
      set console open
      # configure the web server
      set web self 0.0.0.0 5006
      set web open

default:
      load pppoe_client

pppoe_client:
      create bundle static B1
      set iface route default
      set ipcp ranges 0.0.0.0/0 0.0.0.0/0
      create link static L1 pppoe
      set link action bundle B1
      set auth authname gondim
      set auth password senha_provedor
      set link max-redial 0
      set link mtu 1492
      set link keep-alive 10 60
      set pppoe iface em0
      set pppoe service “”
      open

Muito cuidado com a identação porque é importante para o bom funcionamento. Não esqueça de alterar as linhas abaixo para o usuário, senha de conexão do seu provedor e a interface de rede onde entra o cabo do Provedor:

set auth authname gondim

set auth password senha_provedor

set pppoe iface em0

No bloco startup é bom definir um  usuário e senha para acesso via console e web do mpd. O mpd também oferece 2 interfaces de administração sendo elas via console e web. Você pode mantê-las habilitadas ou não. Não é nosso objetivo aqui nos aprofundar no mpd mas para aqueles que se interessarem, aqui vai o link da documentação: mpd5

Para deixarmos a conexão sendo feita no boot vamos adicionar a seguinte linha no /etc/rc.conf:

mpd_enable=”YES”

É isso aí pessoal e até a próxima!

Share Button

Instalação AMP

Posted by lgvalentim | Posted in Dicas, FreeBSD | Posted on 16-04-2012

Tags:

0

Sei que para muitos parece simples, mas para os que estão chegando também temos que dar atenção.

Neste guia será apresentada uma instalação básica de Apache, MySQL e PHP no FreeBSD

MYSQL
Acessar o  ports do MySQL

cd /usr/ports/databases/mysql50-server

2. Compilar e instalar o port

make && make install

3. Editar o ficheiro /etc/rc.conf e acrescentar a seguite linha para garantir que o MySQL inicie automaticamente

mysql_enable=”YES”

4. Reiniciar o sistema

shutdown -r now

5. Definir um password para o utilizador root do MySQL

mysqladmin -u root password ‘nova password’

APACHE

Acessar o ports do Apache

cd /usr/ports/www/apache22

2. Compilar e instalar o apache

make && make install

3. Na listagem de opções não esquecer de confirmar a opção MySQL

4. Editar o ficheiro /etc/rc.d e adicionar a seguinte linha

apache22_enable=’YES’

PHP

1. Acessar o port do php

cd /usr/ports/lang/php5

2. compilar

make && make install

3. confirmar a opção para compilar o modulo para o Apache

4. Acessar o port  php5-extensions

cd /usr/ports/lang/php5-extensions

5. compilar

make && make install

6. Copiar o ficheiro de configuração do php

cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

7.Editar o ficheiro de configuração do Apache (/usr/local/etc/apache22/httpd.conf) e acrescentar as seguintes linhas:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

8.Procurar a linha:

DirectoryIndex index.html

e alterar para:

DirectoryIndex index.php index.html

9.Iniciar o Servidor de Apache

/usr/local/etc/rc.d/apache22 start

 

Bem… #ficaadica

Share Button

CPU Affinity, uma brincadeira de criança.

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 16-04-2012

Tags:, ,

0

Nem sempre é uma boa ideia ter processos migrando de CPU o tempo todo, pois pode atrapalhar o desempenho de algumas aplicações no seu sistema. Aqui vou falar de um caso muito especial que é quando você tem um grande tráfego de rede tipo acima de 100Mbps. Quando temos um grande tráfego de dados nas interfaces de rede e a irq delas muda de CPU isso pode causar um load maior no sistema e até perda de pacotes na transmissão. Então nos resta fixar aquela interface de rede à uma CPU específica e faremos isso usando um recurso chamado CPU Affinity. Muitos sistemas possuem esse recurso assim como GNU/Linux e FreeBSD. Sendo que o mais intuitivo e simples que já vi, foi o do FreeBSD. Enquanto o primeiro sistema precisa usar o /proc e formas meio toscas para isso, no FreeBSD temos a ferramenta cpuset que faz o que se propõe e cujo man é muito bem documentado com exemplos. Podemos fazer CPU Affinity com process id, set id, thread id e irq. Faremos uso aqui do irq para colocarmos nossas interfaces de rede em CPUs específicas.

Vamos começar listando nossas CPUs, isso pode ser visto pelo comando: top -P ou fazendo:

# cpuset -g
pid -1 mask: 0, 1, 2, 3, 4, 5, 6, 7

Nesse meu caso temos de 0 à 7. Agora precisaremos descobrir as interrupções das interfaces de rede. Não a interrupção que vemos no dmesg mas aquela que o próprio FreeBSD gerou virtualmente.

O melhor comando que conheço para fazer a tarefa de descobrir a irq é o devinfo:

# devinfo -rv | less

Procure pela sua interface de rede, no meu caso aqui uma Intel PCI-e de nome em0 e achei esse trecho:

            em0 pnpinfo vendor=0x8086 device=0x10d3 subvendor=0x8086 subdevice=0x34da at slot=0 function=0 handle=\_SB_.PCI0.MRP1.HART
Interrupt request lines:
256
257
258

Achamos então as interrupções 256, 257 e 258 da em0. Agora vamos dizer que eu queira jogá-las em CPUs diferentes:

/usr/bin/cpuset -l 5 -x 256
/usr/bin/cpuset -l 6 -x 257
/usr/bin/cpuset -l 7 -x 258

Com os comandos acima eu disse que a irq 256 vai para a CPU 6, 257 na CPU 7 e 258 na CPU 8.

Parece até a propaganda da Oi… Simples assim rsrsr

Esses comandos você pode adicionar em um arquivo /etc/rc.local se existir, caso não exista basta criá-lo e colocar esses comandos assim:

#!/bin/sh

/usr/bin/cpuset -l 5 -x 256
/usr/bin/cpuset -l 6 -x 257
/usr/bin/cpuset -l 7 -x 258

Depois um chmod +x /etc/rc.local

Mais dúvidas… o man cpuset, como eu disse, é muito bem documentado.

Share Button

Uma outra maneira organizada de configurar interfaces de rede

Posted by gondim | Posted in Dicas | Posted on 14-04-2012

Tags:,

1

Muita gente está acostumada à usar o /etc/rc.conf para diversas configurações no FreeBSD, como hostname, serviços de rede e tudo mais que estiver em /etc/defaults/rc.conf, inclusive as configurações das interfaces de rede.

Normalmente um exemplo simples de /etc/rc.conf:

defaultrouter=”186.xxx.48.1″
hostname=”zeus.dominio.com.br”
ifconfig_igb0=”inet 186.xxx.48.15  netmask 255.255.255.224″
keymap=”br275.iso.acc”

Reparem que existe a linha com o parâmetro ‘ifconfig_igb0‘ onde configuramos o IP da nossa interface de rede cujo driver é o igb aqui no nosso exemplo. Uma curiosidade bem legal que você pode fazer um man if_<driver_interface_rede> que você verá um manual do driver daquela interface. Ex: man if_em, man if_re, man if_rl e por aí vai.

Quando você tem uma interface de rede no servidor é mais fácil e rápido configurar no rc.conf mas a coisa fica mais chata quando temos mais interfaces e rotas para serem gerenciadas de forma limpa e clara. Imaginem ainda ter que configurar um link aggregation (lagg) e dentro desse lagg ainda ter que configurar vlans. É por essas e outras que usamos o /etc/start_if.<interface> e dentro dele colocamos toda a configuração que necessitamos como digitaríamos na linha de comando.

Vamos ver um exemplo simples: comentamos ou removemos a linha ifconfig_igb0 do rc.conf e criamos o arquivo /etc/start_if.igb0 com o conteúdo abaixo como no exemplo:

/sbin/ifconfig igb0 186.xxx.48.15/27
/sbin/route add -host 186.xxx.54.69 186.xxx.48.2
/sbin/route add -net 186.xxx.48.32/27 186.xxx.48.2

Basta fazer um reboot e testar sua nova configuração. 🙂

Agora vamos ver uma mais sofisticada com lagg entre as interfaces em2 e em3 e ainda vlans dentro da lagg:

/etc/start_if.em2:

/sbin/ifconfig lagg1 create
/sbin/ifconfig em2 up

/etc/start_if.em3:

/sbin/ifconfig em3 up
/sbin/ifconfig lagg1 laggproto lacp laggport em2 laggport em3 10.10.10.10 netmask 255.255.255.255
/sbin/ifconfig vlan0 create
/sbin/ifconfig vlan1 create
/sbin/ifconfig vlan2 create
/sbin/ifconfig vlan3 create
/sbin/ifconfig vlan0 186.xxx.48.1/27 vlan 3081 vlandev lagg1
/sbin/ifconfig vlan1 177.xxx.240.254/27 vlan 3082 vlandev lagg1
/sbin/ifconfig vlan2 186.xxx.54.1/27 vlan 2126 vlandev lagg1
/sbin/ifconfig vlan3 186.xxx.61.1/27 vlan 3088 vlandev lagg1

Nos exemplos acima fiz uma lagg nas interfaces em2 e em3 com o nome de lagg1. Uma vez criada a lagg, configurei as vlans que falam com cada cidade que tenho no meu router.

O objetivo não é aprender lagg ou vlan mas mostrar que usando esse formato de configuração fica mais claro e fácil de gerenciar uma estrutura mais complexa da sua empresa.

É isso e até a próxima.

Share Button

Você já fez ou está em dia com os seus Backups? Hoje é Sexta-Feira 13!

Posted by gondim | Posted in Shell Script | Posted on 13-04-2012

Tags:,

0

Para quem ainda não tem um script para fazer seus backups. Abaixo um script que utilizo muito e venho compartilhar com todos vocês. Tirando a brincadeira de ser Sexta-Feira 13 um bom backup já salvou minha cabeça muitas vezes e pelos diversos motivos. Alguns deles:

1) HD foi pro saco. Esse sem dúvida é o mais comum.
2) Programador fez uma besteira e ferrou uma determinada tabela da base de dados MySQL. Aconteceu 2 ou 3 vezes comigo. Não sou o programador, só avisando. rsrsr
3) O mesmo programador apagou alguns arquivos de desenvolvimento dele.

E por aí vai… não importa o que foi apagado e sim o dano que isso lhe causará se não tiver o devido backup.
Ou como eu diria em outras palavras: “O salame vai vir você só vai ter que escolher se inteiro ou fatiado!”

Para esse script funcionar basta configurar as variáveis no topo e criar o diretório definido na variável TEMP. Não esqueça de configurar a senha e usuário do mysql para que o script possa fazer os backups e o seu e-mail para que recebas uma notificação sempre que o backup for concluído.

Outra coisa: esse script na verdade gera o backup sempre no mesmo lugar do servidor. Você deveria ter um outro script para coletar esse backup já no Servidor de Backup e armazená-lo conforme suas necessidades. Ex.: com separação por data, mas isso colocarei em um próximo post. Fiquem à vontade em melhorar esse script e se puderem compartilhar as melhorias, elas serão muito bem vindas.  😀

Share Button

Facilitando a vida do DNSSec

Posted by gondim | Posted in Shell Script | Posted on 13-04-2012

Tags:,

0

Alguns admins já usam o DNSSec e provavelmente já fizeram alguma ferramenta para administrar sua lista de domínios. Agora se você tem diversos domínios para converter em DNSSec, precisa fazer a atualização dos mesmos periodicamente e não possui nenhuma ferramenta para isso, seus problemas acabaram. rsrsr Vou mostrar aqui 2 scripts que fiz a long long time que podem lhe ajudar nessa tarefa. Ah! Se você não sabe ainda o que é o DNSSec, porque ele é necessário e como ele funciona aqui vai uma leitura bem bacana nesse link: Porque DNSSec

Então vamos para o nosso primeiro script, o dnssecconv.sh, onde este irá pegar todos os arquivos de domínios com extensão .db, criar as chaves deles, fazer as devidas modificações no named.conf e gerar um arquivo com os dados que precisa para cadastro no Registro.br:

O script dnssecconv.sh deve estar no mesmo diretórios dos arquivos de domínio e antes de rodá-lo faça um backup, porque não me responsabilizo por qualquer dano que esse script possa causar. Estou aqui para ajudar e não para ser responsabilizado por algo.  🙂

Em tempo o arquivo gerado com as informações que você vai precisar é este: dnsseclist.txt

#!/bin/sh
echo “DNSSecConv – 1.1 – Copyright 2011” > dnsseclist.txt
echo “Marcelo Gondim ” >> dnsseclist.txt
echo “http://www.bsdinfo.com.br” >> dnsseclist.txt
echo “`date`” >> dnsseclist.txt
echo “” >> dnsseclist.txt
echo “DNSSEC List” >> dnsseclist.txt
echo “===========” >> dnsseclist.txt
for lista in `ls *.db`; do
if [ “$lista” != “empty.db” -a “$lista” != “localhost-forward.db” -a “$lista” != “localhost-reverse.db” ]; then
   dominio=”`echo $lista|sed -e ‘s%.db%%g’`”
   if [ “`ls K$dominio.*.key 2> /dev/null`” == “” ] ; then
      dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -b 1024 -n ZONE $dominio
      dnssec-signzone -S -z -o $dominio $dominio.db
      sed -i ” -e ‘s%$dominio.db%$dominio.db.signed%g’ /etc/namedb/named.conf
   fi
   ds_field=”`head -1 dsset-$dominio.|awk ‘{print $4}’`”
   hash_field=”`head -1 dsset-$dominio.|awk ‘{print $7}’`”
   echo “$dominio || $ds_field || $hash_field” >> dnsseclist.txt
fi
done

O segundo script é mais simples e só serve para atualizar as chaves, porque de tempo em tempo o Registro.br solicita essa atualização senão o domínio pára de funcionar. Esse script se chama dnssecsync.sh e também deve ser rodado no diretório onde se encontram os arquivos de domínios. Mais uma vez não esqueça do backup. 😉

#!/bin/sh
# DNSSecSync – 1.1 – Copyright 2011
# Marcelo Gondim
# http://www.bsdinfo.com.br
for lista in `ls *.db`; do
   if [ “$lista” != “empty.db” -a “$lista” != “localhost-forward.db” -a “$lista” != “localhost-reverse.db” ]; then
      dominio=”`echo $lista|perl -i -pe ‘s%.db%%g’`”
      dnssec-signzone -S -z -o $dominio $dominio.db
   fi
done

 

Share Button