Olá!

Os dois últimos how-to’s foram sobre o asterisk.

Primeiro, instalamos um servidor asterisk. Depois, fizemos um ATA SPA400-NA interagir com nosso servidor.

Se você “brincou” no asterisk, provavelmente já criou regras de ligação sainte e entrante, utilizando o ATA. OK, mas “eu quero mais” :P

“Eu quero poder escolher por qual das linhas do ATA a ligação vai sair”

Para isto, o ATA obrigatoriamente tem que estar com o firmware atualizado! (leia o how-to anterior!)

Digamos que você criou uma regra (provavelmente utilizando o asterisk-gui) dizendo que o código para efetuar uma ligação sainte pelo ATA seja “100″.

Editando o arquivo /etc/asterisk/extensions.conf, localizado no servidor asterisk, provavelmente sua regra deve ser parecida com esta (o nome do tronco do ATA, no asterisk, seria “ATALinhas”):

exten = _100X.,1,Macro(trunkdial-failover-0.3,${ATALinhas}/${EXTEN:3},,ATALinhas,)

Bom, é só alterar a regra adicionando “LX” (onde “X” é o número da linha pela qual a ligação deve sair) imediatamente antes do número a ser discado. A regra ficaria assim (por exemplo, saindo pela linha 2 do ATA):

exten = _100X.,1,Macro(trunkdial-failover-0.3,${ATALinhas}/L2${EXTEN:3},,ATALinhas,)

Viu que fácil? :)

É só criar as regras que quiser ou precisar, e adicionar o respectivo “LX” em cada uma.

Obs.: não é possível adicionar o “LX” pelo asterisk-gui, pois ele não reconhece o “L”… Isto é específico do ATA, então tem que ser adicionado diretamente pelo arquivo ;)

“OK, agora eu escolho por qual linha sair… Mas como escolho quem atende cada linha?”

Inicialmente, crie uma regra de ligação entrante pelo asterisk-gui. Depois, edite o arquivo /etc/asterisk/extensions.conf localizado no servidor, para alterarmos a regra manualmente.

Para o exemplo abaixo, itens entre “<>” devem ser substituídos pelo seu significado (retirando-se os “<>”).

Este é o exemplo mais complexo possível, pois para cada linha iremos direcionar a ligação para um ramal diferente.

Linhas que iniciam por “;” são comentários sobre a linha imediatamente abaixo, e não são necessárias para a regra.

O “ID da porta …” a que me refiro, é o mesmo que configuramos no how-to anterior, na configuração do próprio ATA.

A regra final fica:

exten = ATALinhas,1,NOOP(${SIP_HEADER(TO)})
;DST será = ID da porta que está chamando no ATA
exten = ATALinhas,n,SET(DST=${CUT(CUT(${SIP_HEADER(TO)},@,1),:,2)})
;Se for o ID da porta 1, executa a próxima linha, senão vai para “n(SegundaLinha)”
exten = ATALinhas,n,Gotoif($[${DST} = <ID da porta 1>]?:SegundaLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 1>,1)
;Se for o ID da porta 2, executa a próxima linha, senão vai para “n(TerceiraLinha)”
exten = ATALinhas,n(SegundaLinha),Gotoif($[${DST} = <ID da porta 2>]?:TerceiraLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 2>,1)
;Se for o ID da porta 3, executa a próxima linha, senão vai para “n(QuartaLinha)”
exten = ATALinhas,n(TerceiraLinha),Gotoif($[${DST} = <ID da porta 3>]?:QuartaLinha)
;Chama o ramal definido
exten = ATALinhas,n,Goto(default,<Ramal que atenderá a linha 3>,1)
;Chama o ramal definido
exten = ATALinhas,n(QuartaLinha),Goto(default,<Ramal que atenderá a linha 4>,1)

Pronto! :)

Lembrando que após alterar e salvar o arquivo, você deve executar um “/etc/rc.d/asterisk reload” para ativar as novas configurações.

