23 de dez. de 2013

Ramdrive no GNU/Linux com tmpfs

Para criar discos virtuais em RAM com o tmpfs é muito simples.

mount -t tmpfs NomeDoSeuRamdisk /PontoDeMontagem -o size=1m

Simples assim.

Se a dica foi útil para você  e desejar fazer uma doação este é meu endereço Bitcoin 14jtPns4wzqpKt4smzE7uiL8C2BXycv627

Obrigado!

18 de dez. de 2013

mc (Midnight Commander) lento [ resolvido ]

Ocorre geralmente em pacotes RPM para CentOS, RHEL, SuSE etc.

O mc fica lento durante a sua iniciação.

Ocorre é que ele tenta resolver nomes para o host local bastando para resolver o problema acrescentar os nomes do host local no arquivo /etc/hosts.

Ex:

172.18.162.199 nomedohostlocal nomedohostlocal.nomedodominiolocal
10.39.145.199 nomedohostlocal nomedohostlocal.nomedodominiolocal
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 nomedohostlocal.nomedodominiolocal nomedohostlocal
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 nomedohostlocal.nomedodominiolocal nomedohostlocal

Se a dica foi útil para você  e desejar fazer uma doação este é meu endereço Bitcoin 14jtPns4wzqpKt4smzE7uiL8C2BXycv627

Obrigado!

16 de abr. de 2013

Especificando servidor proxy como variável de ambiente do Shell.

export https_proxy=http://ip:porta
export http_proxy=http://ip:porta
export ftp_proxy=http://ip:porta

Se a dica foi útil para você  e desejar fazer uma doação este é meu endereço Bitcoin 14jtPns4wzqpKt4smzE7uiL8C2BXycv627

Obrigado!

18 de abr. de 2012

Instalando o Slackware virtualizado com drivers Virtio

Instale o Slackware normalmente e ao chegar na etapa de configurações do sistema selecione o modo expert de configuração do lilo.

na primeira linha do /etc/lilo.conf acrescente:
disk=/dev/vda bios=0x80 max-partitions=7

na segunda:
boot = /dev/vda

Na seção de imagens coloque:
root = /dev/vda1

Feito isso instale o lilo com a opção "install lilo" no menu.

Irá exibir uma mensagem de erro mas não se incomode com isso, é normal.

Agora vamos criar o initrd para que o Kernel possa carregar os módulos Virtio antes do demais.

mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -t proc proc /mnt/proc
chroot /mnt

Execute o mkinitrd_command_generator.sh, ele ira exibir o comando para a criação correta do initrd.
/usr/share/mkinitrd/mkinitrd_command_generator.sh

A saída será algo parecido com isso:
mkinitrd -c -k 2.6.38.7 -f ext4 -r /dev/vda1 -m virtio_ring:virtio_blk:virtio_pci:virtio_balloon:virtio_net:jbd2:mbcache:ext4 -u -o /boot/initrd-2.6.38.7.img

Execute o comando como acima e o mkinitrd irá criar o arquivo  /boot/initrd-2.6.38.7.img

agora crie um link simbólico para ele:
cd /boot
ln -sf initrd-2.6.38.7.img initrd.gz

Em seguida aponte para ele em seu /etc/lilo.conf imediatamente abaixo da imagem do Kernel
initrd = /boot/initrd.gz

Feito isso reinstale o lilo e reinicie a máquina virtual.

Pronto! O Seu Slackware estrá rodando virtualizado com os drivers Virtio

18 de dez. de 2011

Windows XP Driver AHCI no ATI/AMD SB700/800 no Lenovo G475 e outros.

Esta dica relata minha jornada para instalar o driver para Windows XP AHCI SB700 da AMD/ATI em um laptop Lenovo G475 que adquirí recentemente em dezembro de 2011. No entanto ela aplica-se a qualquer laptop ou motherboard que empreguem o referido chipset com esta controladora SATA.

Vou partir da premissa que o Windows XP já foi instalado com a controladora em modo de compatibilidade IDE e não entrarei em detalhes da instalação deste SO que me vejo obrigado a usa-lo por ter soluções Samba entre outras que trabalham com ele, mas que se fazer.... "Em terra de cegos quem tem olhos é uma aberração que acaba sendo queimada em praça pública."

1 - Baixe o driver AHCI no site da AMD ou no do fabricante de seu hardware, no caso do Lenovo G475 o link é http://consumersupport.lenovo.com/ot/en/driversdownloads/drivers_show_4419.html o arquivo é o IN1AHC19WW1.exe e para descompacta-lo use o 7-zip




2 - Após a descompactação do arquivo INAHC19WW1.EXE procure o arquivo txtsetup.oem e abra-o com o Notepad do Windows e procure uma linha parecida com essa:

id = "PCI\VEN_1002&DEV_4391&CC_0106", "ahcix86"

Atente para o código do PCI vendor (fabricante) e do produto específico neste caso é 1002:4391 e o código de subsys CC_0106 podem mudar de acordo com o modelo de sua controladora AHCI dependendo se for uma SB700/800 ou 900 mas o conceito é o mesmo.

Agora vamos criar um arquivo de entradas no registro com o Notepad, ele pode ter qualquer nome contanto que possua uma extensão .reg no meu caso o chamei de sb700.reg


Listagem:

Windows Registry Editor Version 5.00



[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_0106]


"Service"="ahcix86"


"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ahcix86]


"Type"=dword:00000001


"Start"=dword:00000000


"Group"="SCSI miniport"

"ErrorControl"=dword:00000001


"ImagePath"="system32\\drivers\\ahcix86.sys"


"tag"=dword:00000019


"DisplayName"="ATI AHCI Compatible RAID Controller"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ahcix86\Parameters\PnpInterface]


"5"=dword:0x00000001




[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ahcix86\Settings\CAM]


"EnableALPEDisableHotplug"=dword:0



"EnableCCC"=dword:1


"CCCTimeoutValue"=dword:10


"CCCCompletionValue"=dword:32


"NCQEnableDiskIDBits"=dword:0


"EnableHIPM"=dword:0


"EnableDIPM"=dword:0


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ahcix86\Enum]


"0"="PCI\\VEN_1002&DEV_4391&SUBSYS_75011462\\3&13c0b0c5&0&FA"


"Count"=dword:00000001


"NextInstance"=dword:00000001<


3 - Agora copie o arquivo ahcix86.sys para o diretório c:\windows\system32\drivers\

Uma vez feito isso basta reiniciar o seu computador entrar no BIOS setup e configurar o modo de operação da controladora de disco de IDE compatible para AHCI, salve e reinicie o windows normalmente.



Se a dica foi útil para você  e desejar fazer uma doação este é meu endereço Bitcoin 14jtPns4wzqpKt4smzE7uiL8C2BXycv627

Obrigado!



17 de abr. de 2010

split - Página de Manual em Português

NOME

split - divide um arquivo em partes


SINOPSE

split [OPTION] [INPUT [PREFIX]]


DESCRIÇÃO

Saída de partes com tamanho fixo de INPUT para PREFIXaa, PREFIXab,.... PREFIZac,...;
o PREFIX padrão é "x". Se não for especificada um INPUT ou quando o INPUT é "-" (hífen), ele lê a entrada padrão.

Os argumentos são obrigatórios para opções curtas e longas.


OPTIONS (opções)

-a, --sufix-lenght=N
Usa sufixos de comprimento N ( o dafault é 2 )

-b, --bytes=SIZE
Especifica o tamanho do arquivo de saída em bytes

-C, --line-bytes=SIZE
Coloca o maior tamanhano possível em bytes por linha do arquivo de saída.

-d, --numeric-suffixes
Usa sufixos numéricos ao invés de alfabéticos

-l, --lines=NÚMERO
Especifica o número de linhas por arquivo de saída.
--verbose
Exibe um diagnóstico imediatamente antes da saída de cada arquivo.

--help
Exibe este help e sai.

--version
informações sobre a versão.

SIZE pode ter um sufixo multiplicador:
b para 512
k para 1K
m para 1M


SOBRE os AUTORES

Escrito por Torbjorn Granlund e Richard M. Stallman.



PARA RELATAR BUGS

bug-coreutils@gnp.org


INFORMAÇÕES SOBRE COPYRIGHT
Este é um software livre, consulte os fontes sobre as condições de cópias e distribuição.
Não possui nenhuma garantia, quer seja para COMERCIALIZAÇÃO ou MODIFICAÇÃO PARA PROPÓSITOS PARTICULARES.


CONSULTE TAMBÉM.

A documentação completa do split é suportada como um manual Textinfo. Se o split ou sua documentação for instalada em seu sistema. O comando: "info coreutils split" deverá dar completo acesso ao completo ao manual do coreutils.


Se a dica foi útil para você  e desejar fazer uma doação este é meu endereço Bitcoin 14jtPns4wzqpKt4smzE7uiL8C2BXycv627

Obrigado!

mdadm.conf - Página de Manual em português

NOME

mdadm.conf

Arquivo de configuração para o gerenciamento de RAID via software com o mdadm


SINOPSE

/etc/mdadm.conf


DESCRIÇÃO

O mdadm é uma ferramenta para criar, gerenciar e monitorar dispositivos RAID usando o controlador md (multiple devices) no GNU/Linux.

Algumas tarefas comuns como montagem de arrays podem sr simplificadas descrevendo-se arrays e dispositivos neste arquivo.

SINTAXE

O arquivo deve ser visto como uma coleção de palavras separadas por espaços, tabulações e quebras-de-linha.
Qualquer linha que começa com um espaço em branco ou tabulação é interpretado como se fosse continuação da linha anterior. É preciso ter cuidado com esse particular.
Linhas vazias são ignoradas, porém cada continuação de uma linha anterior deve começar com uma palavra-chave, conforme listado abaixo. As palavras-chave são indiferentas quanto ao tamanho de caixa e podem ser abreviadas para 3 caracteres.

As palavras-chave são:

DEVICE
Uma linha "device" lista dispositivos ( discos, dispositivos de bloco e/ou partições ) que podem ter componentes de um array MD.
Ao enxergar os componentes de um array, o mdadm scaneará estes dispositivos ( ou qualquer outro dispositivo listado na linha de comando do mdadm ).

A linha "device" pode conter um número de dispositivos diferentes (separados por espaços) e
cada nome de dispositivo pode conter curingas como definido pelo glob(7).
Além disso podem haver várias linhas "device" presentes no arquivo.

Alternativamente uma linha "device" pode conter referências a partições. Isso faz com que o mdadm leia o /proc/partitions e inclua todos os dispositivos e partições lá encontrados. O mdadm não usa nomes a partir do /proc/partitions, apenas o maior e o menor número de dispositivo. Ele executa uma varredura no /dev/ para encontrar o nome corespondente aos números.

Exemplos:

DEVICE /dev/hda* /dev/hdc*

DEV /dev/sd*

DEVICE /dev/discs/disc*/disc

DEVICE partitions



ARRAY

As linhas "array" identificam os arrays atuais. A segunda palavra na linha deve ser o nome do dispositivo onde o array é normalmente montado, como /dev/md1.
Palavras subseqüentes identificam o array ou o identificam como membrode um grupo. Se multiplas identidades forem dadas, Um componente é dado em seguida a identidade ALL será considerada uma ponto de partida. Cada palavra tem uma flag de identificação, um sinal de igual e um valor. As tags são as seguintes:

uuid=
É um valor hexadecimal de 128 bits com pontuação intercalada se desejar. Esta deve coincidir com os UUIDs dos superblocos (discos rígidos, partições e dispositivos de bloco válidos).

super-minor=
Este valor é um número inteiro que indica o menor número que foi armazenado no superbloco quando o array foi criado.

devices=
Este valor é uma lista de nomes de dispositivo separados por vírgula ou nomes padrão de dispositivos. Apenas os dispositivos com nomes correspondentes a uma entrada na lista serão usados para montar o array. Notem que os dispositivos listados também devem ser listados em uma linha DEVICE.

level=
O valor do nível RAID.

num-devices=
O valor é o número de dispositivos de um array completo e ativo.

spare-group=
O valor é um nome textual para um grupo de arrays. Todos os arrays que tenham algum nome de spare-groups são considerados como parte de algum grupo. O significado de um grupo de arrays é o que o mdadm quando monitora arrays move um disco de spare de um array em um determinado grupo para outro array do mesmo grupo caso o primeiro array venha a falhar ou perder-se o drive.

auto=
Esta opção declara ao mdadm que ele deve tentar criar os componentes do array caso eles não existam ou estejam com números errados.

Os valores para esta opção são "yes" ou "md" para indicar que um MD array tradicional não particionável deve ser criado, "mdp", "part" ou "partition" para indicar um array MD particionável. ( disponível somente no kernel 2.6 ou superior ). Este conjunto também pode valor acrescentado para indicar quanta spartições para criar arquivos de dispositivos. Ex: auto=mdp5. O default é 4.




MAILADDR
A linha "mailaddr" dá um endereço de e-mail para alertas quando o mdadm é executado no modo MONITOR "--monitor" com a opção "--scan" Deve  apenas haver uma única linha MAILADDR e deve ter somente um único endereço.

PROGRAM
A linha "program" é dada para que o mdadm execute um programa qualquer quando é executado em modo "--monitor" e detecta um evento potencialmente interessante. Este programa pode rodar com dois ou três argumentos.
Apenas uma única linha "program" é permitida e somente um único programa pode ser executado.


EXEMPLOS

DEVICE /dev/sd[bcdjkl]1
DEVICE /dev/hda1 /dev/hdb1

# /dev/md0 is known by it's UID.
ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
# /dev/md1 contains all devices with a minor number of
# 1 in the superblock.
ARRAY /dev/md1 superminor=1
# /dev/md2 is made from precisey these two devices
ARRAY /dev/md2 devices=/dev/hda1,/dev/hda2

# /dev/md4 and /dev/md5 are a spare-group and spares
# can be moved between them
ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df

           spare-group=group1
ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977

           spare-group=group1
# /dev/md/home is created if need to be a partitionable md array
# any spare device number is allocated.
ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b

           auto=part

MAILADDR root@mydomain.tld
PROGRAM /usr/sbin/handle-mdadm-events

 SEE ALSO
mdadm(8), md(4).

16 de abr. de 2010

Formatando endereços MAC com Sed

$ echo "00120e3fb09f" | sed -e 's!\.!!g;s!\(..\)!\1:!g;s!:$!!' -e 'y/abcdef/ABCDEF/'

A saída será:

00:12:0E:3F:B0:9F

mdadm - Página de Manual em português

NOME

mdadm - Gerencia dispositivos MD aka de Raid por software no GNU/Linux

SINOPSE

mdadm [mode] [options]

DESCRIÇÃO

Dispositivos RAID são dispositivos virtuais criados a partir de dois ou mais dispositivos de bloco reais. (normalmente estes dispositivos são discos rígidos ou partições destes) Embora possa ser aplicado a dispositivos de loop e qualquer tipo de dispositivo de bloco. Dispositivos de bloco podem ser combinados em um único dispositivo para conter um único sistema de arquivos em dispositivos separados. Alguns níves de RAID podem assegurar tolerância a falhas garantindo a integridade dos dados.

Dispositivos RAID via software no Linux é implementado através do dispositivo md (multiple devices) Suas representações literais no sistema são /dev/mdX ou ainda /dev/mdXpN dependendo da forma como for implementado.

Atualmente o Linux suporta os seguintes dispositivos RAID (md) via software:
LINEAR: É uma expansão do dispositivo de bloco, ou seja. Suponha que se tenha um disco rígido de 40GB e um de 80GB, estes são combinados de forma contígua formando um sistema de arquivos de 120GB aproximadamente.

RAID 0:
Também denominado stripping onde os dados são parcialmente gravados em cada um dos discos. Este método possui o inconveniente de não possuir tolerâncias a falhas. Se um dos discos for danificado todo o conteúdo será perdido. Esta técnica é usada em situações onde precisamos de elevada velocidade de escrita e leitura em discos rígidos. pode-se usar tantos discos quanto necessário.

RAID 1:
Também denominado mirroring (espelhamento) onde os discos, partições ou qualquer outro dispositivo de bloco ficam perfeitamente sincronizados. O que ocorre em um ocorre igualmente no outro. É voltado especificamente para tolerância a falhas.

RAID 4:
Sistema tolerante a falhas com paridade. Atualmente não é mais utilizado devido a inovação do RAID 5 que apresenta vantagens em relação ao RAID 1 e RAID 4

RAID 5:
Semelhante ao RAID 4 sendo que as informações de paridade são escritas em todos os dispositivos do array ao invés de um único disco dedicado, aprentando uma tolerância a falhas plena.

RAID 6:
É um padrão relativamente novo, suportado por apenas algumas controladoras. É semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a integridade dos dados caso até 2 dos HDs falhem ao mesmo tempo. Ao usar 8 HDs de 20 GB cada um em RAID 6, teremos 120 GB de dados e 40 GB de paridade.

MULTIPATH:
O Multipath não é um mecanismo de RAID via software, porém não envolve múltiplos dispositivos de bloco. No MULTIPATH cada dispositivo do array é um caminho para um dispositivo de armazenamento comum. Um storage por exemplo.

* O mdadm é um programa usado para criar, gerenciar e monitorar dispositivos MD. Como tal, oferece um conjunto de funcionalidades semelhantes ao pacote raidtools. As principais diferenças entre mdadm e raidtools são:

* O mdadm é um único programa e não uma coleção de programas.
mdadm pode fazer (quase) todas as suas funções sem ter um arquivo de configuração e não usar um por padrão. O Mdadm também colabora com a gestão do arquivo de configuração.

O mdadm fornece informações sobre o arrays (por meio de consulta, de detalhes, e exames) que as ferramentas do pacote raidtools que não pode. O mdadm não usa /etc/raidtab, o arquivo de configuração raidtools, em tudo. Tem um arquivo de configuração diferente, com um formato e propósito diferentes.


MODOS de OPERAÇÃO (modes)

O mdadm possui 7 modos de operação principais:

Assemble:
Monta as partes de array já criado em uma matriz ativa. Os componentes do array podem ser dados explicitamente ou buscado. O mdadm verifica quais componentes fazem parte de uma matriz confiável e ainda podem montar um array defeituoso propositadamente para fins de teste etc.

Build:
Constroi um array legado sem um dispositivo de bloco.

Create:
Cria um novo array com dispositivos de bloco.

Manage:
O manage serve para parar ou reiniciar um array para adição, remoção e substituição de dispositivos de bloco.

Misc:
Este modo permite operações em dispositivos independentes, tais como analizar dispositivos de superblocos MD, apagando superblocos antigos e parando arrays ativos.

Follow or Monitor:
Monitora um ou mais dispositivos MD e atua sobre alterações de estado.
Isso somente faz sentido em RAID1,4,5,6 ou arrays MULTIPATH pois somente estes possuem estados interessantes. O RAID 0 ou linear não possuem spare ou discos defeituosos então não há o que monitorar.


OPTIONS

As opções disponíveis são:
-A, --assemble
monta um array existente.

-B, --build
Constroi um array legado sem superblocos