Até a próxima!

[]‘s

No how-to anterior instalamos um servidor asterisk. Talvez você também tenha instalado uma placa para telefonia digital (E1).

“OK, mas e minhas linhas analógicas?” Provavelmente sua operadora de telefonia faz “desvio de rota”, fazendo com que os antigos números analógicos sejam redirecionados para o E1…

“OK, mas eu não tenho um canal E1, só tenho algumas linhas analógicas… E queria usar o asterisk… Consigo?” Sim! :)

Você poderia comprar uma placa PCI ou PCI-express que possua portas FXO, ou ainda, comprar alguns ATAs com portas FXO.

Neste how-to, veremos como configurar um ATA Linksys SPA400-NA (4 portas FXO) para “conversar” com o asterisk.

Primeiro, acesse a interface de administração web do ATA, configure um IP para ele (neste how-to usaremos 192.168.50.5). Também configure os demais parâmetros (máscara, gateway, DNS’s, servidor NTP, fuso horário) conforme o seu ambiente.

Após, efetue a atualização do firmware para a versão 1.1.2.2 (acesse o site do ATA para efetuar o download). Esta atualização é necessária para utilizarmos alguns recursos mais “avançados”.

Após feita a atualização, confirme se as configurações iniciais que efetuamos continuam OK.

Depois, acesse a guia “Setup” / “SPA9000 Interface”.

Nesta guia, no campo “User ID” você deve informar qual será o nome do “tronco” no asterisk (neste how-to usaremos “NomeTronco”). Também deve deixar selecionada a opção “Discover automatically”.

Abaixo disto, termos quatro campos para os ID’s de cada uma das portas. Sugiro utilizar nomes que identifiquem as linhas que serão ligadas em cada porta (por exemplo, o próprio número da linha). Neste how-to, vamos supor que os ID’s ficaram “IDPorta1″, “IDPorta2″, “IDPorta3″ e “IDPorta4″.

Bom, no ATA era isto: salve as alterações e vamos para o asterisk-gui.

Acesse o menu “Trunks” na esquerda, depois a aba “VOIP Trunks”. Clique em “New SIP/IAX Trunk”.

No “Type”, selecione “SIP”. Em “Context Naming”, selecione “based on username”.

Coloque o nome deste tronco (o mesmo informado lá no ATA) no campo “Provider Name”.

Informe o endereço IP do ATA no campo “Hostname”. Em “Username”, também informe o nome do tronco.

Deixe o campo “Password” em branco.

Salve as alterações, mas ainda não recarregue as configurações! Apenas saia do asterisk-gui, pois precisamos efetuar alguns ajustes manualmente.

Efetue login no servidor (SSH, alguém? :) ) e edite o arquivo /etc/asterisk/users.conf.

Nele, localize o tronco que foi criado e altere a linha “registersip = yes” para “registersip = no“. Salve e feche o arquivo.

Agora, edite o arquivo /etc/asterisk/sip.conf.

Localize a seção “[general]” e logo abaixo desta linha adicione uma contendo “register = NomeTronco@192.168.50.5/NomeTronco”.

Agora, vá bem para o final deste arquivo, e adicione as seguintes linhas:

[NomeTronco]
type=friend
user=NomeTronco
host=192.168.50.5
dtmfmode=rfc2833
canreinvite=no
context=DID_NomeTronco

Salve e feche este arquivo.

Agora é só recarregar as configurações do asterisk (“/etc/init.d/asterisk reload”) e pronto!

Em breve, algumas dicas de como selecionar a porta do ATA em uma ligação sainte, e também como direcionar as ligações entrantes baseando-se na porta de entrada ;) .

Olá!

Neste how-to veremos como instalar um servidor de telefonia digital (VoIP) utilizando o software gratuito asterisk. Também é possível comprar placas PCI ou PCI-express para utilização com links de telefonia digital (um canal “E1″, por exemplo), altém de ATAs (adaptadores de de telefones ou linhas analógicas).