-C, --create
Cria um novo array

-Q, --query
Checa se um dispositivo é um dispositivo MD ( ex: /dev/md0, /dev/md1...) ou se ele é um componente de um array MD ( ex: /dev/md0pX, /dev/sdX, /dev/hdX). O resultado é exibido na saída stdout

-D, --detail
Exibe detalhes de um ou mais MD devices. Sua saída também é utilizada para criar o /etc/mdadm.conf

-E, --examine
Exibe o conteúdo do superbloco MD no(s) dispositivo(s)

-F, --follow, --monitor
    Seleciona modo monitor.

-G --grow
Altera o tamano ou forma de um array ativo

-h, --help
Exibe mensagens de ajuda relativa a um modo e/ou opção específicos.

-V, --version
Exibe informações sobre a versão do mdadm

-v, --verbose
Exibe detalhes do que está ocorrendo.

-f, --force
Força determinadas operações. Veja o significado exato dessa opção em diferentes contextos, opções e modos de operação.

-c, --config=
Especifica qual será o arquivo de configuração. O arquivo de configuração default é o /etc/mdadm.conf.
Se o arquivo de configuração de partições for dado, nada será lido pelo mdadm, entretanto o mdadm agirá como se o arquivo de partições contivesse o conteúdo do /proc/partitions para encontrar uma lista de dispositivos.

-s, --scan
Lê o arquivo de configuração ou o /proc/mdstat caso o primeiro esteje vazio ou não exista. Geralmente esta opção dá ao mdadm prmissão para obter todas as informações faltantes, tais como componentes do array, o próprio array, identidade UUID do array e seus dispositivos e alertas a partir do arquivo de configuração /etc/mdadm.conf

PARA CRIAR ou CONSTRUIR:

-C, --chunk=
Especifica o chunk size e KBytes. O default é 64

--rounding=
Especifica o fator de arredondamento de um array linear (==chunk size)

-l, --level=
Define o tipo de RAID. Quando usado com o modo --create (criar um array) as opções são: linear, RAID0 ou 0, listra, RAID1 ou 1, RAID4 ou 4, RAID5 ou 5, multipath ou mp.

-p, --parity=
Determina qual o algoritimo usado na paridade em arrays RAID 5. As opções são as seguintes: left-asymmetric, left-symmetric, right-asymmetric, right-symmetric ou simplesmente suas abreviações la, ra, ls, rs. O algoritmo default é o left-symmetric se não for especificado nenhum.

--layout=
O mesmo que -p ou --parity

-n, --raid-devices=
Especifica o número de dispositivos ativos no array. Isso acrescido do número de dispositivos de reserva (spares) é o número total de dispositivos no array listados na linha de comando para criar arrays.
Definir um valor igual a 1 é certamente um erro visto que não há sentido em se criar um array com um único componente, no entanto pode ser feito com a opção -f ou --force. O valor igual a um é permitido para RAID 0, 1 e MULTIPATH e nunca permitido para arrays RAID 4 e 5. Este valor somente pode ser alterado para aumentar arrays RAID 1 e somente em kernel que possuam suporte a esta função.

-x, --spare-devices=
Esppecifica o número de dispositivos de spare no array inicial. Spares podem ser adcionados ou removidos posteriormente. O número de dispositivos listados na linha de comando deve ser igual ao número de dispositivos RAID acrescido do número de dispositivos de spare.

-z, --size=
Quantidade (em KBytes) de espaço para utilização de cada unidade em RAID 1/4/5/6. Este valor deve ser um múltiplo do chunksize e deve deixar pelo menos 128Kb de espaço no final da unidade para o superbloco RAID. Se este valor não for especificado ( e normalmente não é) a menor unidade (partição) define o seu tamanho, mas se houver uma variação entre as unidade superior a 1% é emitido um alerta.
Este valor pode ser definido com a opção --grow para arrays RAID 1/4/5/6. Se o array foi criado com um tamanho menor que as unidades atuais, o espaço extra pode ser acessado usando a opção --grow.

--assume-clean
Informa ao mdadm que o array é pré-existente e está limpo (clean).
Isso somente é util para a construção de um array RAID1. Use isso somente se você souber o que está fazendo. Esta opção atualmente só é suportada para a opção --build

-R, --run
Insiste para que o mdadm execute o array, mesmo que alguns componentes pareçam estar ativos em um outro array ou sistema de arquivos. normalmente o mdadm pede confirmção antes de incluir componentes no array. Esta opção faz essa pergunta ser suprimida.

-f, --force
Insiste para que o mdadm aceite a geometria e layout especificados sem questionar. Normalmente o mdadm não permite a criação de um array com um único dispositivo, e tentará criar um array RAID5 com uma unidade faltante (Isso torna a tarefa inicial resync mais rápida). Com o uso do -f ou --force, o mdadm não tentará ser tão,inteligente.

-a, --auto{=no,yes,md,mdp,part,p}{NN}
Instrui o mdadm para criar o arquivo de se for necessário e atribuir um número menor não usado. "yes" ou "md" causa um array não particionável para ser usado. "mdp", "part" ou "p" produz um array particionável (Kernel 2.6 ou superior). O argumento pode vir imediatamente após "-a". Exemplo: "-ap".
Para arrays particionáveis, o mdadm criará o arquivo de dispositivo para toda a série e para as 4 primeiras partições. Um número diferente de partições pode ser especificado no final desta opção, Ex: (--auto=p7). Se o nome do dispositivo terminar com um dígito, os nomes das partições adciona um underline, um 'p' e um número, por exemplo: "/dev/home1_p3". Se não houver um dígito a direita os nomes de partições tem apenas um número adcional. Exemplo: "/dev/scratch3".

PARA MONTAR: (For Assemble)
-u, --uuid=
uuid do array para montar. Dispositivos que não possuem esse uuid especificado são excluídos.

-m, --super-minor=
Menor número de dispositivo que foi criado um array. Dispositivos que não tem número menor que este são excluídos. Se você criar um array /dev/md1, então todos os demais superblocos terão que conter um número menor que 1 mesmo que posterior mente seja montado como /dev/md2.
Atribuindo a palavra literal "dev" para --super-minor fará com que o mdadm use o menor número de dispositivo MD que estiver sendo montado. Exemplo: Ao montar /dev/md0, o mdadm irá procurar por dispositivos menores que 0.

-f, --force
Monta o array mesmo que hajam superblocos apareçam como out-of-date.

-R, --run
Tenta iniciar o array mesmo se menos unidades que foram dadas são necessárias para um array completo. Normalmente se todos os drives não forem encontrados e o --scan não for usado, então o array será montado mas não será iniciado. Com --run será feita uma tentativa para inicia-lo de qualquer maneira.

-a, --auto{=no,yes,md,mdp,part}
Veja esta opção sob as opções Create e Build.

-U, --update==
Atualiza o superbloco em cada dispositivo durante a montagem do array. O argumento dado a esta flag podem ser sparc2.2, summaries ou super-minor.
O argumento sparc2.2 ajustará o superbloco de um array criado em uma máquina Sparc rodando um patch 2.2 do Kernel. Este kernel tem o alinhamento de uma parte do superbloco errado. Você pode usar a opção  --examine --sparc2.2 para o mdadm verificar o efeito que isso teria.
A opção super-minor atualizará o menor campo preferido em cada superbloco para que coincidam com o array de menor número que estiver sendo montado. Isso não é necessário nos kerneis 2.6 e superiores, pois esse ajuste é feito automaticamente.
A opção summaries corigirá os resumos no superbloco. Essa é a contagem do total, trabalho, ativo, falhas e dispositivos de spare.


PARA o MODO MANAGE:

-a, --add
Insere a quente dispositivos listados.

r, --remove
Remove dispositivos listados. Eles não devem estar ativos, dever estar em estado de falha ou serem dispositivos de spare.

-f, --fail
Marca dispositivos listados como falhos.

--set-faulty
O mesmo que -f, --fail


PARA o MODO EXAMINE:

--sparc2.2
Em um array criado em um Kernel 2.2 atualizado com suporte a RAID, o superbloco teria sido criado incorretamente, ou ao menos icompatíveis com kernels 2.4 ou superiores. Usando a marca --sparc2.2 com --examine o superbloco será corrigido antes de ser exibido. Se aparecer para fazer a coisa certa, então o array poderá ser montado com sucesso usando-se as opções --assemble --update=sparc2.2.


PARA o MODO MISC:

-R, --run
Inicia um array parcialmente construído

-S, --stop
Desativa um array liberando todos os recursos

-o, --readonly
Marca um array como "somente leitura"

-w, --readwrite
Marca um array como "leitura escrita"

--zero-superblock
Se o dispositivo tiver um superbloco MD válido md, o bloco é sobre-escrito com zeros. Com a opção -f, --force o bloco onde o superbloco seria sobre-escrito mesmo não aparentando ser válido.

-t, --test
Quando usado com a opção -D, --datail o status de saída do mdadm é setado para refletir o status do dispositivo.


PARA o MODO MONITOR:
-m, --mail
Envia um email para alerta

-p, --program, --alert
Executa um programa sempre que um evento é detectado.

-d, --delay
Atrasa em segundos, gera uma enquete nos MD arrays e aguarda este mesmo tempo antes da enquete seguinte. O tempo default é de 60 segundos.

-f, --daemonise
Instrui o mdad para rodar em background como um daemon se não decidir monitorar nada. Isso causa um fork que roda um processo filho e desconecta o terminal. A identificação do processo filho é escrito na saída padrão stdout. Isso é util com a opção --scan que somente continuará a varredura se um email de alerta for encontrado no arquivo de configuração mdadm.conf