Inicialmente, precisamos de um servidor com o linux Ubuntu Server 10.04 instalado. No meu caso, utilizei a versão de 64bits, pois o computador que utilizei possuía esta capacidade. Recomendo a instalação do servidor SSH, para facilitar o acesso posteriormente ;) . OK, pode ser qualquer outro linux, mas eu usei este porque facilita bastante hehe.

Neste how-to também instalaremos um servidor MySQL neste Ubuntu, para armazenar os registros de ligação em banco de dados.

Em muitos casos irei explicar o que estamos fazendo. Farei isto colocando a explicação do lado do comando, e entre parênteses. Por exemplo, quando você ver:

make (compilar a biblioteca)

você só executa “make”, a parte “(compilar a biblioteca)” é o comentário explicativo ;) .

Primeiramente precisamos instalar alguns pacotes que não são instalados por padrão.

Efetue login no servidor, e depois execute “sudo su”. A senha que será solicitada será a sua própria senha. Com isto, você se tornará usuário “root”, possibilitando e facilitando a execução dos comandos necessários. Abaixo, a lista de comandos para instalar os pacotes. Em alguns casos, o “apt” solicitará confirmação do download, pois será feito download de mais de um pacote. Basta digitar “s” e pressionar “enter” (eu instalei o Ubuntu em português… se você preferiu instalar em inglês, digite “y” ao invés de “s”).

apt-get install gcc
apt-get install build-essential
apt-get install libncurses5-dev
apt-get install m4
apt-get install bison
apt-get install zlib1g-dev
apt-get install libssl-dev
apt-get install libpng12-dev
apt-get install libslang2-dev
apt-get install libnewt-dev
apt-get install cvs
apt-get install doxygen

Também iremos instalar o subversion, para que possamos efetuar o download da interface web de configuração do asterisk, o asterisk-gui:
apt-get install subversion

E já que estamos instalando um montão de coisas :P , vamos aproveitar e instalar o MySQL:
apt-get install mysql-server

Agora, crie uma pasta temporária para armazenarmos os arquivos do asterisk. Vamos supor, “mkdir /asterisk_temp”.

Efetue o download do asterisk, asterisk-addons, libpri e do driver “dahdi” (versão completa) e salve tudo na pasta temporária. Abaixo, comandos para efetuar o download do próprio servidor, mas seria interessante acessar o site do asterisk para verificar por versões mais novas.

wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.3.0+2.3.0.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.31.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.4.11.tar.gz

Também já vamos efetuar o download do asterisk-gui. O comando abaixo irá efetuar o download, e salvará o conteúdo na subpasta “asterisk-gui”:

svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0/ asterisk-gui

Caso queira gerar um pacote do asterisk-gui, para ter um backup, execute o comando abaixo após o download ter sido concluído:

tar -jcvf asterisk-gui-2.0.tar.bz2 ./asterisk-gui

Agora, vamos à instalação destes pacotes:

1) libpri

tar -zxvf libpri-1.4.11.tar.gz (descompactar o arquivo)
cd libpri-1.4.11 (entrar na pasta)
make (compilar a biblioteca)
make install (instalar a biblioteca)
cd .. (voltar pra pasta enterior)

2) dahdi

tar -zxvf dahdi-linux-complete-2.3.0+2.3.0.tar.gz
cd dahdi-linux-complete-2.3.0+2.3.0
make
make install
make config (alguns pacotes tem comandos “make” adicionais…)
cd ..

Caso você tenha uma placa para link de telefonia digital (o canal “E1″, por exemplo), também precisa efetuar os seguintes passos:
pico /etc/dahdi/system.conf (editar este arquivo; efetue as alterações necessárias, conforme indicado no manual da sua placa)
pico /etc/modules (editar este arquivo; retire os módulos desnecessários, colocando um “;” no início da linha para, assim, torná-las “comentários” que serão ignorados)

3) asterisk

tar -zxvf asterisk-1.4.31.tar.gz
cd asterisk-1.4.31
./configure (alguns pacotes precisam ser “configurados” antes de serem compilados)
make
make install
make samples (instala os arquivos de configuração iniciais)
make progdocs
cd ..

4) asterisk-addons

tar -zxvf asterisk-addons-1.4.11.tar.gz
cd asterisk-addons-1.4.11
./configure
make
make install
make samples (instala os arquivos de configuração iniciais)
cd ..

Edite o arquivo “/etc/asterisk/modules.conf” e, bem ao final do arquivo, adicione a seguinte linha:

load => cdr_addon_mysql.so

Agora, crie um arquivo chamado “MySQL-script” (por exemplo), e coloque o conteúdo abaixo dentro dele:

————————COPIE A PARTIR DA LINHA ABAIXO
create user asterisk;
update user set password=password(‘ALTERE-ESTA-SENHA’) where user=’asterisk’;
create database asterisk;
grant insert,select on asterisk.* to asterisk@’%';
flush privileges;

USE asterisk;

CREATE TABLE `cdr` (
`calldate` datetime NOT NULL default ’0000-00-00 00:00:00′,
`clid` varchar(80) NOT NULL default ”,
`src` varchar(80) NOT NULL default ”,
`dst` varchar(80) NOT NULL default ”,
`dcontext` varchar(80) NOT NULL default ”,
`channel` varchar(80) NOT NULL default ”,
`dstchannel` varchar(80) NOT NULL default ”,
`lastapp` varchar(80) NOT NULL default ”,
`lastdata` varchar(80) NOT NULL default ”,
`duration` int(11) NOT NULL default ’0′,
`billsec` int(11) NOT NULL default ’0′,
`disposition` varchar(45) NOT NULL default ”,
`amaflags` int(11) NOT NULL default ’0′,
`accountcode` varchar(20) NOT NULL default ”,
`uniqueid` varchar(32) NOT NULL default ”,
`userfield` varchar(255) NOT NULL default ”
);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
————————COPIE SOMENTE ATÉ A LINHA ACIMA

Este é um script para criação do usuário e banco de dados que o asterisk utilizará, no MySQL, para o registro das ligações.

Se você não alterou nada no início do script, tanto o usuário quanto o nome do banco serão “asterisk”. A senha do usuário ficaria “ALTERE-ESTA-SENHA” :P .

Após ter criado o arquivo com o conteúdo acima, execute o script com:

mysql -p -u root < ./MySQL-script

A senha que será solicitada é a do usuário “root” do MySQL.

Feito isto, continuamos com a configuração dos addons. Edite o arquivo “/etc/asterisk/cdr_mysql.conf”.

Altere a seção “[global]” para que fique como o exemplo abaixo (retire os comentários se necessário):

[global]
hostname=localhost
dbname=asterisk
table=cdr
password=ALTERE-ESTA-SENHA
user=asterisk
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1

Para retirar os comentários, basta apagar o “;” do início da linha.

Caso você tenha alterado o nome do usuário, banco ou tabela, faça as alterações necessárias ;) .

Também precisamos editar o arquivo “/etc/asterisk/res_mysql.conf”. Altere a seção “[general]” para que fique como o exemplo abaixo (retire os comentários se necessário):

[general]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = asterisk
dbpass = ALTERE-ESTA-SENHA
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock

E como vamos salvar os registros em banco de dados, vamos desativar o armazenamento deles em “texto puro”, que vem ativo por padrão. Para isto, edite o “/etc/asterisk/cdr.conf”. Comente (coloque um “;” no início da linha) todas as linhas da seção “[csv]“, incluindo a própria linha “[csv]“.

5) asterisk-gui

cd asterisk-gui
./configure
make
make install