-1, --oneshot
Verifica os arrays uma única vez. Isso gerará eventos NewArray e mais significamente eventos DegradedeArray

-t, --test
Gera um alerta TestMessage para cada array encontrado na iniciação. Esse alerta é enviado por email e aprovado para o programa de alerta. Isso pode ser usado para testar se uma mensagem de alerta é enviada com êxito.


MODO ASSEMBLE

    Uso: mdadm --assemble md-device options-and-component-devices...
    Uso: mdadm --assemble --scan md-devices-and-options...
    Uso: mdadm --assemble --scan options...

Este uso monta um ou mais raid arrays a partir de componentes pré-existentes. Para cada array, o mdadm necessita conhecer o dispositivo MD, a identidade (uuid) do array e o número de dispositivos e componentes. Estes podem ser encontrados sob várias formas.

No primeiro exemplo de uso do modo --assemble ( sem a opção --scan ) o primeiro dispositivo dado é o dispositivo MD. No segundo todos os dispositivos listados são tratados como dispositivos MD e ocorre uma tentativa de montagem. Já no terceiro exemplo ( onde nenhum dispositivo é listado ) todos os dispositivos MD que são listados no arquivo de configuração mdadm.conf são montados.

Se um dispositivo estiver precisamente listado, porém a opção --scan não for dada, o mdadm então age como se a opção --scan tivesse sido dada e as informações são extraídas do arquivo de configuração mdadm.conf.

A identificação do dispositivo pode ser dadad com a opção --uuid, com a opçãp --super-minor, pode ser encontrada no arquivo de configuração mdadm.conf, ou serão obtidas a partir do próprio superbloco no primeiro dispositivo listado na linha de comando.

Os dispositivos podem ser dados na linha de comando --assemble ou no arquivo de configuração. Somente dispositivos que contenham superblocos MD contém a identidade correta serão considerados para qualquer array.

O arquivo de configuração somente é usado se for explicitamente chamado com a opção --config ou requerido com --scan. Em último caso o /etc/mdadm.conf é usado.

Se a opção --scan não for dada em seguida, o arquivo de configuração será usado somente para descobrir a identidade (uuid) dos arrays MD.

Normalmente o array é startado após ser montado. De qualquer formase a opção --scan não for dada e um número insuficiente de unidades forem listados para iniciar um array ( não degradado ) completo, em seguida o array não é iniciado ( para proteção contra erros ). para insistir que o array seja iniciado neste caso deve-se usar a opção --run.

Se uma opção -auto for dada, seja na linha de comando (--auto) ou no arquivo de configuração mdadm.conf ex: auto=part, então o mdadm criará o dispositivo MD se necessário ou a recriará se não enxergar como ele é.

Isso também pode ser usado para lidar com dispositivos particionados. (Que não tiverem um número de dispositivo estável. Este pode mudar após um reboot), e quando se utiliza o udev para gerenciar sua árvore /dev tree (O udev não consegue lidar com dispositivos MD devido as convenções incomuns de inicialização de dispositivo).

Se a opção para "auto" for "mdp" ou "part" or nenhum ( somente na linha de comando ) , o mdadm então irá criar um array MD convencional, não particionável.

Espera-se que a funcionalidade "auto" seja usada para criar entradas de dispositivos com nomes significativos tais como "/dev/md/home" ou "/dev/md/root", ao invés de nomes em bases numéricas do array.

Ao usar esta opção para criar uma array de partições, os arquivos do dispositivo para as primeiras 4 partições também são criados. Se for necessário um número diferente por simplesmente ser anexada a opção "auto". Ex: "aoto=part8". Nomes de partições são criados anexando uma seqüencia de dígitos ao nome do dispositivo, com um intervalo "_p" se o nome do dispositivo terminar com um digito.

A opção --auto tabém está disponível nos modos build e create. Como esses modos não usam o arquivo de configuração, a opção de configuração "auto=" não se aplica a esses modos.


MODO BUILD:

Uso: mdadm --build device --chunk=X --level=Y --raid-devices=z devices

Sua utilização é semlhante ado modo --create. A diferença é que ele cria um array legado sem superbloco. Com esses arrays não há diferença entre criar o array e montar o array posteriormente, exeto se esperarmos que hajam dados úteis no segundo caso.

O RAID só poderá ser 0, RAID0 ou linera. Todos os dispositivos serão listados e o array uma vez concluído será iniciado.


MODO CREATE:

Uso: mdadm --create device --chunk=X --level=Y --raid-devices=Z devices

Essa linha de comando inicializa um novo array MD e  associa os dispositivos a ele e ativa o array.

Se a opção --auto for dada ( conforme descrito em maiores pormenores na seção MODO ASSEMBLE), então o dispositivo MD será criado com o número de dispositivo adequado se for necessário.

Como os dispositivos são adcionados, eles são verificados para ver se contém superblocos RAID ou sistemas de arquivos. Também são verificados para checar se a variação no tamanho do dispositivo seja maior que 1%

Se qualquer discrepância for encontrada, o array não rodará automaticamente, embora a presença de um --run pode substituir este cuidado.

Para criar um array "degraded" onde faltem alguns componentes, simplesmente digite o parâmetro "missing" no lugar do no do dispositivo. Isso fará com que o mdadm deixe um slot vazio no array correspondente. Para um array RAID4 ou 5 no máximo 1 slot pode ser perdido. Para um RAID6, somente um dispositivo real é necessário, todos os demais podem ser "missing", ou seja removidos ou apresentarem falhas.

Ao se criar um array RAID5, o mdadm cria automaticamente um array "degraded" com uma unidade extra de spare. Isso acontece devido a construção do spare em um array degradado é em geral mais rápida do que um resyncing de paridade em um array não degradado, mas não limpo. Este recurso pode ser "sobremontado" com a opção -l --force.

As opções gerais de gerenciamento que são válidas com o modo --create são as seguintes:

--run
Executa um array mesmo se alguns dispositivos enxergarem como eles poderiam estar em uso.

--readonly
Inicia um array no modo "somente leitura", ainda não suportados.


MODO MANAGE

Uso: mdadm device options devices

Isso permite o uso de dispositivos individuais de um array para adciona-los, remove-los gerar falhas. Com o comando --manage é possível fazer diversas operações. Ex:
mdadm /dev/md0 -f /dev/hda1 -r /dev/hda1 -a /dev/hda1
No exemplo acima primeiramente foi marcada uma falha com a opção -f em /dev/hda1 no array /dev/md0 e em seguida ele foi removido do array com a opção -r, e finalmente o adcionamos novamente como spare. Entretanto apenas um array pode ser manipulado por um único comando de cada vez.



MODO MISC

Uso: mdadm options devices

O modo MISC inclui um série de operações distintas para atuar sobre dispositivos distintos. As operações são:

--query
O dispositivo é examinado para verificar se:
1) É um array ativo
2) Se é um componente de um array
A informação é detectada e reportada.

--detail
O dispositivo deve ser um array MD ativo. O mdadm exibirá uma descrição detalhada do array. --brief ou --scan farão com que a saída seja menos detalhada com um formato adequado a ser uma entrada no /etc/mdadm.conf. O status da saída do mdadm normalmente é 0 a não ser que o mdadm não consiga obter informações úteis acerca do dispositivo(s). Entretanto se a opção --test for dada, então o estado da saída será:

0 - O array está funcionando normalmente
1 - O array tem pelo menos um dispositivo defeituoso
2 - O array tem vários dispositivos e ainda pode funcionar (RAID4,5 e 6)
4 - O mdadm encontrou um erro ao tentar obter informações.

--examine
O dispositivo deve ser um componente integrante de um array MD. O mdadm fará a leitura do superbloco MD do dispositivo e exibirá seu conteúdo. Se a opção --brief for dada, ou --scan em seguida vários dispositivos que são componentes de um array são agrupados e comunicados em uma única saída adequada a inclusão no /etc/mdadm.conf.
Se a listagem da opção --scan não listar nenhum dispositivo, fará com que todos os dispositivos no array MD sejam examinados.

--stop
Os dispositivos devem ser arrays ativos e serão desativados, enquanto não estiverem em uso.

--run
Esta opção ativará completamente uma array MD parcialmente montado.

--readonly
Esta marca ativa um array no modo "somente leitura", providenciando que não seja usada.

--readwrite
Isso muda o status do array de "somente leitura" para "leitura/escrita" novamente.

--scan
Para todas as operações exeto --examine, ela fará com que a operação seja aplicada a todos os arrays listados no /proc/mdstat. A operação --scan faz com que todos os dispositivos listados no /etc/mdadm.conf sejam examinados.


MODO MONITOR

Uso: mdadm --monitor options... devices...

Seu uso faz com que o mdadm pesquise periodicamente um número de MD arrays e apresente um relatório sobre todos os eventos observados. O mdadm nunca sai quando ele decide que não há arrays para serem verificados, por isso deve ser executado em background.
Bem como eventos de referência, o mdadm pode mover uma disco de spare de um array para outro se eles estiverem no mesmo spare-group e se o array de destino tiver um disco que haja falhado.

Se os dispositivos forem listados na linha de comando, o mdadm somente irá monitorar estes dispositivos. Do contrário todos os arrays listados no arquivo de configuração mdadm.conf serão monitorados.

O resultado da monitoração de arrays é a geração de eventos. Estes eventos são repassados a um programa separado, caso seja especificado algum e envia um email para um endereço fornecido.

Quando um evento é repassado a um programa este é executado uma vez para cada evento e são dada uma linha de comando de 2 ou 3 argumentos. O primeiro é o nome do evento (veja abaixo). O segundo é o nome do dispositivo MD que for afetado, e o terceiro é o nome de um dispositivo especificado se for relevante, como um dispositivo que haja falhado.