Edite o “/etc/asterisk/http.conf”. Na seção “[general]“, altere as linhas mencionadas abaixo, deixando-as como informado (retire os comentários se necessário):

enabled = yes
enablestatic = yes
bindaddr=0.0.0.0

Também é necessário editar o “/etc/asterisk/manager.conf”.

Nele, na seção “[general]“, altere as linhas indicadas abaixo (retire os comentários se necessário):

enabled = yes
webenabled = yes

Além disto, adicione as seguintes linhas bem no final do arquivo:

[admin] (“admin” será o usuário de acesso à interface web)
secret = SENHAsecreta (esta será a senha do usuário)
read = system,call,log,verbose,command,agent,config (com estas opções, poderemos visualizar todas as configurações possíveis)
write = system,call,log,verbose,command,agent,config (com estas opções, poderemos alterar todas as configurações possíveis)

Agora precisamos criar um arquivo de inicialização para o asterisk, para que ele inicie juntamente com o linux. Crie o arquivo “/etc/init.d/asterisk” e coloque o seguinte conteúdo no mesmo:

————————COPIE A PARTIR DA LINHA ABAIXO
#! /bin/sh -e
#### BEGIN INIT INFO
# Provides:          asterisk
# Required-Start:    $mysql
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: Asterisk Server
# Description:       Asterisk Server
### END INIT INFO
#
# Author:    Huff
#
set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/asterisk

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case “$1″ in
start)
log_daemon_msg “Starting” “asterisk”
$DAEMON
log_end_msg $?
;;
stop)
log_daemon_msg “Stopping” “asterisk”
$DAEMON -rx “stop now”
log_end_msg $?
;;
restart)
$0 stop
$0 start
;;
reload)
log_daemon_msg “Reloading config for” “asterisk”
$DAEMON -rx “module reload”
log_end_msg $?
;;
*)
echo “Usage: /etc/init.d/asterisk {start|stop|restart|reload}”
exit 1
;;
esac

exit 0
————————COPIE SOMENTE ATÉ A LINHA ACIMA

Altere as permissões do arquivo, para que ele possa ser executado:

chmod 755 /etc/init.d/asterisk

Agora, vamos adicionar o script à inicialização do servidor:

update-rc.d -f asterisk defaults

Agora já vamos iniciar o asterisk :) :

/etc/init.d/asterisk start

Agora, abra um navegador de internet em algum computador que tenha acesso ao servidor asterisk, pela rede.

Acesse o endereço “http://Endereco.IP.do.Servidor:8088/asterisk/static/index.html” (obs: altere “Endereco.IP.do.Servidor” pelo Endereço IP do Servidor :P ).

Efetue login com o usuário (admin) e a senha (SENHAsecreta).

Neste primeiro acesso o asterisk-gui irá preparar os arquivos de configuração, adaptando-os para utilização com esta interface web. Após ele ter concluído o processo, saia da interface clicando no botão “logout” localizado bem acima à direita.

Volte para o servidor (SSH é muito útil nessas horas :D ) e edite o arquivo “/etc/asterisk/extensions.conf”.

Nele, comente as seções indicadas abaixo (com isto, quero dizer que você deve comentar todas as linhas que estiverem dentro de cada seção, bem como a linha que indica a seção, como no caso do “[csv]” visto anteriormente):

[dundi-e164-canonical]
[dundi-e164-customers]
[dundi-e164-via-pstn]
[dundi-e164-local]
[dundi-e164-switch]
[dundi-e164-lookup]
[macro-dundi-e164]
[iaxtel700]
[iaxprovider]
[trunkld]
[trunklocal]
[trunktollfree]
[international]
[longdistance]
[local]
[macro-trunkdial]
[macro-stdPrivacyexten]
[macro-page]
[demo]
[page]