Se a opção --scan for dada deve ser especificado logo em seguida um programa ou um endreço de e-mail na linha de comando ou no arquivo de configuração mdadm.conf. Se estas informações não estiverem disponíveis o mdadm não monitorará nada. Sem a opção --scan o mdadm contuniará a monitorar enquanto algo for encontrado pelo monitor. Se não for especificado nenhum programa ou email for especificado na linha de comando ou no arquivo de configuração cada caso será relatadao para a saída padrão stdout.

O diferentes eventos são:

DeviceDisappeared
Um MD array anteriormente configurado agora aparenta não estar mais configurado ou não está mais em funcionamento.

RebuildStarted
Um array começou a reconstrução..

RebuildNN
Onde NN é 20, 40, 60 ou 80, isso indica o percentual em que se encontra a reconstrução.

RebuildFinished
Um array que não está mais em reconstrução ou por que ela foi concluída ou por que foi abortada.

Fail
Um dispositivo de um array ativo foi marcado como falho.

FailSpare
Um dispositivo de spare que estava sendo reconstruído para substituir um dispositivo que falhou.

SpareActive
Um dispositivo de spare foi ativado com sucesso para subistituir um dispositivo que falhos no array.

NewArray
A novo MD array foi detectado no /proc/mdstat

DegradedArray
Um array recém observado parece degradado. Esta mensagem não é gerada quando o mdadm percebe uma falha em uma unidade que estiver causando a degradação do array. Apenas quando o mdadm percebe que um array está degradado quando o viu da primeira vez.

MoveSpare
Informa que uma unidade de spare foi movida de um array, para outro grupo de spare, para permitir a substituição de um drive.

TestMessage
Um array foi encontrado na iniciação e a flag --test foi dada.

Somente Fail, FailSpare, DegradedArray e TestMessage geram envios de e-mail. Todos os eventos causam a execução do programa externo. O programa com dois ou três argumentos, sendo eles o nome do evento, o dispositivo do array e possivelmente um segundo dispositivo.

Cada evento é associado a um dispositivo associado ao array (Ex: /dev/md1 ) e posivelmente um segundo dispositivo. Para Fail, FailSpare e SpareActive o segundo dispositivo em quatão é relevante. Para MoveSpare o segundo dispositivo é o array para qual o spare foi movido.

Para o mdadm mover spares de um array para outro, diferentes array precisam ser rotulados como sendo do mesmo grupo de spare no arquivo de configuração mdadm.conf. O nome do grupo de spare pode ser qualquer um. Somente é necessário que os diferentes grupos de spare usem nomes diferentes.

Quando o mdadm detecta um array que está em um grupo de spare, o array tem menos dispositivos do que o necessário para integrar um array completo e não tem dispositivos de spare, Ele irá olhar para o outro array que estiver no mesmo grupo de spare que estiver completo, com unidades principais e de spare. Então o mdadm tentará remover o spare do segundo disco e adciona-lo ao primeiro. Se a remoção for bem sucedida e seguda ele é adcionado ao array original.


MODO GROW

O modo GROW é usado para alterar o tamanho ou formato de um array ativo. Para isso funcionar o kernel deve ter o suporte necessário. Varios tipos de redimensionamento foram adcionados durante a evolução do kernel da série 2.6, inclusive de adcionar mais dispositivos a um array RAID5.

Atualmente é o único suporte disponível para alterar o atributo "size" de um array com redundância, e o atributo raid-disks de um array RAID1.

Normalmente quando um array é construído o parâmetro "size" é extraído da unidade de menor tamanho. Se todas as unidades menores em um array são removidas e substituídas por discos maiores um de cada vez, você então terá um conjunto de discos grandes com uma pequena parcela deles sendo usada. Nesta situação, alterando o "size" com o modo "GROW" permitirá o uso do novo espaço extra nos novos discos. Se o o tamanho for aumentado desta forma, um processo "resync" será executado para sincronizar os novos discos do array.

Note que quando uma matriz tem seu tamanho alterado, qualquer sistema de arquivos armazenado pode não usar todo o espaço integralmente podendo ser necessário também redimenciona-lo.

Um array RAID1 pode trabalhar com qualquer número de dispositivos sendo 1 o número mínimo. Caso você deseje aumentar ou diminuir o número de dispositivos. Note que isso é diferente de adcionar ou remover dispositivos a quente, ou "on-the-fly". O que alterará o número de dispositivos inativos.

Quando se reduz o número de dispositivos em um array RAID1, os slots removidos do array já deverão estar vazios.

Quando o número de unidades for aumentado, os hotspares que estiverem presentes serão imediatamente ativados.



EXEMPLOS

mdadm --query /dev/md0
mdadm --query /dev/sd[ab]
Este comando detectará se um dispositivo é um array ou faz parte de um.O primeiro por exemplo fornecerá a seguinte saída.
/dev/md0: 260.84GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
Se fizermos uma --query para os discos individualmente como o segundo exemplo a saída será:
/dev/sda: is not an md array
/dev/sda: device 1 in 2 device mismatch raid1 /dev/md0.  Use mdadm --examine for more detail.
/dev/sdb: is not an md array
/dev/sdb: device 0 in 2 device mismatch raid1 /dev/md0.  Use mdadm --examine for more detail.

mdadm --stop --scan
Este comando fará um shutdown todos os arrays ou um que seja especificado (Ex: /dev/md0). Isso normalmente é associado a um script de shutdown do sistema, embora atualmente não seja mais usado.

mdadm --follow --scan --delay=120
Se houver, (e somente se houver) um endereço de e-mail ou algum programa especificado no arquivo de configuração mdadm.conf, o mdadm monitorará o status de todos os arrays listados no mdadm.conf a cada 2 minutos, vide exemplo acima.

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hd[ac]1
Cria um array RAID1 (/dev/md0) composto pelos discos /dev/hda1 e /dev/hdc1
Note que os comandos mdadm suportam experessões regulares.

echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf
mdadm --detail --scan >> mdadm.conf
Isso criará um protótipo do arquivo de configuração que descreve os arrays ativos. Este arquivo deve ser revisto, pois pode conter detalhes indesejados.

echo 'DEVICE /dev/hd[a-z] /dev/sd*[a-z]' > mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> mdadm.conf
Este encontra todos os discos IDE ou SCSI que podem integrar um array e guarda-los em um mdadm.conf

mdadm --examine --brief --scan --config=partitions
Cria uma lista de dispositivos através da leitura do /proc/patitions e escaneia os superblocos RAID  e exibe uma lista resumida de tudo o que for encontrado.

mdadm -Ac partitions -m 0 /dev/md0

Escaneia todas as partições e dispositivos listados no /proc/partitons e monta o dispositivo /dev/md0 com todos os dispositivos listados como um superbloco RAID de número menor que 0

mdadm --monitor --scan --daemonise > /var/run/mdadm
Se o mdadm.conf contiver um endereço de e-mail ou um programa, o mdadm será rodado em background no modo monitor e irá monitorar todos os dispositivos MD. Será também escrito o pid (número de identificação do processo) do mdadm em /var/run/mdadm.

mdadm --config --help
Exibe o help sobre o formato do arquivo de configuração.

mdadm --help
Exibe um help genérico.



FILES ( arquivos de configuração e relacionados ao mdadm )

/proc/mdstat
Se você estiver usando o /proc, o /proc/mdstat lista todos os dispositivos MD ativos com informações sobre os mesmos. O mdadm usa o /proc/mdstat para procurar arrays quando é dada a opção --scan no modo MISC ou irá monitorar a reconstrução de um array no modo MONITOR.

/etc/mdadm.conf

É o arquivo de configuração padrão do mdadm. Contém os dispositivos que podem ser verificados e manipulados pelo mdadm, se contém dispositivos de bloco e fornece informações sobre os arrays e seus componentes, tais como UUID. Sugerimos a leitura do manual (man mdadm.conf) para maiores detalhes.


NOTA

O mdadm era no passado conhecido como mdctl


VEJA TAMBÉM

Para informações acerca de diversos níveis de RAID.
http://ostenfeld.dk/~jakob/Software-RAID.HOWTO/

Para novas versões e níveis de RAID verifique:
ftp://ftp.kernel.org/pub/linux/kernel/people/mingo/raid-patches ou http://www.cse.unsw.edu.au/~neilb/patches/linux-stable/

PÁGINAS de MANUAL RELACIONADAS:

mdadm.conf(5), md(4).

raidtab(5), raid0run(8), raidstop(8), mkraid(8)

9 de abr. de 2010

Bind no Slackware