Após ter feito isto (eu sei, é bastante coisa, mas são coisas desnecessárias, muitas delas criadas apenas para testes, o melhor é remover mesmo ;) ), vamos fazer o asterisk recarregar a configuração:

/etc/init.d/asterisk reload

Pronto! Agora é só configurar o asterisk, seja editando os arquivos de configuração manualmente, ou pela interface web ;) .

Em breve, mais dicas de asterisk!

Olá!

Neste post vou passar rapidamente como implementar controle de banda, para limitar a velocidade utilizada por downloads, utilizando o proxy squid.

Primeiramente, é necessário adicionar o parâmetro “–enable-delay-pools” na hora de configurar/compilar o squid. Por exemplo:

./configure –prefix=/usr/local/squid –enable-delay-pools
(Observação: antes do “prefix” e do “enable”, são dois sinais “-”, não sei porque o WordPress só mostra um :P )

O comando acima fará com que o squid se instale, posteriormente, na pasta “/usr/local/squid”, além de habilitar a funcionalidade que precisaremos para o controle de banda (os “delay pools”).

Após a configuração ter sido concluída, basta continuar normalmente com a compilação (os tradicionais “make” e “make install”).

Ao configurar as regras de acesso, no arquivo “squid.conf” (no nosso exemplo, localizado em “/usr/local/squid/etc”), poderemos criar “canais” (os “pools”) com limites de velocidade, e regrar que “tal acesso” será feito por “tal pool”. Vamos ao exemplo de como ficam as linhas no arquivo de configuração (lembrando que linhas iniciadas por “#” são consideradas “comentários”, e são ignoradas pelo squid):

#Tipos de arquivos para os quais limitaremos a banda
#acl nome_regra tipo_regra regra-propriamente-dita
#”url_regex -i” analisará todo o endereço sendo acessado, utilizando expressões regulares,
#e ignorando maiúsculas/minúsculas (isto quem faz é o “-i”)
acl limite_banda url_regex -i \.exe \.zip \.rar \.tar \.tar\.(gz|bz2)

#Quantidade de pools que iremos criar
delay_pools 1

#Classe para acesso com restricao de banda
#O primeiro “1″ define que estamos informando a classe (digamos, o “tipo da limitação”) para o delay_pool 1
#O segundo “1″ define o tipo da classe. Para mais detalhes, acesse este link para o manual do squid
delay_class 1 1

#Definição da largura da banda, em bytes
#O “1″ informa que estamos parametrizando o delay_pool 1
#Por ser classe 1, estamos colocando todos os acessos dentro do mesmo “canal”, significando que todos irão
#compartilhar a banda definida (quanto mais downloads simultâneos, mais lento todos ficarão, pois a banda será
#dividida entre todos). Caso esteja utilizando outra classe, serão necessários mais parâmetros
#(veja o manual do squid)
#Aprox. 300kbps
delay_parameters 1 37500/37500

#Agora, associamos a regra ao delay_pool
delay_access 1 allow limite_banda

#E depois temos que liberar o restante, fora do limite de banda
http_access allow seus-parametros-de-acesso

Pronto! :)

Ao efetuar download de qualquer arquivo “exe”, “zip”, “rar”, “tar”, “tar.gz” ou “tar.bz2″, o mesmo entrará no canal com banda limitada.

Demais acessos serão feitos sem o limite.

Olá!
Caso alguém precise, aqui estão os passos.
Para o exemplo, vamos supor que existam 3 HD’s SATA: 1 para a instalação do Xen (/dev/sda), os outros dois onde faremos o RAID-0 (/dev/sdb e /dev/sdc).

Criar uma partição e alterar seu tipo para “linux raid”, em cada HD a ser utilizado no RAID:

fdisk /dev/sdb