Transcrição do artigo publicado em 13/12/2004 por Geyson Rogério L. Silva no site http://www.slackware-brasil.com.br/ de autoria de Alex Sandro Gonzales Rodrigues
introdução
Este artigo é voltado para iniciantes no BIND, tentando mostrar de uma maneira simples e clara como configurar um domínio fictício no BIND que vem junto com o Slackware 10. Iremos configurar um domínio da empresa fictícia "Slacks" para melhor compreensão.
O que é DNS
Não falarei sobre o protocolo IP, mas quem já estudou sabe que, seja na Internet ou numa intranet, em tudo o que fazemos, seja navegar, mandar e-mails ou outra coisa, nossas informações São "quebradas" em pequenos pedacinhos denominados "datagramas IP", e que nossas mensagens chegam ao destino baseado no número IP que está no cabeçalho da nossa mensagem, ou seja, os computadores na Internet ou numa intranet se comunicam e se localizam baseando-se nesse endereços IP. Então, quando nós acessamos um site "www.qualquercoisa.com.br", na verdade esse endereço é um endereço IP do tipo "200.256.34.6". Mas já imaginou se tivéssemos que digitar na barrinha de endereços no nosso browser o número IP do site ao invés do seu nome? Seria horrível guardarmos números ao invés de caracteres... Foi por isso que surgiu o DNS, pois temos muito mais facilidade em memorizar nomes do que números.
O DNS (Domain Name System), é um serviço cliente/servidor baseado em hierarquias, em que a parte cliente é conhecida como resolver (resolvedor) e a parte servidora como name server. As conexões entre o cliente e o servidor se dão através da porta UDP 53.
De uma forma simples, a função do resolver (cliente) é passar as consultas da aplicação (o browser, por exemplo) para o servidor de nomes, e este por sua vez consultará uma base de referências entre IPs e nomes e enviará o resultado para o cliente.
Estrutura de domínios
Como falamos, o DNS é baseado em uma estrutura hierárquica, em que o processo de resolução se dá da hierarquia mais alta para a mais baixa. O ponto mais alto da hierarquia é chamado de root-level-domain, ou domínio raiz, que é representado por um caractere '.'.
O próximo nível da hierarquia são os top-level-domain, ou domínios de primeiro nível. Eles são representados por códigos DPN (domínio de primeiro nível). Alguns deles são:
* com - Organização comercial
* mil - Militar
* net - Redes (backbones para a Internet)
* org - organizações sem fins comerciais
* gov - governamental
* xx - Sigla do país representado por dois caracteres. Ex: br, uk
Zona de autoridade
É a parte do domínio ao qual um servidor de DNS é o responsável. Em cada zona tem-se um arquivo de zona que é a base de referências entre os IPs e nomes desta zona.
Servidor primário
É o servidor onde estão os arquivos originais da zona. Só pode existir um servidor primário por zona.
Servidor secundário
Aqui é onde ficam as réplicas dos arquivos de zona, que podem ser consultados no caso de inoperabilidade do servidor primário. Ao contrário do servidor primário, podem existir vários servidores secundários. No Brasil, para que possamos registrar um domínio é obrigatório ter dois servidores: o Primário e também um Secundário.
Servidor master
É aquele servidor para o qual um servidor secundário irá solicitar as cópias dos arquivos de zona.
Servidor cache
É aquele servidor que não responde por zona alguma. Sua função é apenas armazenar resultados de consultas que ele armazena em cache. Assim, novas consultas ao mesmo registro serão atendidas com mais rapidez.
Instalação
A instalação do BIND no Slackware 10 é muito simples. Basta você colocar o CD 1 do Slackware, e após montado o CD-ROM, entrar na pasta Slackware/n do CD e digitar no console:
# installpkg bind-9.2.3-i486-1.tgz
Pronto, o BIND foi instalado no sistema. Pra quem não sabe, o nome do daemon do pacote BIND é named. A instalação ficou assim:
* /etc/named.conf - Arquivo de configuração geral do BIND.
* /usr/sbin/named - O binário (daemon) do BIND.
* /usr/doc/bind-9.2 - Manual em html muito bom do BIND em inglês.
* /var/named/caching-example/ - Diretório com arquivos exemplo de configuração básicos do BIND

Uma vez que estamos familiarizados com a instalação do BIND,passaremos para a melhor parte: a configuração :-)
Configuração do named.conf
O primeiro arquivo que iremos configurar é o /etc/named.conf. Vá em um editor de textos e abra o arquivo. Abaixo segue um exemplo explicativo do arquivo named.conf.
options {
directory "/var/named";
version "uhuh";
minimal-responses yes;
allow-transfer {192.168.0.2;};
listen-on {127.0.0.1; 192.168.0.1;};
allow-recursion {127.0.0.1; localhost; 192.168.0.0/24;};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "caching-example/named.ca";
};
zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};
zone "0.0.168.192.in-addr.arpa" IN {
type master;
file "caching-example/domain.rev";
allow-transfer { 192.168.0.2; };
};
zone "slacks.com.br" IN {
type master;
file "caching-example/slacks.host";
allow-transfer { 192.168.0.2; };
};
Exame do arquivo named
O arquivo começa com as opções que afetarão o servidor de forma global. Eis a explicação das diretivas do arquivo:
* directory - Aqui você indica qual será o diretório onde ficará os arquivos de registros DNS. Se quiser pode colocar em outro diretório válido ao invés do proposto no nosso exemplo.
* version - Para poder ocultar a sua versão do BIND contra bisbilhoteiros lammers que não tem o que fazer, coloque essa opção com o que você desejar. No meu caso a versão do meu BIND ficou como "uhuh".
* minimal-responses - Se habilitado, quando o servidor gerar respostas, somente adicionará registros na autoridade quando requerido. Esta opção aumenta a performance do servidor.
* allow-transfer - Aqui você indica quem poderá fazer transferência de autoridades. Opção muito importante a ser colocada, pois aqui você indica quem poderá fazer transferência de zona do seu servidor, que no nosso caso é um servidor primário, logo a única maquina que pode ter autorização de transferência de zonas será o nosso servidor secundário. Coloque o IP do seu servidor secundário aqui, pois isso evitará que pessoas mal intencionadas possam fazer transferência de autoridades do teu domínio. No meu caso coloquei o IP 192.168.0.2
* listen-on - Aqui você especifica quais interfaces estão habilitadas a "escutar" conexões na porta UDP 53 do DNS. No meu caso tenho 2 placas de rede, mas só habilitei a minha interface que atende pelo IP 192.168.0.1 e a interface loopback.
* allow-recursion - Caso vá usar um DNS que será acessível pela Internet, é bom que você não deixe que esse pessoal faça recursões, ou seja, que eles pesquisem outros domínios que não sejam os que você tem cadastrado no seu servidor. No nosso caso, o pessoal da Internet só poderá pesquisar o único domínio que teremos cadastrado que é o "slacks.com.br", enquanto que o pessoal da minha rede interna "192.168.0.0" poderá pesquisar qualquer site além do domínio local, como "www.slackware.com" ou outro qualquer. Com essa opção devidamente configurada, você evitará o ataque chamado de "cache-poisoning", no qual o cracker coloca em seu DNS registros pra te enganar.

Após as opções, vem as zonas propriamente ditas.
A primeira que aparece é a zona raiz (lembra? Aquela que é representada por um ponto?). É neste arquivo que ficam os endereços de servidor DNS da zona raiz, que como vimos são necessários para podermos acessar endereços de fora da nossa rede (Internet). Você deve baixar esse arquivo e mantê-lo atualizado se o seu servidor DNS for válido na Internet. Você pode baixá-lo por ftp :

# ftp ftp.internic.net
ftp> cd domain
ftp> get named.root
ftp> exit

Pronto, agora é só você mover esse arquivo de acordo com o nosso exemplo:
# mv named.root /var/named/caching-example/named.ca
A próxima zona é da configuração do nosso localhost. Aqui você não precisa fazer nada.
A próxima zona é a zona reversa para o nosso localhost, que no caso é o endereço loopback 127.0.0.1. Você não precisa fazer nada aqui também.
A próxima zona é a zona reversa para o nosso domínio que ainda vamos configurar. Por enquanto apenas crie o arquivo de configuração domain.rev em /var/named/caching-example. Aqui você vê a opção allow-transfer habilitando a transferência da zona reversa do nosso domínio apenas para o servidor 192.168.0.2, que seria o servidor secundário.
A próxima zona, é a zona do nosso domínio proposto aqui nesse artigo, a zona slacks.com.br. Como você pode ver ela é do tipo master, e só está habilitada a transferência dessa zona pelo IP 192.168.0.2, que seria o nosso secundário. Por enquanto, apenas crie o arquivo slacks.host no diretório /var/named/caching-example.
Alguns lembretes: Preste MUITA atenção na sintaxe do arquivo, para não esquecer nenhuma chave, ponto e vírgula, ou um único ponto, pois caso esqueça de apenas um único ";", o servidor NÃO FUNCIONARÁ. Comentários nesse arquivo começam com "//".
A zona reversa
Bom, o arquivo named.conf já está pronto! Agora iremos editar dois arquivos para que o nosso domínio funcione. Sim, são aqueles dois arquivos que nós criamos, o domain.rev e o slacks.host.
Abaixo segue o conteúdo do arquivo de domínio reverso, o domain.rev.
$TTL 86400
$ORIGIN slacks.com.br.
0.168.192.in-addr.arpa IN SOA servidor.slacks.com.br. root.servidor.slacks.com.br. (
&n bsp; 2004101901 ; Serial de sincronização
&n bsp; 3H ; refresh
&n bsp; 15M ; retry
&n bsp; 1W ; expiry
&n bsp; 1D ) ; minimum
NS dns.slacks.com.br.
1 IN PTR ftp
1 IN PTR www
2 IN PTR dns2
1 IN PTR smtp
E agora uma breve explicação:
O $TTL se refere ao time-to-live, o tempo de vida do registro que é medido em segundos. Então, no nosso exemplo, o tempo de vida é de 86400 segundos.
$ORIGIN é uma variável que o BIND usa para registros que não entende. É onde você coloca o nome do seu domínio em qualquer registro não-qualificado. Para entender melhor: ao invés de num registro você colocar isso:
www.slacks.com.br. IN A 192.168.0.1
Com o uso da diretiva $ORIGIN, bastará fazer isso:
www IN A 192.168.0.1
Entendeu? Ao fazermos referência ao site www.slacks.com.br, bastará colocar www, que o nome do domínio será adicionado automaticamente.
Na terceira linha nós temos 0.168.192.in-addr.arpa, que é o nome padrão da nossa zona reversa. Só para lembrar, zona reversa é aquela que definimos para que as consultas inversas sejam atendidas, ou seja, quando temos o IP, mas não temos o nome. Em seguida temos IN SOA, que indica um Start of authority, que é utilizado para a parametrização do servidor, indicando um início de autoridade. A seguir colocamos o nome da máquina (que você tem registrado em /etc/hosts) + o nosso domínio. E por último o nome do responsável pelo domínio.
Em seguida, entre parênteses, temos 5 números, que dizem ao relacionamento entre o servidor primário com o secundário:
* 2004101901 - Como comentado é o serial de sincronização, entre os servidores, é formado pela data + valor inicial. No nosso caso é 19/10/2004, com valor inicial 01. O valor dessa serial deve ser alterado sempre que houver alguma modificação nesse arquivo, para que o servidor secundário possa sincronizar-se com o master.
* 3H - É o valor de refresh, o intervalo de tempo que o servidor secundário efetuará uma consulta do número de série do servidor master e realizar a sincronização caso necessário. No nosso caso é 3 horas
* 15M - Intervalo de tempo em que o servidor fará um retry (nova consulta), em caso de por algum motivo haja u ma falha de comunicação ao contatar pela primeira vez.
* 1W - Tempo de expiração dos registros em cache no servidor secundário. No nosso caso é uma semana.
* 1D - O mínimo em que se manterá os registros em cache, neste caso é um dia.