Pressionar “p” para visualizar as partições (se o disco for novo, não terá nenhuma) * PASSO OPCIONAL
Pressionar “d” para excluir partições (se necessário), digite o número da partição e pressione “ENTER” * PASSO OPCIONAL, dependendo se o disco é novo ou não
Pressionar “n” para criar uma partição, “p” para que ela seja “primária”, digitar “1″ e pressionar “ENTER” para que seja a primeira partição no disco
Pressionar “t” para alterar o tipo de partição, digitar o número da partição e pressionar “ENTER”, digitar “fd” e pressionar “ENTER” para alterar o tipo de partição para “linux raid”
Pressionar “w” para salvar as alterações e sair do fdisk
Repedir para o /dev/sdc

Para mim, o /dev/md0 já existia… Mas eu não tinha nenhum RAID configurado…
Por garantia, excluí ele:

rm -f /dev/md0

Criar o device RAID (sintaxe genérica: mknod NOME TIPO MAJOR MINOR):

mknod /dev/md0 b 9 0

/dev/md0: device a ser criado
b: será um device “de bloco” (existem outros tipos)
9: pelo que pesquisei no google, um device RAID (“/dev/md…”) é um device de bloco com o MAJOR=9 (só não achei o porquê)
0: pelas minhas pesquisas no google, é o mesmo número do “md” (como estamos criando o “md0″, aqui vai “0″; para o “md1″, aqui iria “1″; etc, só também não achei o porquê)

Inicializar o RAID:

mdadm –create /dev/md0 –level=0 –raid-devices=2 /dev/sdb1 /dev/sdc1

–create /dev/md0: criaremos o RAID em /dev/md0
–level=0: queremos um RAID-0
–raid-devices=2: a quantidade de discos que fará parte deste RAID
Os últimos parâmetros tratam-se de uma lista com os discos/partições a serem utilizadas neste RAID

Adicionar a nova área ao xen:

xe sr-create content-type=”LocalSR” type=lvm device-config-device=/dev/md0 shared=false name-label=”RAID0″

sr-create: criar um novo Storage Repository
content-type=”LocalSR”: será um repositório local
type=lvm: tipo de particionamento (LVM seria “o melhor”, segundo as pesquisas que andei fazendo no google, nas quais encontrei esta explicação sobre LVM)
device-config-device=/dev/md0: o disco a ser utilizado (aqui apontamos para o device RAID)
shared=false: o SR não será compartilhado (outros servidores Xen não acessarão este repositório)
name-label=”RAID0″: nosso SR se chamará “RAID0″, na tela de administração do Xen

Pronto! o novo SR já está disponível para uso ;) .

Finalmente arrumei tempo para testar isto :) .

A construção

Não localizei o material “exatamente” como as fontes de pesquisa mostraram (ver referências no fim do how-to), mas segue a lista de material que utilizei:

  • (1) Uma lata de batatas Pringles de 163g;
  • (2) Uma barra roscada “M4” de 15cm (não localizei de aço);
  • (3) Cinco arruelas de 2,5cm de diâmetro (não localizei nem de aço nem de alumínio);
  • (4) Dez porcas “M4” (não localizei de nylon, plástico ou aço);
  • Emenda fêmea de conectores “N” (5);
  • Cabo “Pigtail” (6);
  • Fio de cobre rígido (utilizado para instalações elétricas) calibre 12 (na medida americana, “AWG”), ou 2,5mm (na medida brasileira);
  • Pedaço de papelão (pode ser de uma caixa de papelão).
Material

Material

Medimos 8,4cm a partir do fundo da lata Pringles. Este deverá ser o ponto central do conector “N” (no meu caso, da emenda).

Medindo centro do conector N

Medindo centro do conector N

A partir deste ponto central, corte um buraco redondo, suficiente apenas para o conector “N” se encaixar.

Inserindo conector N

Inserindo conector N

O próximo passo é pegar um pedaço do fio de cobre e desencapá-lo (retirar a proteção externa). Também se deve raspá-lo, para remover o verniz que o envolve. O fio deve ser encaixado e soldado dentro do conector “N”.