Em seguida temos NS dns.slacks.com.br, que está informando qual é o servidor DNS do domínio.
Em seguida, temos os registros do tipo PTR (Point Record), que são utilizados para informar quais são os endereços inversos da zona reversa. O 1 IN PTR www, está nos informando que o IP 192.168.0.1, atende pelo nosso "www".
Configurando o domínio
Bom, agora que já configuramos a zona reversa, vamos configurar o arquivo slacks.host, que tem os registros do nosso domínio. Veja o arquivo abaixo:
$TTL 86400
@ IN SOA servidor.slacks.com.br. root.servidor.slacks.com.br. (
2004101901 ;Serial de sincronização
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
NS dns.slacks.com.br.
IN MX 10 slacks.com.br.

localhost IN A 127.0.0.1

slacks.com.br. IN A 192.168.0.1
dns IN A 192.168.0.1
dns2 IN A 192.168.0.2
www IN A 192.168.0.1
ftp IN A 192.168.0.1
mail IN CNAME slacks.com.br.
pop IN CNAME slacks.com.br.
router IN A 192.168.0.5
Agora a explicação:
A primeira linha refere-se ao TTL (time to live), e aqui tem a mesma função explicada anteriormente.
Na segunda linha tem-se o '@', que significa 'neste servidor'. Em seguida temos o 'IN SOA' (Start of Authority), que indica que os registros seguintes contém informações autoritativas sobre o domínio, depois tem o nome do servidor juntamente com o nome do domínio, e por último o responsável pelo domínio, que no nosso caso é o root.
Depois, entre parênteses, temos novamente informações que dizem a respeito à interação entre servidor primário e secundário, e seu funcionamento é exatamente igual ao que já foi explicado juntamente com arquivo anterior.
A seguir temos a linha com a opção 'NS' (name server), que nos indica qual é o servidor de nomes do master do domínio. Após, temos uma entrada 'MX', que indica que o servidor de e-mails principal está no domínio slacks.com.br.
O número (10) indica a prioridade do servidor (caso houvesse mais de 1 servidor de e-mail), quanto menor esse número, maior a prioridade.
Em seguida temos as traduções propriamente ditas, utilizando-se a diretiva 'IN A', que faz o mapeamento de nome para IP. Também você pode observar o 'CNAME', que associa um apelido da máquina com seu nome de máquina canônico. No nosso exemplo, podemos observar que nossos servidores ftp, http, de e-mail, além do próprio DNS estão na mesma máquina e que o que seria nosso servidor secundário está em outra máquina, com IP 192.168.0.2.
Bom, agora que está tudo configurado, salve esses arquivos e starte o BIND.
# /etc/rc.d/rc.bind start
Conclusão
Pronto. Agora está tudo certinho! Experimente dar um ping para o www, por exemplo:
$ ping www.slacks.com.br
Se obtiver resposta, então está OK!!
Uma última observação: quando for colocar em seus arquivos de registro referência a domínios, não esqueça de colocar o "." no final.
Exemplo: slacks.com.br (isto está errado, pois faltou o ponto).
Bom, este é meu primeiro artigo sobre Linux que coloco na Internet. Qualquer crítica construtiva, errata ou dúvida, estarei na área.
Por: Alex Sandro Gonzales Rodrigues

29 de mar. de 2010

Slax como USB live.

Este é uma complementação do artigo Customizando e atualizando o Slax, onde abordaremos de maneira prática como implementar o Slax em um chaveiro USB inicializável.

Primeiramente com o comando "fdisk -l" vamos checar a geometria do pendrive, bem como qual é o esquema de particionamento do seu hardware. A saída será algo parecido com o seguinte:

Disk /dev/sdb: 1006 MB, 1006632960 bytes
31 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 1922 * 512 = 984064 bytes
Disk identifier: 0x9748f5ce

Device      Boot   Start  End  Blocks Id  System
/dev/sdb1


Notem que o fdisk nos revela que o dispositivo tem 31 cabeças, 62 setores/trilha e 1022 cilindros, atentem para isso.

Excluímos a partição /dev/sdb1 com o comando dd:

# dd if=/dev/zero of=/dev/sdb bs=512 count=1

Feito isso vamos recriar a partição com o comando cfdisk:

# cfdisk /dev/sdb

No cfdisk, sigam os seguintes passos:

New > Bootable > Type (selecione o b que é fat32) > write > (digite yes literalmente). Outros utilitários de particionamento podem ser utilizados.

Agora começa a parte interessante, vamos formatar o pendrive com as ferramentas do Syslinux.

Com o utilitário mkdiskimage vamos formatar o pendrive (opção -F - a opção -F formata o pendrive como FAT32) e criar uma MBR de acordo com a geometria do pendrive, é importante que isso seja observado sob pena do pendrive não bootar com algumas versões de BIOS.

# mkdiskimage -F /dev/sdb 0 31 62
# syslinux -s /dev/sdb1

O próximo passo será montar a imagem ISO do Slax e copiá-la para o pendrive:

# mount -t vfat /dev/sdb1 /mnt/sdb1/
# mount -t iso9660 -o loop slax-6.1.2.iso /mnt/iso/
# cp -rav /mnt/iso/* /mnt/sdb1/

Pronto, você agora tem seu Slax USB Live!

Bom trabalho a todos!

Customizando e atualizando o Slax

Começando do começo
Primeiramente, depois de baixarmos a imagem ISO do Slax, vamos montá-la ou gravar num CD, no meu caso eu a montei para começar a customização com o comando:

# mount -t iso9660 -o loop slax-6.1.2.iso /mnt/tmp/

Em seguida criaremos um diretório /SlaxCustom com o comando mkdir -p /SlaxCustom e copiaremos o conteúdo da ISO para este diretório.

# cp -pRfv /mnt/tmp/* /SlaxCustom/

Feito isso podemos começar.

O menu de iniciação do Slax
As versões superiores a 6.0.x possuem um menu de iniciação ao invés do prompt de boot, eu particularmente prefiro o velho prompt, onde poderia passar parâmetros de iniciação ao kernel, tais como desabilitar ACPI para algumas máquinas problemáticas, alterar a resolução de vídeo no console, pois o modo texto default é quase ilegível, dependendo do que vamos fazer, quebrando linhas etc.

Use o seu editor preferido e vamos editar o arquivo /SlaxCustom/boot/slax.cfg.

Para habilitar o prompt: 0 desabilitado, 1 habilitado

PROMPT 1

Para alterar o tempo de exibição do prompt antes de ingressar no menu de iniciação (em décimos de segundo), 100 serão 10 segundos, 50 5 segundos e assim por diante:

TIMEOUT 50

Logo abaixo existem os parâmetros para definir as medidas do menu, não recomendo alterá-las sem estudar suas características para não deformar o menu.

Em seguida temos os itens do menu de iniciação com a seguinte sintaxe:

LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/
TEXT HELP
    More about currently selected:

    Run Slax the best way we can.
    Try to autoconfigure graphics
    card and use the maximum
    allowed resolution
ENDTEXT

Atentem para os parâmetros de APPEND, neste ponto é que passamos parâmetros para o kernel.

O parâmetro telinit~4 por exemplo instrui o sistema a iniciar com o runlevel 4, ou seja, iniciando o X durante o boot.

Caso desejemos por exemplo o modo texto 1024x768x256, a linha de APPEND ficaria assim:

APPEND initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw changes=/slax/ vga=775

Notem que não há especificação do parâmetro telinit~4, então ele assumirá o runlevel default do Slax, que é o 3 (modo texto multiusuário).

Se desejar criar entradas de menu basta acrescentar seções como acima. Ex.:

LABEL 1024768
MENU LABEL Text 1024x768
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw changes=/slax/ vga=775
TEXT HELP
   More about currently selected:

   Run Slax in textmode 1024x768
   and start on runlevel 3,
   command prompt only
ENDTEXT

========================================
Instalando, desinstalando e atualizando pacotes e módulos do Slax
Há duas maneiras de instalar pacotes no Slax, a primeira é criando módulos a partir de pacotes do Slackware, vejamos como funciona.

No diretório /SlaxCustom/slax/tools se encontram os scripts e programas utilitários para manipularmos o Slax, vejamos o que cada um faz.

lzm2dir
Como o próprio nome sugere, "lzm to dir", ele descompacta os arquivos lzm, que são os módulos do Slax. Sua sintaxe é:

./lzm2dir /SlaxCustom/slax/base/001-core.lzm /SlaxRootDir/

No exemplo acima criamos primeiro um diretório:

# mkdir -p /SlaxRootDir

E em seguida descompactamos o módulo 001-core.lzm, que corresponde ao diretório raiz do Slax, bem como todos os aplicativos de console. Citei este especificamente por que mais adiante vamos ver a segunda forma de instalar e atualizar pacotes.

Digamos que você deseje instalar o Tighvnc por exemplo como um módulo. Baixamos o pacote de um mirror:

# wget http://ftp.belnet.be/packages/slackware/slackware-current/extra/tightvnc/tightvnc-1.3.10-i486-1.txz

Em seguida vamos transformá-lo em um módulo do Slax com a ferramenta txz2lzm.

# ./txz2lzm tightvnc-1.3.10-i486-1.txz /SlaxCustom/slax/base/txz 009-tightvnc.lzm

Atentem para dois detalhes importantes, o primeiro é o diretório da árvore do Slax onde ele é instalado, no caso o /SlaxCustom/slax/base. Os módulos instalados neste diretório são instalados por default no sistema de arquivos do Slax, caso queira deixar o pacote presente na árvore do Slax, porém sem ser instalado, basta direcioná-lo para o diretório /SlaxCustom/slax/modules.

Quando o módulo neste caso pode ser ativado ou desativado com os utilitários activate e deactivate, o outro detalhe é o número que precede o nome que daremos ao pacote, ele determina a ordem em que ele será ativado no sistema, então temos 001 para o sistema raiz, 002 para o xorg e assim por diante. A extensão .lzm é obrigatória em ambos os casos.

A segunda maneira é efetuar a instalação diretamente na raiz da árvore do Slax e é muito parecida com a instalação e atualização de pacotes convencionais do Slackware. Vejamos como funciona este método.

Primeiramente devemos descompactar o sistema raiz como mencionamos anteriormente:

# ./lzm2dir /SlaxCustom/slax/base/001-core.lzm /SlaxRootDir/

Feito isso podemos instalar pacotes diretamente nesta árvore. Ex.:

Baixamos o pacote de:
http://ftp.belnet.be/packages/slackware/slackware-current/slackware/ap/slackpkg-2.80.2-noarch-3.tgz

Agora basta instalá-lo:

# installpkg --root /SlaxRootDir slackpkg-2.80.2-noarch-3.tgz

Citei este exemplo porque podemos depois disso fazer um chroot e atualizar o Slax normalmente pelo Slackpkg, como faríamos com o Slackware. Ex.:

# chroot /SlaxRootDir
# slackpkg upgrade pkgtools
# slackpkg install iproute2

Acrescentando arquivos à árvore do Slax
Se você desejar incluir tanto com o fim de acrescentar como de sobrescrever arquivos na árvore do Slax, basta acrescentar os arquivos com o path completo no diretório /SlaxRootDir/rootcopy/. Ex:

# cp -pRfv --parents /etc/dhcpd.conf /SlaxCustom/slax/rootcopy/

No caso o arquivo /etc/dhcpd.conf será acrescentado no respectivo path após o Slax iniciado.

Recriando a ISO bootável modificada do Slax
Após serem feitas as alterações desejadas, vamos a criação da imagem ISO bootável do Slax. No diretório /SlaxCustom/slax há o script make_iso.sh, basta executá-lo com a seguinte sintaxe:

# ./make_iso.sh /SeuDiretorio/NomeDaSuaImagem_Slax.iso

Pronto! Agora é apenas gravar seu live CD do Slax customizado.

Bom trabalho para todos!

24 de mar. de 2010

Exemplos práticos de backup com o utilitário rsync e o agendador de tarefas crontab.
Para os que tem dificuldades com o VI do crontab altere o editor padrão conforme indicado na dica.
insira no crontab com com freqüencia você deseja que o backup seja feito a linha de comando abaixo. Notem que este sistema foi implementado com dois discos rígidos que trabalham em redundância.
O crontab: o crontab é um arquivo texto com instruções de quais, quando e com que freqüencia uma ou mais tarefas serão executadas em um sistema Linux/Unix sua disposição é a seguinte:
min
hora
dia-mês
mês
dia-semana
comando
*
*
*
*
*
*
0 a 59
0 a 23
1 a 31
1 a 12
0 a 6
-
Obs: Para os dias da semana usa-se a seguinte disposição: 0 para domingo, 1 para segunda, 2 para terça e assim por diante. Os asteriscos são usados para omitir as suas respectivas unidades de tempo.
Exemplos de utilização do crontab.
1,21,41 * * * * echo "Funciona!"
Aqui está dizendo: "o comando do sexto campo toda hora, todo dia, nos minutos 1, 21 e 41"
30 4 * * 1 rm -rf /tmp/*
Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da manhã.".
0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg
Aqui está dizendo: "Executar o mrtg como usuário root, durante 5 e 5 minutos dos minutos 0-59. Ou seja, executar de 5 em 5 minutos o mrtg sempre.".
#rsync -avP /mnt/hda2/diretorio_protegido_por_backup/ /mnt/hdb2/backup_do_diretorio_protegido_por_backup/
Note a barra "/" no final de cada path. Quando ela é usada apenas o conteúdo do diretório é copiado para o destino. Se a linha for sem a barra "/" o diretório inteiro será copiado para o destino.
Basta agora inserir sua linha de comando do rsync no crontab e o seu backup será efetuado conforme especificado. Não se esqueça de levantar o serviço crond para que o agendador funcione.

NOTA de créditos.
Com relação ao crontab foram extraídos da página do Eitch http://www.devin.com.br/eitch/

Proxy ARP

Quando se deseja que um serviço rodando em uma máquina da sua rede interna (192.168.y.z) possa ser acessado a partir da internet podemos fazer duas coisas.
A primeira é com o iptables, mas esta solução fica um tanto complicada quando a máquina possui muitos serviços que devam ser acessados.
A segunda muito mais simples de ser implementada é com a ferramenta ip do pacote iproute2. Segue abaixo a linha de comando.
ip neigh add lladdr 00:16:76:fe:41:9b proxy v.x.y.z dev ppp0
Onde:
v.x.y.z é o IP da sua interface de saída para a internet no caso ppp0
Não esqueça de habilitar o suporte ao proxy-ARP em seu Kernel
echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo "1" > /proc/sys/net/ipv4/conf/eth1/proxy_arp
Lembrando apenas que a máquina em questão deve ter seu endereço MAC listado na tabela ARP do seu gateway caso deseje uma tabela ARP estática você pode criar um arquivo /etc/ethers conforme a listagem abaixo:
192.168.10.10 00:16:76:fe:41:9b
192.168.10.20 00:18:ff:1f:d1:ba
Para carrega-la basta digitar o comando arp -f
Uma outra alternativa mais completa e elegante é usar a ferramenta ip para criar uma tabela estática, conforme os comandos abaixo:
ip neigh add 192.168.10.10 lladdr 00:16:76:fe:41:9b dev eth0
ip neigh add 192.168.10.20 lladdr 00:18:ff:1f:d1:ba dev eth0
Onde: eth0 é a interface de rede do gateway que dá para sua rede interna.
Paz e saúde!

Destruindo arquivos e sistemas de arquivos de forma segura

Destruindo arquivos/partições de forma mais segura.
Esta seção tem a intenção de conscientizar o administrador do uso devido de técnicas para garantir que dados sensíveis sejam apagados de forma segura em seu sistema.
Quando um arquivo é apagado, apenas a entrada na tabela de inodes é mexida, e ele pode ainda ser recuperado com o debugfs e um pouco de paciência e engenharia. O mesmo acontece com as partições, que podem ser recuperadas com facilidade (isto é explicado no nível Intermediário do guia). Esta recuperação é proporcionada pelas regras de funcionamento do sistema de arquivos e do esquema de particionamento, ou seja, são permitidas pelo SO.
Vou um pouco mais além: O disco rígido é uma mídia magnética e opera de forma mecânica para ler/gravar dados. Quando um arquivo é apagado, seja por qualquer motivo, ainda é possível recupera-lo. O que permite isto é porque o HD nem sempre tem a precisão de gravar exatamente no mesmo lugar (pois a cabeça é movida mecanicamente), gravando em trilhas microscópicamente vizinhas a anterior. Então a imagem do arquivo que foi apagada continua lá. Segundo ouvi falar, a NASA possui recursos para recuperar até 60 regravações posteriores no disco. É claro que isto pode ocorrer em pouco tempo, dependendo do tamanho de sua partição e se esta for uma /var/spool em um servidor de e-mails :-)
Baseado nesta teoria, você poderá apagar os dados de forma destrutiva usando o programa shred, que regrava o arquivo repetidamente com dados aleatórios. Sua sintaxe é a seguinte:
shred -n 70 -v -u arquivo
Isto faz com que ele regrava o conteúdo do arquivo 70 vezes com dados aleatórios. O -u trunca e remove o arquivo após concluído.
Note que o uso de dados aleatórios serve para destruir as possibilidades de uma recuperação simples, este é o motivo de se recomendar sempre o uso de /dev/urandom ao invés de /dev/zero para destruição de arquivos.
OBS1: Saiba exatamente o que está fazendo pois estes procedimentos servem para dificultar ao máximo a recuperação de dados.
OBS2: Caso esteja usando um sistema de arquivos criptografado, estes procedimentos são praticamente desnecessários (dependendo do nível de segurança e algorítmos que você utiliza).
Texo extraído do Guia Foca/Linux http://focalinux.cipsga.org.br/