Conector N e fio de cobre

Conector N e fio de cobre

O fio deve ser grande o suficiente para ficar exatamente no centro da lata Pringles.

Conector N e fio de cobre na lata (visão interna)

Conector N e fio de cobre na lata (visão interna)

Estando tudo certo, fixamos o conector “N” na lata Pringles, utilizando “cola quente” (cola de silicone, daquelas “pistolinhas”).

Conector N e fio de cobre fixados na lata

Conector N e fio de cobre fixados na lata

Agora, partimos para o alimentador da antena. Deve-se utilizar as porcas para fixar as arruelas na barra roscada. As arruelas devem ter a mesma distância umas das outras.

Alimentador

Alimentador

Deve-se recortar um pedaço redondo do papelão, e fixá-lo junto da penúltima arruela. Ele deve ter diâmetro suficiente para apenas encaixar dentro da lata Pringles. Isto dará sustentação ao alimentador.

Alimentador (sustentação inferior)

Alimentador (sustentação inferior)

Utilizamos a tampa da própria lata Pringles para dar sustentação na outra ponta do alimentador, fixando a tampa junto à primeira arruela.

Alimentador (sustentação superior)

Alimentador (sustentação superior)

É só encaixar o alimentador dentro da lata e a antena está pronta!

Antena pronta!

Antena pronta!

Uma informação importante: o alimentador deve ficar o mais próximo possível do fio de cobre, que foi soldado no conector “N”, mas ele nunca deve tocar o fio de cobre.

Agora é só utilizar um cabo “pigtail” para ligar a antena à placa wifi e sair capturando sinais por aí :) .

O teste

Como não tenho uma placa wifi que suporte antena externa para testá-la, “inverti o teste”: liguei a antena no AccessPoint.

Primeiro, deixei o AP sem antena nenhuma. Conectei o note nele via wifi e fui me distanciando, até o sinal ficar beeeem fraco. Daí liguei a antena original, que veio com o AP (antena omnidirecional de 2dBi), e fui no note verificar o nível de sinal. Depois, voltei pro AP e troquei a antena original pela antena Pringles. De volta ao note, verifiquei o sinal novamente. Usei o próprio software da placa wifi para ver o nível de sinal. Seguem os resultados:

  • Nível de sinal sem antena: variando entre -90dBm e -93dBm;
  • Nível de sinal com antena original: variando entre -64dBm e -68dBm;
  • Nível de sinal com “antena Pringles”: variando entre -60dBm e -66dBm.

Anteninha boa essa “Pringles” hein :) .

Referências

  • How-to de construção:

http://inatitude.wordpress.com/2007/10/09/102/ (caso o site esteja fora, acesse a impressão do site em PDF clicando aqui)

  • “Lista de compras” (“shop list”):

http://pessoa.eti.br/wiki/index.php/Aumentando_o_alcance_de_um_link_wireless (caso o site esteja fora, acesse a impressão do site em PDF clicando aqui)

Utilizamos a tampa da própria lata Pringles para dar sustentação na outra ponta do alimentador, fixando a tampa junto à primeira arruela.

Recebi a dica do Felipe Plets (www.pletax.com).

Acesse o how-to clicando aqui. (caso o site esteja indisponível, acessar cópia do site impressa em PDF clicando aqui)

O how-to sugere que algumas configurações sejam feitas no web site, mas caso você tenha diversas páginas no mesmo servidor, pode definir algumas destas configurações para todas de uma só vez, e também já deixando elas como o padrão para novas páginas que você venha a criar. Para isto, ao invés de acessar as propriedades do web site, clique com o direito em “Web Sites” mesmo, e acesse as propriedades. Aplicando por aqui, o IIS questiona se as configurações devem ser aplicadas às páginas já existentes, inclusive permitindo que você escolha para quais deseja aplicar.

© 2010 Blog do Huff Suffusion WordPress theme by Sayontan Sinha