Arquivo

Archive for maio \27\+00:00 2009

O gerenciador de boot GRUB…

Gerenciadores de boot são softwares capazes de iniciar o processo de carregamento de sistemas operacionais em um computador. Por diversas razões, é comum encontrar máquinas que possuem mais de um sistema operacional instalado. Nestes casos, os gerenciadores de boot têm papel importantíssimo, pois cabe a eles a tarefa de permitir ao usuário o carregamento de um ou outro sistema. Este artigo apresentará e abordará as principais características do GRUB, um gerenciador de boot cada vez mais usado, principalmente em instalações que envolvem o Linux.

O GRUB

GRUB é a sigla para GRand Unifield Bootloader. Trata-se de um gerenciador de boot desenvolvido inicialmente por Erich Stefan Boleyn, disponibilizado como software GNU. Entre seus principais recursos está a capacidade de trabalhar com diversos sistemas operacionais, como o Linux, o Windows e as versões BSD, e seu conseqüentemente suporte a vários sistemas de arquivos, como o ext2, ext3, reiserfs, FAT, FFS, entre outros.

Um dos motivos mais óbvios para o GRUB ser usado é sua capacidade de permitir que o usuário escolha um dos sistemas operacionais instalados em seu computador. Em outras palavras, o GRUB é capaz de trabalhar com “multiboot”. Além disso, esse gerenciador também é capaz de “bootar” sistemas em discos SCSI ou mesmo carregá-los através de imagens disponíveis em rede.

Instalação do GRUB

Muitas distribuições Linux permitem a adição do GRUB no computador durante a instalação do sistema. No entanto, se você já tem o Linux instalado em sua máquina, a instalação do GRUB não é complicada (e geralmente deve ser feita através de um usuário com privilégios de administrador).

Supondo que seu sistema conte com o recurso apt-get, dê o seguinte comando:

apt-get install grub

Quando esse processo for concluído, crie uma pasta de nome grub em /boot e, em seguida, dê o comando update-grub para que o arquivo menu.lst seja criado:

mkdir /boot/grub
update-grub

Feito isso, adicione o grub ao MBR (Master Boot Record) através do seguinte comando (esteja ciente de que o conteúdo da MBR será apagado caso haja algo já instalado, por exemplo, o LILO):

grub-install /dev/hda

Uma alternativa: o pacote de instalação do GRUB também está disponível no formato tar.gz em ftp://alpha.gnu.org/gnu/grub. Supondo que você baixou o pacote grub-0.97.tar.gz, sua instalação é feita da seguinte maneira:

tar xzvf grub-0.97.tar.gz

Depois, entre no diretório onde o pacote foi descompactado (neste exemplo, o grub-0.97) e digite os comandos:

./configure
make
make install

O próximo passo é digitar grub em seu terminal e o comando a seguir:

install (hd0,2)/boot/grub/stage1 (hd0) (hd0,2)/boot/grub/stage2 p (hd0,2)/boot/grub/menu.lst

É conveniente verificar no site oficial de sua distribuição ou até mesmo na documentação desta, orientações sobre a instalação do GRUB, pois pode haver detalhes sobre esse gerenciador que mudam de acordo com a distribuição.

Configuração do GRUB

Geralmente, o GRUB faz uso do arquivo /boot/grub/menu.lst para definir e carregar sua configuração (um detalhe importante: dependendo da distribuição, o GRUB pode usar outro diretório e outro nome de arquivo, como grub.conf ou menu.conf). Nele, a primeira coisa que chama a atenção é sua forma de trabalhar com os discos rígidos do computador. Ao invés de referenciar esses dispositivos como /dev/hda1, /dev/hda2, etc, ele o faz através dos termos (hd0,0), (hd0,1) e assim por diante. Observe a tabela abaixo para um melhor entendimento:

Padrão GRUB
/dev/hda1 (hd0,0)
/dev/hda2 (hd0,1)
/dev/hdb1 (hd1,0)
/dev/hdb2 (hd1,1)

O GRUB chama o HD principal do computador de hd0 (enquanto o Linux o chama de hda). Um disco secundário recebe o nome de hd1 (o Linux o chama de hdb) e assim se segue. Para trabalhar com as partições do HD, o GRUB as referencia através de um número inserido após uma vírgula. Assim, a primeira partição recebe o número 0 (zero) – hd0,0 -, à segunda partição é atribuído o número 1 – hd0,1 – e assim por diante. É importante frisar que, nesse caso, o GRUB não faz distinção entre discos IDE e SCSI.

Agora que você já sabe como o GRUB trata os discos da máquina, abaixo segue, como exemplo, o conteúdo de um arquivo menu.lst:

default 0
timeout 5
fallback 1
splashimage=(hd0,1)/grub/splash.xpm.gz

title Fedora Core (2.6.9-1.667)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img

title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1

A primeira linha – default 0 – indica ao GRUB qual sistema operacional inicializar caso o usuário não faça nenhuma escolha. No exemplo, ele vai “bootar” o Fedora Linux, pois o número 0 faz referência ao primeiro sistema listado no arquivo. Caso o Windows XP tivesse que ser carregado por padrão, bastaria mudar a linha em questão para default 1, pois no arquivo esse sistema é o segundo a ser listado (note que o GRUB faz a listagem começando em zero).

A linha preenchida com timeout 5 determina o tempo (em segundos) que o usuário terá para escolher um sistema operacional para inicializar. Assim que o GRUB “entra em ação”, ele mostra na tela uma lista dos sistemas operacionais instalados. O usuário poderá escolher um alternando-os através das teclas de seta do teclado e pressionando o botão Enter quando a escolha for feita. No caso desse exemplo, o timeout recebe o valor 5. Isso significa que o usuário terá 5 segundos para escolher um sistema. Caso nenhuma opção seja escolhida, após os 5 segundos, o GRUB carregará o sistema padrão, definido através da primeira linha.

Por sua vez, a terceira linha (nem sempre usada) – fallback 1 – indica ao GRUB qual sistema inicializar caso o carregamento da primeira opção falhe por algum motivo. Esse recurso é especialmente útil quando há mais de dois sistemas operacionais instalados no computador.

A quarta linha simplesmente contém informações para carregar as configurações gráficas (como imagem de fundo) para quando o GRUB exibir as opções de sistema operacional disponíveis.

Repare que neste arquivo menu.lst a lista de sistemas operacionais é mostrada depois da quarta linha de configuração. O primeiro sistema da lista é o Fedora Linux:

title Fedora Core (2.6.9-1.667)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img

A primeira linha acima mostra o título que o sistema recebe no GRUB. É esse nome que será exibido quando o GRUB mostrar a lista de sistemas operacionais que o usuário pode escolher. Pode-se usar qualquer frase depois de title. Obviamente, informe algo relacionado ao sistema operacional em questão.

A segunda linha – root (hd0,1) – informa ao GRUB onde o sistema operacional está instalado. No exemplo, ele se encontra na segunda partição do HD. A palavra root tem a função de indicar que aquela é a partição principal do sistema (ou a partição-raiz) e que, portanto, deverá ser montada.

A terceira e a quarta linha informam ao GRUB o kernel a ser carregado e possíveis parâmetros. Neste caso, ro indica que a partição deve ser montada inicialmente com permissões apenas de leitura.

Na parte do arquivo que trata do Windows XP, a sintaxe é a mesma. No entanto, a segunda linha recebe o parâmetro rootnoverify ao invés de root, pois a montagem de partição não se aplica ao Windows. O rootnoverify é usado porque esse parâmetro não tenta fazer nenhuma montagem.

title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1

Como o Windows trabalha de maneira diferente do Linux, a opção de carregar o kernel também não se aplica ao sistema da Microsoft. No lugar desse parâmetro, geralmente é usado chainloader +1, que “chama” o carregador de boot do Windows, deixando a esse a tarefa de iniciar o sistema. Note que em nosso exemplo, há um parâmetro na linha acima de chainloader +1, o makeactive. Este tem a função de definir a partição em questão como ativa.

Existe um parâmetro chamado map que permite o carregamento do Windows quando este não está instalado no primeiro HD (regra obrigatória no Windows 9x, por exemplo). Sua utilização é feita da seguinte forma (supondo que o Windows esteja no segundo disco):

map (hd0) (hd1)
map (hd1) (hd0)

Outras opções

Você já deve ter notado que, basicamente, o GRUB é dividido em duas partes: a primeira contém configurações gerais referentes ao próprio GRUB e a segunda parte contém a lista dos sistemas operacionais instalados na máquina. Você também deve ter notado que o preenchimento das informações da segunda parte mudam de acordo com o sistema.

Na primeira parte, é possível adicionar outros parâmetros, entre eles o password e o hiddenmenu. O primeiro solicita uma senha definida por você para o acesso a determinados recursos, como a opção de linha de comando do GRUB (sintaxe password senha). O segundo simplesmente esconde a lista de sistemas operacionais quando o GRUB é carregado. Essa lista pode ficar visível pressionando-se a tecla ESC do teclado.

Caso você queira possibilitar o acesso a um determinado sistema operacional somente através de senha, basta inserir a palavra lock depois da linha title referente ao sistema em questão. No entanto, para isso, é necessário que a opção password tenha sido inserida na primeira parte, pois é esta senha que será solicitada:

title Windows XP
lock
rootnoverify (hd0,0)
(…)

Se a utilização de outra senha for necessária, basta inserir o campo password senha abaixo da linha title. Nesse caso, a solicitação de senha somente será feita se o sistema operacional em questão for escolhido:

title Windows XP
password infowester
rootnoverify (hd0,0)
(…)

Um último detalhe: é possível inserir comentários no arquivo de configuração do GRUB. Para isso, basta adicionar o caractere # antes da linha de comentário, por exemplo:

#Arquivo de configuração do GRUB
default 0
timeout 5
fallback 1
(…)

Linha de comandos do GRUB

O GRUB conta com um recurso muito interessante (e útil, principalmente para resolver problemas no carregamento do sistema operacional): uma linha de comandos que pode ser acessada assim que o GRUB é carregado. Para isso, quando o GRUB estiver disponível, pode-se apertar uma determinada tecla (geralmente o botão C) ou escolher essa opção na lista de sistemas operacionais. Tudo depende da forma como o GRUB foi configurado (o GRUB geralmente aciona a linha de comando quando não encontra a lista de sistemas operacionais).

Há uma série de recursos que podem ser usados na linha de comandos do GRUB. Quando estiver nela, pressione a tecla Tab de seu teclado duas vezes seguidas para obter a lista completa. Para obter detalhes sobre um comando específico, digite help comando, por exemplo:

help cmp

Finalizando

O GRUB é um software capaz de trabalhar com diversos sistemas operacionais, contém muitos recursos e é até tido como um substituto do LILO. Obviamente, este artigo não abordou todas as suas opções e funcionalidades e, por isso, os seguintes links podem ajudá-lo caso necessite de mais detalhes:

www.gnu.org/software/grub – Página oficial;
www.tldp.org/HOWTO/Multiboot-with-GRUB.html – HOWTO;
www.linuxgazette.com/issue64/kohli.html – Matéria em inglês sobre o GRUB.

Escrito por Emerson Alecrim – Publicado em 05/07/2005 – Atualizado em 05/07/2005

Categorias:Uncategorized

Ubuntu sobrevive ao desafio hacker…

Quando Charlie Miller chegou para tentar invadir o recém-lançado MacBook Air com o OS X 10.5.2 (Leopard) -o mais recente representante da linhagem dos sistemas operacionais que já teve fama de praticamente inviolável-, havia expectativa se ele conseguiria ser o primeiro hacker a vencer o desafio PWN TO OWN 2008. Miller já chamou o desafio de “Superbowl dos hackers”, em alusão à grande disputa do futebol americano.

Era o segundo dia do desafio. No primeiro, com regras mais rígidas, os três sistemas a serem desafiados -OS X, Ubuntu e Vista- passaram incólumes.
Enquanto Miller calmamente conectava seu desgastado MacBook Pro ao fininho Air, cerca de 20 pessoas se postaram à sua frente. Ele tinha 30 minutos para usar uma falha que o permitisse acessar, na vítima, um arquivo escolhido pela organização do evento.
Cerca de três minutos depois, ele disse: “Está feito”, para gritos e aplausos da platéia. “Foi fácil”, mas faltava checar.
Um dos organizadores -aquele que entrou em um site com um código malicioso criado por Miller, como permitia a regra para o segundo dia- sorriso no rosto, verificou aqui e ali. Estava feito.
Miller então teve que assinar um documento garantindo que ele não vazaria as informações sobre o bug antes que a falha utilizada fosse corrigida. Foi divulgado, apenas, que era um problema no Safari.
Miller já sabia o que fazer. “Trabalhei nisso [no bug] cerca de uma semana”, disse ele à Folha. Questionado se esse tipo de concurso não era prejudicial, pois jogava luzes sobre problemas que poderiam ser utilizados por criminosos, Miller respondeu: “Não. Agora a Apple vai conhecer a falha e corrigi-la. Se não fosse assim, ela continuaria lá. Como existem diversos outros bugs para serem explorados.”
Miller, que trabalha na empresa de segurança digital Independent Security Evaluators, é conhecido por ser um dos primeiros hackers a descobrir uma falha que permite invadir o iPhone.
Resta um
No terceiro dia, quando o Air já não estava na disputa, os computadores receberam populares programas desenvolvidos por terceiros -o navegador Firefox e o OpenOffice, por exemplo.
Depois de algumas horas tentando, um trio utilizando um MacBook Pro conseguiu explorar uma falha no Flash e invadir o Windows Vista. Restou intacto o Ubuntu, para a surpresa dos organizadores. Shane Macaulay, que ajudou a invadir o Vista, já havia contribuído para invadir um Mac no ano passado.
Fonte: Invasao.com.br

Categorias:Uncategorized

Estrutura de arquivos no Linux…

27 de maio de 2009 Comentários desligados

A estrutura: principais diretórios e suas funções

O diretório principal que contém todos os demais diretórios é chamado de raíz e se encontra no topo da estrutura, sendo representado pelo sinal “/”. Todos os demais diretórios devem ser referenciados a partir dele (exemplo: /diretório).

Dentro da estrutura do sistema de arquivos, cada um dos diretórios possui uma função especifica.

Principais diretórios e suas funções

Bem, agora vamos exemplificar a estrutura do sistema de arquivos com o intuito de sermos um pouco mais claros. Alguns diretórios e suas funções:

  • /bin : diretório no qual são encontradas ferramentas necessárias a operação do sistema.
  • /sbin : aqui podemos encontrar as ferramentas de operação e manutenção do sistema.
  • /etc : os arquivos de configuração do sistema se encontram nesse diretório.
  • /dev : neste diretório encontramos os arquivos relacionados aos dispositivos de hardware. Neste diretório cada dispositivo de hardware possui um arquivo.
  • /home : os usuários cadastrados no sistema possuem um diretório com seu nome dentro de /home. Em geral é a única área acessível aos usuários para gravarem seus arquivos.
  • /lib : as bibliotecas de funções do sistema se encontram aqui (são as bibliotecas de alocação dinâmica do Linux).
  • /mnt : diretório utilizado para conexão com volumes presentes em outros computadores da rede ou para acessar dispositivos removíveis.
  • /tmp : aqui se encontram os arquivos temporários montados pelo sistema.
  • /usr : os arquivos de cada usuário se encontram contidos neste diretório. Este diretório é muito importante, pois nele se encontra basicamente tudo que o usuário vai utilizar (editores de texto, ferramentas, navegadores, ambientes gráficos e os demais aplicativos voltados para os usuários).
  • /var : aqui se encontram informações variáveis do sistema (spool de impressora, caixas postais, logs do sistema, …).
Categorias:Uncategorized

Linux é mais fácil de instalar do que se imagina, diz IBM…

Linux é mais fácil de instalar do que se imagina, diz IBM
2009-05-26 22h24min

Uma recente pesquisa encomendada pela IBM sobre o desenvolvimento e a aceitação do software livre nas empresas mostrou a surpresa dos profissionais de TI ao constatar que instalar um sistema operacional Linux, por exemplo, é muito mais fácil do que imaginavam.

Como uma das grandes potências do mercado da tecnologia da informação e reconhecida empresa investidora em pesquisa, a companhia solicitou à consultoria Freeform Dynamics um estudo sobre os impactos da implantação de software livre nas corporações, conta o “Street Insider”. Os resultados da pesquisa intitulada Linux on the Desktop: Lessons from Mainstream Business Adoption (Linux no desktop: lições da adoção em grandes linhas de negócio) mostram que quando direcionados ao público correto, dentro de ambientes de utilização controlados, desktops rodando sistema operacional Linux são muito mais fáceis de implementar.

Reunindo 1.275 profissionais do Reino Unido, EUA, Canadá, Australia e Nova Zelândia por meio de questionários online, segundo o site da IBM, o estudo mostra que mais de 90% dos profissionais têm experiência com adoção de computadores Linux em seus próprios empregos.

A transição ocorre melhor, dizem os participantes, quando é direcionada primeiro a usuários “simples”, ou seja, aqueles que só utilizam ferramentas como programas de e-mail e softwares relacionados a atividades de escritório. Esses são vistos como duas vezes mais propensos a aceitar e se adaptar melhor à mudança do que seus colegas mais técnicos ou “criativos”.

Outros fatos apontados pelo levantamento incluem as razões que levaram as empresas a migrarem seus sistemas. Dentre elas são citadas, em primeiro lugar, a redução de custos e em seguida a segurança dos sistemas. Já a usabilidade é a questão chave para a escolha de determinada distribuição para ser implantada nos escritórios.

A aceitação da plataforma em grandes corporações agrada e muito à comunidade de software livre. Segundo o Computer Weekly, o vice-presidente da divisão de Linux e Open Source da IBM, Bob Stutor, afirma que “os departamentos de TI vêem o Linux como um investimento que economiza dinheiro, durante a crise. Vemos a recessão impulsionando a adoção do open source nos desktops.”

Como uma das maiores investidoras privadas no desenvolvimento das plataformas de código aberto, a IBM, além de alimentar o crescimento do setor, promove também sua maior adoção, equipando seus netbooks com sistemas operacionais Linux e fazendo com que o produto amplie seu alcance no mercado.

Um grande exemplo é a utilização de distribuições do sistema operacional em seus netbooks, dispositivos de menor capacidade de processamento e de custo mais baixo ao consumidor final.

Fonte: http://tecnologia.terra.com.br%5B…%5Ddo+que+se+imagina+diz+IBM.html
Postada por: Rogério Aparecido Clemente, rogerio.aparecido.cl EM terra.com.br

——————————————————————————–

Categorias:Uncategorized

Aprenda a configurar seu acesso à internet por ADSL em seu Linux …

Usuários de serviços de acesso à internet banda larga, como Speedy e Velox, muitas vezes têm dificuldade para configurar estes serviços no Linux. Principalmente porque as empresas não dão suporte ao sistema operacional do pingüim. Ainda por cima, elas alegam que não é possível utilizar o serviço de acesso rápido no Linux. Mas isso não é verdade. Mesmo tendo IP dinâmico, o processo de configuração de ADSL no Linux é simples, conforme será mostrado abaixo.

O primeiro passo é obter a última versão do RP-PPPoE. Ele já pode existir em seu Linux, mas mesmo nas distribuições lançadas recentemente é altamente recomendável atualizá-lo. Ele pode ser baixado em http://www.roaringpenguin.com/pppoe. Com o download realizado, agora é necessário instalar o RP-PPPoE. Mas antes, é melhor renomear o arquivo pppoe.conf para pppoe.conf.old. Esse arquivo geralmente se encontra no diretório /etc/ppp. Com a instalação ou atualização do RP-PPPoE, um outro pppoe.conf pode ser criado. Renomeando o atual, é possível restaurá-lo, caso necessário. Após isso, digite na linha de comandos:

rpm -Uvh rp-pppoe-3.5-1.i386.rpm

Substitua o nome do arquivo rpm acima para o nome do arquivo que você baixou, se o mesmo for diferente. Caso o seu Linux não seja baseado em RPM, como o Debian por exemplo, no site da Roaring Penguin há orientações de como instalar o RP-PPPoE. Depois de instalar o RP-PPPoE, digite:

adsl-setup

Aparecerá o seguinte texto:

Welcome to the Roaring Penguin ADSL client setup. First, I Will run some checks on your system to make sure the PPPoE client is installed property…

Looks good! Now, please enter some information:

USERNAME

Enter your PPPoE user name (default xxx@xxx.xxx)

Aqui digite seu login na forma login@provedor. Por exemplo: wester@infowester.com.br

Após isso aparecerá:

INTERFACE

Enter the Ethernet interface connected to the ADSL modem.
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where ‘n’ is a number.
(default eth0):

Nesta etapa, você deve digita a interface de rede em que o modem está conectado. Geralmente se você tem apenas uma placa de rede no linux ela é /dev/eth0, que a instalação oferece como padrão (default). Em seguida, aparece:

Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter ‘no’ (two letters, lower-case).
NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links.
Enter the demand value (default no):

Aqui, digite “yes” para conexão sob demanda ou “no” para conexão permanente. É recomendável você escolher a opção “no”.

DNS

O passo seguinte é a configuração do DNS primário e secundário ou do IP se sua conexão tiver IP fixo. Se você não tiver essas informações, entre em contato com seu provedor solicitando. Você também pode simplesmente digitar a palavra “server” (sem aspas) para tentar obter o DNS automaticamente. O texto abaixo é o que aparece para a configuração do DNS:

Please enter the IP address of your ISP’s primary DNS server. If your ISP claims that ‘the server will provide DNS addresses’, enter ‘server’ (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS setup.
Enter the DNS information here:

PASSWORD

Please enter your PPPoE password:

Simplesmente digite a senha que você usa para acessar o serviço de banda larga. Aparecerá a linha abaixo, onde você deve digitar novamente a senha, para confirmá-la.

Please re-enter your PPPoE password:

FIREWALLING

Please choose the firewall rules to use. Note that these rules are very basic. You are strongly encouraged to use a more sophisticated firewall setup; however, these will provide basic security. If you are running any servers on your machine, you must choose ‘NONE’ and
set up firewalling yourself. Otherwise, the firewall rules will deny access to all standard servers like Web, e-mail, ftp, etc. If you are using SSH, the rules will block outgoing SSH connections which allocate a privileged source port.
The firewall choices are:
0 – NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules.
1 – STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 – MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN

Choose a type of firewall (0-2):

Nesta etapa é configurado o firewall. Caso você esteja conectando apenas um computador escolha a opção 1. Caso esteja compartilhando uma rede escolha a opção 2. Neste o computador funcionará como o gateway da rede. A opção 0 não é recomendada, já que não habilita nenhuma proteção de firewall. A seguir, aparece:

Start this connection at boot time. Please enter no or yes:

Digite “yes” se você deseja que a conexão seja feita durante o processo de boot, ou seja, automaticamente. Digite “no” caso queira conectar manualmente. Por fim, aparecerá as informações abaixo:

Ethernet Interface: eth0
User name: wester@infowester.com.br
Activate-on-demand: No
DNS: 200.220.225.10
DNS2: 200.210.225.138
Firewalling: MASQUERADE
Accept these settings and adjust configuration files (y/n)?

Digite “y” caso as informações estejam corretas e “n” para cancelar a configuração. Repare que as configurações acima são de exemplo. Obviamente aparecerão as informações que você digitou. Se aceitar aparecerá:

Adjusting /etc/ppp/pppoe.conf
Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
(But first backing it up to /etc/ppp/pap-secrets-bak)
(But first backing it up to /etc/ppp/chap-secrets-bak)
Congratulations, it should be all set up!

Type ‘adsl-start’ to bring up your ADSL link and ‘adsl-stop’ to bring it down. Type ‘adsl-status’ to see the link status.

Você acabou de configurar o acesso ADSL no seu Linux, parábens! Veja abaixo os comandos que você usará para a conexão:

Para conectar digite “adsl-start”;
Para desconectar digite “adsl-stop”;
Para ver as informações de sua conexão digite “adsl-status”.

Quando você conectar (ou seja, quando digitar adsl-start) deverá aparecer o aviso de conexão abaixo:

.Connected!

Se ao digitar o comando de conexão a palavra acima não aparecer é porque algo está errado. Muitas vezes, o computador pode conseguir conectar (com a mensagem aparecendo), mas nenhuma página carrega. Se problemas acontecerem tente configurar novamente ou então deixe sua placa de rede desativada. Para isso digite:

ifconfig eth0 0.0.0.0

Onde eth0 representa sua placa de rede, que pode ser eth1 ou outro número se você tiver mais de uma placa instalada em seu computador.

Escrito por Emerson Alecrim – Publicado em 30/06/2003 – Atualizado em 15/10/2004

Categorias:Uncategorized

Bloquear servidor por falta de pagamento…

Colaboração: Sérgio Abrantes

Data de Publicação: 10 de April de 2009

Essa dica é muito válida para aquele cliente que atrasa o pagamento ou diz que esqueceu de fazê-lo e fica enrolando.

Para não estressar, coloque uma script na cron do equipamento para fazer esse serviço para você conforme a data de pagamento. 😀

Segue abaixo um script que eu coloco no /etc/cron.daily para um equipamento firewall.

Ele coloca o forward como drop para ele não conseguir acessar a internet, mas deixa o input liberado para eu entrar e liberar o equipamento remotamente.

  #!/bin/bash
  # Variáveis #
  data=`date +%d%m%y`

  if [ $data == "070708" ]; then
  iptables -X
  iptables -Z
  iptables -F INPUT
  iptables -F OUTPUT
  iptables -F FORWARD
  iptables -F -t nat
  iptables -F -t mangle
  iptables -t filter -P INPUT ACCEPT
  iptables -t filter -P OUTPUT ACCEPT
  iptables -t filter -P FORWARD DROP
  mv /etc/rc.d/rc.firewall /etc/rc.d/rc.firewall-bkp-travado
  echo "iptables -t filter -P INPUT ACCEPT" >> /etc/rc.d/rc.firewall
  echo "iptables -t filter -P OUTPUT ACCEPT" >> /etc/rc.d/rc.firewall
  echo "iptables -t filter -P FORWARD DROP" >> /etc/rc.d/rc.firewall
  chmod 700 /etc/rc.d/rc.firewall
  fi

  if [ $data == "070808" ]; then
  sleep 90
  iptables -X
  iptables -Z
  iptables -F INPUT
  iptables -F OUTPUT
  iptables -F FORWARD
  iptables -F -t nat
  iptables -F -t mangle
  iptables -t filter -P INPUT ACCEPT
  iptables -t filter -P OUTPUT ACCEPT
  iptables -t filter -P FORWARD DROP
  mv /etc/rc.d/rc.firewall /etc/rc.d/rc.firewall-bkp-travado
  echo "iptables -t filter -P INPUT ACCEPT" >> /etc/rc.d/rc.firewall
  echo "iptables -t filter -P OUTPUT ACCEPT" >> /etc/rc.d/rc.firewall
  echo "iptables -t filter -P FORWARD DROP" >> /etc/rc.d/rc.firewall
  chmod 700 /etc/rc.d/rc.firewall
  fi

E assim você pode colocar todas as datas que foram acertadas para pagamento no script.

Um detalhe importante: retirar a regra para o mês que o cliente pagar! Assim pode ser feito para vários serviços que você possui.

Tenho um cliente que possui um servidor de arquivos que o script é muito parecido.

  #!/bin/bash
  # Variáveis #
  data=`date +%d%m%y`

  if [ $data == "070708" ]; then
  /etc/rc.d/rc.samba stop
  chmod 000 /etc/rc.d/rc.samba
  fi

Em ambos é necessário pensar que o cliente pode reiniciar o equipamento para tentar voltar o serviço, mas nesse caso ele não voltará.

Categorias:Uncategorized

Sistema de arquivos ext3…

Usuários experientes de Linux sabem que o sistema possui excelente performance no gerenciamento de dados, tanto no que diz respeito ao armazenamento, quanto nas alocações e atualizações de informações. Dentre vários, um dos grandes responsáveis por tanta eficiência é o sistema de arquivo (ou filesystem) ext3 (sigla para third extended file system), que passou a ser integrado definitivamente ao Linux (kernel) a partir da versão 2.4. Este artigo mostrará as características mais importantes do ext3, além das razões de sua alta performance.

Sistema de arquivos?

É importanter entender o que é um sistema de arquivos antes de prosseguir no assunto. De maneira resumida, um sistema de arquivos é uma estrutura que indica como os dados devem ser gravados em dispositivos de gravação. É de acordo com os recursos oferecidos por essa estrutura que é possível determinar o espaço disponível e ocupado em disco, e gerenciar como partes de um arquivo podem ficar “distribuídas” nas áreas de armazenamento. É também o sistema de arquivos que determina como os dados podem ser acessados, copiados, movidos, renomeados, protegidos e eliminados. Portanto, sem um sistema de arquivos, é impossível utilizar um disco rígido (e outros dispositivos) para armazenamento de informações.

Funcionamento padrão dos sistemas de arquivos em Linux

Os sistemas de arquivos são criados em partições do disco, de forma que seja possível armazenar programas e dados em formato de arquivos e diretórios (pastas). O Linux, assim como praticamente todos os sistemas operacionais baseados em Unix, usa um sistema de arquivos que possue uma hierarquia, composta de arquivos e diretórios, que podem conter outros diretórios ou arquivos.

Os arquivos/diretórios (sistemas baseados em Unix tratam os diretórios como arquivos específicos) em um sistema de arquivos para Linux são disponibilizados (ou montados) para manipulação através do comando “mount”, geralmente acionado no processo de startup (inicialização), que ocorre quando o computador é ligado e começa a carregar o sistema operacional. O Linux consegue trabalhar com vários sistemas de arquivos em um mesmo disco (situação comum à usuários que possuem Windows e Linux em suas máquinas, por exemplo) e, para “enxergá-los”, armazena a lista de sistemas de arquivos disponíveis no arquivo /etc/fstab (repare que /etc/ indica um caminho de diretório). No entanto, há uma lista de sistemas de arquivos que estão efetivamente em uso, disponível no arquivo /etc/mtab, também conhecido como “tabela mount”. Esta lista é atualizada no processo de startup, para indicar ao sistema operacional quais sistemas de arquivos ele poderá acessar.

Para cada sistema de arquivos montado no startup, um bit no cabeçalho do sistema de arquivos é zerado para indica que o sistema de arquivos está em uso a partir daquele momento e que as estruturas de dados usadas para o alocação e organização de arquivos/diretórios podem sofrer mudanças (atualizações).

Quando o usuário decide desligar o computador e usa comandos para encerrar o Linux, os sistemas de arquivos são desmontados, fazendo com que o bit citado acima seja modificado para indicar que o sistema de arquivos está consistente, ou seja, não pode mais sofrer mudanças.

Erros e corrompimento do sistema de arquivos

Os sistemas de arquivos para Linux já sofreram muitos tipos de tratamentos e reescrita de código para eliminar o corrompimento causado por aplicações ou pelo próprio kernel. No entanto, eliminar o corrompimento de dados em arquivos causados, por exemplo, pela queda de energia ou pelo desligamento incorreto por parte do usuário, sempre foi uma tarefa praticamente impossível. Quando o sistema é desligado incorretamente o bit do cabeçalho do sistema de arquivos não é ajustado. A solução foi fazer com que, no próximo processo de carregamento do Linux, seja verificado se o cabeçalho está com o bit de cabeçalho setado para indicar que o sistema de arquivos está consistente e não manipulável. Caso não esteja, a ferrramenta “fsck” verifica o sistema na busca de erros.

Journaling

O fsck consegue prover resultados satisfatórios, mas a correção de erros pode levar muito tempo, algo inaceitável em aplicações críticas. Além disso, se o desligamento incorreto do computador ocorreu quando dados estavam sendo gravados no disco, o fsck não conseguirá completar esses processos, ocasionando a perda das informações que estavam sendo gravadas.

Diante desses problemas, foi apresentada uma solução viável: a utilização de sistemas de arquivos com a tecnologia “Journaling”, que possuem a capacidade de acompanhar as mudanças que serão feitas no sistema de arquivos (por exemplo, gravações/atualizações de dados) antes que realmente sejam feitas. Essas informações que o Journaling captura são então armazenadas em uma parte separada do sistema de arquivos, denominada “Journal” (mas também conhecida por “registros de log”). Quando as informações são armazenadas no Journal, o sistema de arquivos aplica as mudanças registradas nele e então, remove as informações do Journal.

Agora, entenda o porquê do Journaling ser uma solução eficiente para os problemas de erro. Os registros de log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos e esses registros somente são eliminados quando as mudanças são feitas. Assim, se o computador é indevidamente desligado, o processo de montagem no próximo startup verificará se há mudanças gravadas no Journal “marcadas” como não feitas. Se houver, tais mudanças são então aplicadas ao sistema de arquivos. Isso faz com que os riscos de perda de dados sejam reduzidos drasticamente.

Sistema de arquivos ext3

Existem vários sistemas de arquivos disponíveis com a tecnologia Journaling, como o XFS, desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado com código aberto, o ReiserFS, desenvolvido especialmente para Linux, JFS, desenvolvido originalmente pela IBM mas também liberado com código aberto, e o mais conhecido deles: o ext3, desenvolvido pelo Dr. Stephen Tweedie juntamente com outros colaboradores, na Red Hat, e que veremos agora.

O sistema de arquivos ext3 é basicamente o sistema de arquivos ext2 com recursos de Journaling. Talvez, essa seja a razão de seu uso amplo: ele é totalmente compatível com ext2 (que foi um sistema de arquivos muito usado), o que nenhum outro sistema de arquivos baseado em Journaling é.

O ext3 passou a ser efetivamente suportado pelo kernel do Linux a partir da versão 2.4. Conseqüentemente, todas as distribuições Linux lançadas com esse kernel ou superior, tem suporte padrão para ext3.

No ext3, o código de Journaling usa uma camada chamada “Journaling Block Device” (JBD). A JBD foi criada com o propósito de implementar Journal em qualquer tipo de dispositivo com base em blocos de dados. Por exemplo, o código ext3 informa e “pede autorização” à JDB para efetuar as mudanças, antes de modificar/adicionar qualquer dado no disco. Sendo assim, é o JDB que verdadeiramente “gerencia” o Journal. O fato mais interessante disso é que, a JDB funciona como uma entidade independente, permitindo que não só o ext3 a use, mas também outros sistemas de arquivos.

A JDB utiliza um método diferente de outros Journalings para recuperação de informações. Ao invés de armazenar as informações em bytes que depois devem ser implementados, a JDB grava os próprios blocos modificados do sistema de arquivos. Assim, o ext3 também armazena “réplicas” completas dos blocos modificados em memória para rastrear as operações que ficaram pendentes. A desvantagem desta forma de trabalho é que o Journal acaba sendo maior. No entanto, o ext3 não precisa lidar com a complexidade dos Journalings que trabalham gravando bytes.

Tipos de Journaling no ext3

O ext3 suporta três diferentes modos de trabalho do Journaling. São eles:

Journal: grava todas as mudanças em sistema de arquivos. É o mais lento dos três modos, mas é o que possui maior capacidade de evitar perda de dados;

Ordered: grava somente mudanças em arquivos metadata (arquivos que guardam informações sobre outros arquivos), mas guarda as atualizações no arquivo de dados antes de fazer as mudanças associadas ao sistema de arquivos. Este Journaling é o padrão nos sistemas de arquivos ext3;

Writeback: também só grava mudanças para o sistema de arquivo em metadata, mas utiliza o processo de escrita do sistema de arquivos em uso para gravação. É o mais rápido Journaling ext3, mas o menos confiável.

O modo Ordered é o padrão no ext3, mas é possível especificar qual o modo que você deseja usar, através da atualização do arquivo fstab. Por exemplo, pode ser que a linha /dev/hda1/opt tenha sua opção data com o valor ordered. Você pode mudar este valor para writeback ou journal.

Finalizando

O ext3 é um dos sistemas de arquivos mais utilizados no Linux, tendo como principal “adversário” o filesystem ReiserFS, que também possui recursos de Journaling como uma de suas principais características. Dizer qual é o melhor é uma tarefa complicada, razão pelo qual existem vários testes na internet que tentam responder essa questão. De qualquer forma, as equipes de ambos os sistemas de arquivos se empenham para oferecer os melhores recursos possíveis aos seus usuários. No caso do ext3, por exemplo, já está em desenvolvimento o ext4 (que estava disponível como “experimental” na data de atualização deste artigo), que deverá “entrar em cena” oferecendo melhorias em sua estrutura e suporte a arquivos grandes (com centenas de megabytes), por exemplo.

Para saber mais sobre o ext3, acesse o texto Exploring the ext3 Filesystem, que serviu de base para este artigo.

Escrito por Emerson Alecrim – Publicado em 28/09/2003 – Atualizado em 01/06/2007

Categorias:Uncategorized

Instalando o IRPF2009 e o Java no Debian 5.0 Lenny …

A Receita Federal liberou no começo do mês (12/03) a versão 2009 do programa do Imposto de Renda Pessoa Física para Linux, e neste tutorial vou ensinar como instalá-lo no Debian 5.0 Lenny.
Apesar deste tutorial ter sido feito especificamente para o Debian Lenny, ele pode ser usado para instalar em outras distribuições debian-based, como Ubuntu, Resulinux, Kurumin, entre outras.

O primeiro passo é instalar o Java, para isso precisamos adicionar o “non-free” no final dos seguintes repositórios:

deb http://ftp.br.debian.org/debian/ lenny main non-free
deb-src http://ftp.br.debian.org/debian/ lenny main non-free

deb http://security.debian.org/ lenny/updates main non-free
deb-src http://security.debian.org/ lenny/updates main non-free

Depois como root, atualizar o cache do apt-get:

apt-get update

e instalar com o comando:

apt-get install sun-java6-jre sun-java6-plugin

Depois de instalado o java corretamente partimos para o segundo passo, que é baixar o instalador do IRPF2009.

Baixe o arquivo diretamente do site da Receita Federal.

http://www.receita.fazenda.gov.br/PessoaFisica/IRPF/2009/PgdJava/progIRPF2009linux.htm

Por: jcarlos

Categorias:Uncategorized

Montando partições e discos no Linux…

Introdução

O uso do GNU/Linux (aqui chamado somente de Linux) cresce a cada dia. Muitos usuários, ao visitarem sites sobre o sistema operacional ou ao ouvirem o relato de colegas que já usam o Linux, sentem-se incentivados a experimentarem o sistema. A grande maioria já tem o sistema operacional Windows instalado e decide compartilhar o computador também com o Linux. Mas quase sempre, o usuário necessita acessar arquivos presentes na partição do Windows. Isso é perfeitamente possível, através de um processo conhecido como montagem da partição. Algumas distribuições Linux montam as partições Windows automaticamente, mas em outras, é necessário que o usuário faça isso manualmente. Esse processo é simples e será explicado aqui. Os procedimentos a seguir devem ser executados como usuário root ou outro que tenha permissões de administrador.

 

Discos

 

O primeiro passo é saber como identificar os discos (HD, CD-ROM, disquete) no Linux. Tais dispositivos, além de outros (como a porta LPT1) são tidas como existentes no diretório /dev/. O HD é identificado como o dispositivo hda0 (hdb para outro HD no mesmo computador e assim por diante). O número 0, indica a partição no HD. Com isso, a segunda partição deve ser identificada como hda1, a terceira como hda2, enfim. No caso de HDs SCSI, as letras hd devem ser trocadas por sd, ficando da seguinte forma: sda0, sda1, sda2, etc.

 

No caso do drive de disquete, a sigla para sua identificação é fd0. Se houver outro drive, este deve ser identificado como fd1. No caso dos CD-ROMS, eles são identificados como HDs. Assim, se por exemplo, em seu computador há um HD e um CD-ROM, o HD poderá ser reconhecido como hda e o CD como hdb.

 

Montando a partição

 

Para a partição Windows, você deve saber qual das existentes é ela. Em nosso exemplo, vamos supôr que o Windows está na partição hda0 e o Linux na partição hda1. Tendo ciência disso, agora é necessário que você crie um diretório no Linux por onde a partição Windows deverá ser acessada, ou seja, o ponto de montagem. Geralmente, este diretório é criado dentro da pasta /mnt/ mas pode ser criado em outro. Para o nosso exemplo, vamos chamar este diretório de win. Assim, seu caminho é /mnt/win.

 

O próximo passo é comando de montagem:

 

mount – t [tipo] [caminho da partição] [ponto de montagem]

 

Em nosso exemplo, o comando acima ficaria assim:

 

mount -t vfat /dev/hda1 /mnt/win

 

O tipo indica o sistema de arquivos utilizados na partição. Partições fat e fa32 são identificados como vfat. No caso de CD-ROM, o tipo deve ser especificado como iso9660. Por exemplo: mount -t iso9660 /dev/hdb /mnt/cdrom. As partições NTFS podem, teriocamente, serem montadas do mesmo jeito. No entanto, existem problemas de compatibilidade entre o kernel do Linux e o sistema de arquivos NTFS, motivo pelo qual, a montagem desse tipo de partição deve seguir procedimentos especiais, que não serão explicadas aqui. Se a partição que você deseja montar for ext2 ou ext3, basta especificar estes nomes como tipo.

 

Montando automaticamente

 

Os passos explicados anteriormente devem ser repetidos toda vez que você usar o Linux. Para evitar isso, é possível montar a partição automaticamente, durante o processo de inicialização. Para isso, basta localizar o arquivo fstab. Geralmente ele se encontra dentro do diretório /etc/. Abra o arquivo e adicione a seguine linha no final (para o nosso exemplo):

 

/dev/hda1 /mnt/win vfat defaults 0 0

 

Agora vamos entendê-lo. A sintaxe da linha é:

 

[caminho da partição] [ponto de montagem] [tipo] [opções] [ordem]

 

O campo opções tem as seguintes possibidades:

 

defaults – usa valores padrões de montagem;

 

noauto – não monta os dispositivos durante a inicialização. Indicado para drives de disquetes e de CDs;

 

ro – monta somente como leitura;

 

user – dá permissão de montagem aos demais usuários do sistema;

 

sync – acrescenta atributos para o perfeito funcionamento de dispositivos móveis, como disquetes e zip drives.

 

É possível usar mais de uma opção ao mesmo tempo, bastando separá-las por vírgula. Por exemplo:

 

/dev/hda1 /mnt/win vfat ro,user 0 0

 

O campo ordem indica em que seqüência os sistemas de arquivo serão verificados. Se deixar o campo em 0 (zero), esse procedimento não será executado. Sendo assim, na maioria dos casos basta deixar neste valor.

 

Depois que o arquivo fstab tiver sido alterado, na próxima inicialização, a montagem ocorrerá automaticamente, exceto se algum passo foi executado de forma errada.

 

Desmontando partições

 

Para desmontar uma partição, basta digitar o comando umount mais o caminho da partição. Por exemplo:

 

umount /dev/hda1

 

Em alguns casos, pode ser necessário digitar o ponto de montagem ao invés do caminho da partição:

 

umount /mnt/win

 

Finalizando

 

Este artigo mostrou os procedimentos básicos para montagem de partições no Linux. Os comandos mount e umount, assim como o arquivo fstab, possuem outros recursos, que podem ser verificados através da ajuda dos mesmos em seu Linux.

Categorias:Uncategorized

Matemática das mascaras de IP…

Você sabe o que significam matematicamente as máscaras de rede? Um /24, /25? Um 255.255.128.0 define o quê? No iptables um 10.1.0.0/28 tem qual finalidade? E o que isto tem a ver com as classes de IPs? Para quem não for alérgico à escovação de bits…

 

Mesmo aqueles que não são familiarizados com redes, número IP, já se depararam com este item de configuração: máscara de rede.
Sem dúvida que a mais usada, mais conhecida, é a máscara 255.255.255.0, tanto que muitos nem se quer sabem que ela pode ser outro valor e não apenas este. Poucos também sabem o que este número “mágico” significa, o que ele representa e quão importante ele é para uma rede. E mais, o quão desastroso pode ser se ele estiver errado, não em conformidade com a real configuração de uma rede local.
Neste artigo procuro descrever tecnicamente o princípio existente na composição da máscara de rede, o que ele representa e para que serve. Faço um comparativo com o antigo roteamento baseado em Classes de IP e porque isto ele abandonado.

Se você é do tipo que sente arrepios quando ouve falar de operações bit a bit, como AND, OR ou XOR, prepare-se: as máscaras de rede tem tudo a ver com escovação de bits. Leitura não recomendada para alérgicos binários.

 

Você sabia que um número IP não serve para realizar a comunicação entre uma máquina e outra?
Esta frase soa estranha, mas vou explicar o seu contexto: sempre uma máquina conversa com outra ela usa o endereço de enlace dela. Sim, enlace (referência ao modelo TCP/IP de quatro camadas, não o OSI)!
Considerando a rede Ethernet, com a atual Fast Ethernet (100Mbps) como sua maior representante, os endereços de hardware das placas de rede são constituídos de 48 bits (sendo que os primeiros 24 dizem qual o fabricante da placa de rede). É o número em HEXA que você vê quando executa um ifconfig, algo como 00:50:56:C0:00:06. Claro que todo mundo que já configurou um servidor DHCP sabe bem o que é este número.
Pois bem, a comunicação é realizada colocando-se o endereço de hardware do destino no pacote, determinando que este pacote deve ser entregue a máquina cujo endereço de placa de rede é o 00:50:56:C0:00:06. O problema é que isto só funciona em rede local, pois a origem precisa antecipadamente conhecer o MAC ADDRESS do destino e para isto que serve o protocolo ARP (que não irei descrever aqui).
Mas e quando o meu destino não está na mesma rede que eu e não posso colocar o MAC de destino no pacote? É aí que entra o que se chama de roteamento IP.

Analisando o número IP do destino minha máquina verifica que precisa repassá-lo ao gateway, pois o destino não é local. O gateway, por sua vez, compara o Ip de destino com sua tabela de rotas para determinar para onde o pacote vai agora, e assim sucessivamente até que o pacote chegue na rede local do destino, onde finalmente o último gateway irá enviar o pacote para o “MAC ADDRESS do destino”. Cada etapa do roteamento envolve o MAC address do gateway de saída (este artigo é uma introdução e procura descrever apenas as máscaras e não as tarefas de um roteador).
Costumo aplicar em aula a seguinte analogia: como o CEP dos correios. Ele não serve para determinar a entrega, pois a carta será entregue para a Rua e número de uma determinada cidade. Serve apenas para roteamento, pois analisando o número sabe-se o que fazer com ele. Se estou no RS e o CEP não começa com o dígito 9, então o destino não é RS, pois “9” no início do CEP determina que é algum lugar no RS.
Logo, entendam o contexto quando digo que o número IP não serve para que uma máquina se comunique com outra. Quero dizer que a comunicação é sempre de endereço MAC para endereço MAC e que o número IP serve para determinar o próximo passo de roteamento (esta descrição está incompleta e focada ao objetivo deste artigo. Entender bem a participação dos números IP em uma comunicação envolve compreender a tarefa de cada uma das quatro camadas do modelo TCP/IP. Quem sabe em um próximo artigo?).

 

Resumindo: IP serve para rotear.
Aí surge, evidentemente, a necessidade de que os números IPS sejam organizados através de uma técnica determinística, que permita a qualquer um saber onde está o destino ou pelo menos, para que lado está. Como na analogia que fiz, o CEP tem esta função, pois se o CEP começa com 9 é Rio Grande do Sul e os demais dígitos dão uma maior precisão sobre a cidade, bairro e até a rua.

Com os números IPs da versão 4 (IPv4) é mais ou menos assim e a primeira organização de IPs foi a organização por classes.

 

Na verdade isto já não importa mais para efeitos de roteamento, mas até 1993 era a forma usada para realizar roteamento IP.

Nesta técnica os ips foram catalogados em Classes, para determinar o roteamento. O objetivo do roteamento por classes era disponibilizar uma forma muito rápida (matematicamente) dos roteadores calcularem o destino. Basicamente determinou-se que dos 32 bits de um número IP, parte dele (alguns bits iniciais) diriam qual a rede de destino e outra parte dele (bits finais) diriam qual o número do host dentro desta rede. Se apenas 8 bits iniciais disserem qual rede é, um roteador só precisa analisar estes 8 bits para determinar o destino e não todos os 32. Sempre visando o menor custo, ainda mais em uma época onde o hardware não é o que temos hoje!
A pergunta importante é: quantos bits dizem qual rede é e quantos bits dizem qual host? Nesta decisão é que entraram as classes:
Classe A: sempre que um número IP começar com 0, é classe A. Genericamente pode-se dizer que um classe A possui o formato:

 

0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

Observe o quanto isto facilitava (não se usa mais ISTO, lembre-se!) as operações de roteamento: se eu sou um roteador classe A e o primeiro bit do IP que devo rotear NÃO FOR ZERO, pronto, pra que olhar os demais bits se já sei que o destino não é aqui? (novamente o CEP: pra que olhar os demais dígitos do CEP se o 9 me diz que é RS e eu sou uma agência de correios de SP?)

Como o primeiro bit será sempre ZERO, isto obriga o primeiro octeto do IP a ser 0XXXX XXXX, o que restringe as possibilidades deste octeto a ser de 0 a 127. Por isto que popularmente se diz que um IP Classe A é o que vai de 0.0.0.0 até 127.255.255.255. Mas isto no popular, pois os roteadores não fazem if (if octeto UM maior que zero e menor que 127, então é classe A), eles fazem operações bit a bit! Se primeiro bit for ZERO, é um classe A.

Sendo um Classe A (primeiro bit em ZERO), os próximos SETE bits dizem qual é a rede e os demais qual o HOST dentro desta rede:

 

0RRRRRRR HHHHHHHH HHHHHHHH HHHHHHHH

Veja, a definição da classe determina a quantidade de bits para rede. No caso de um classe A, tem-se sete bits para rede e 24 para host. Quem adquiria uma faixa Classe A para si (grandes empresas) podia suprir até 2^24 hosts, algo próximo de 16 milhões de máquinas. Coisa para poucos, pois existiam apenas 127 redes deste tipo no mundo (novamente, estou simplificando para não fugir do foco, embora os números não sejam exatamente estes por conta de reservas de ips, números de rede e broadcast).

 

 

Classe B: sempre que um número IP começar com 10, é classe B e sendo desta classe, os próximos 14 bits é que dizem que rede é, sobrando os últimos 16 para determinar qual a host:

 

 

10RRRRRR RRRRRRRR HHHHHHHH HHHHHHHH

Com 16 bits para host, cada rede poderia ter até 65536 hosts (simplificando!!) e um total de 16384 redes classe B existem (2 elevado na 14).

Classe C: sempre que um número IP começar com 110, é classe C e sendo desta classe, os próximos 21 bits é que dizem que rede é, sobrando os últimos 8 para determinar qual a host:

 

 

110RRRRR RRRRRRRR RRRRRRR HHHHHHHH

Com isto cada rede pode ter até 256 ips e muitas redes deste tipo existiram (em torno de 2 milhões).
Ainda existe o Classe D (começa com 1110) reservado para tráfego multicast (ainda usado) e o Classe E (1111) reservado para uso futuro. Como para uso normal, unicast, tem-se apenas o classe A, B e C, o último ip válido ainda hoje é o que começa com 223 (224 já é classe D).

 

Roteamento baseado em Classes de IP

 

OK, certo. Mas para que servia esta divisão por classes, que REPITO, não se usa mais?

Como o número de bits, que determinam o que é rede, variava, a Classe determinava quantos bits o roteador deve avaliar. Observe que o roteador precisa saber a rede de destino para determinar a quem ele envia, assim como uma agência de correio precisa saber a cidade de destino.
Assim, o roteador testava o primeiro bit, se for zero, Classe A, isola os próximos sete bits e joga em sua tabela de rotas. Mas se os primeiros bits fossem 10, então são os próximos 14 bits que devem ser isolados e comparados com a tabela de rotas. Operações binárias agilizam esta operação em muito.

 

Sem dúvida uma forma de roteamento muito otimizada, tanto que foi ressuscitada no Ipv6 (a idéia, não o modelo de classes). Só que esta técnica amenizou o trabalho dos roteadores que sem muito esforço determinavam o que fazer com o pacote, mas trouxe um gravíssimo problema: a falta de números IPs.

O fato é que uma faixa Classe C possibilita apenas 256 ips, o que é pouco para a maioria das instituições que desejam entrar na Internet. Já um classe A com seus 16 milhões de ips é muito. Logo a preferida da torcida foi a classe B, que rapidamente esgotou-se.
Aliado a este fato, imagine uma instituição que tinha 300 máquinas para por na Internet. Um Classe C não lhe serve. Logo, ele adquire um classe B (se ainda houver). Só que com suas míseras 300 máquinas e um classe B que pode ter 65536 máquinas, ele estaria desperdiçando pouco mais de 65 mil endereços ips!!! Imagine uma empresa que adquiriu um Classe A que permite 16 milhões de ips!

Não precisa ser muito esperto para perceber que isto rapidamente gerou um caos, pois rapidamente esgotou-se os números de ips disponíveis ao passo que se tinha um imenso e lastimável desperdício dos mesmos, mas era o efeito colateral da classificação por classes.
Algo precisou ser feito e a classificação CIDR reorganizou os ips e é nela que existem as tais máscaras de rede.

 

 

Cálculo do número de rede e de broadcast

 

Define-se como número de rede o primeiro endereço da faixa e como número de broadcast o último. Se tivermos, por exemplo, o IP 10.1.0.5/24 (24 bits para rede):

 
(10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
<------  24 bits para rede ----->   <- HOST->
 

O número de rede seria 00001010 00000001 00000000 00000000, ou 10.1.0.0, primeiro IP que seria para host da seqüência.
O número de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, último número de host permitido.
Mas como uma máquina calcula este número?

 

 

Usando operações binárias, pois elas são rápidas e eficientes. Para calcular o número da rede, faz-se um AND bit a bit do número IP com os números destinados a rede em 1. Se um IP é /24, quer dizer que devem ser usados 24 bits para rede, restando oito para host. Para calcular a rede faz-se um AND com os primeiros 24 bits em 1 e os demais em zero:

 

 

(10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
1111 1111  1111 1111  1111 1111  0000 0000 (24 bits em 1)
0000 1010  0000 0001  0000 0000  0000 0000 (resposta do AND)
 
 

Ao realizar este AND bit a bit, chega-se ao número 10.1.0.0 (número da rede).

Agora observe esta fato: se eu fosse ler de forma decimal estes bits que usei para o AND, que número eu tenho?

 
 
1111 1111   1111 1111   1111 1111   0000 0000
(255)       (255)      (255)        (0)
 
 

255.255.255.0 lhe soa mais familiar? Por isto o nome “máscara de bits” pois é uma máscara que será usada em uma operação AND para determinar qual a rede.

Para determinar qual é o meu endereço de broadcast, se faz um OR bit a bit com a máscara complementada (invertida, números destinados a rede em ZERO):

 
 
(10)       (1)        (0)        (5)
0000 1010  0000 0001  0000 0000  0000 0101
0000 0000  0000 0000  0000 0000  1111 1111 (24 bits em 0)
0000 1010  0000 0001  0000 0000  1111 1111 (resposta do OR)
 
 

Sendo agora um OR, o resultado matemático disto será 10.1.0.255.

É isto que acontece nos bastidores, envolvendo a máscara para determinar que rede sou e qual o meu endereço de broadcast. Uma máscara equívoca pode significar o isolamento de uma máquina do resto do mundo, pois ela pode não rotear pacotes corretamente, não usando o gateway quando deveria, por exemplo.

 

Roteamento baseado em máscara de rede

 

Cada máquina sabe seu IP, sua máscara e o IP do gateway. A máquina não sabe as máscaras e os ips de outras máquinas, apenas a sua. Logo, ao necessitar comunicar-se com uma máquina cujo o IP é X.Y.K.Z a máquina não tem como saber qual rede este IP é, mas tem como saber se é a mesma rede sua. Isto é suficiente para ela saber se pode enviar diretamente (mesma rede) ou se precisa acionar o gateway para jogar para fora (eu, estando no RS, posso não saber onde é um CEP que começa com “4”, mas sei que não é RS, pois estou no RS e aqui ele começa com “9”. Basta para eu enviar para outra agência de correio).

Alguns exemplos:
Caso A: origem e destino estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela não sabe a máscara do destino!!!).

Máquina A primeiro determina a sua rede aplicando um AND do seu IP com sua máscara, sendo que ela agora é 255.255.255.128, pois um /25 significa 25 bits em 1:

 
 
1111 1111   1111 1111   1111 1111   1000 0000
(255)       (255)      (255)        (128)
 
 

Ela chega a conclusão que pertence a rede 10.1.0.0. Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):

 

 

(10)        (1)         (0)         (120)
0000 1010   0000 0001   0000 0000   0111 1000
1111 1111   1111 1111   1111 1111   1000 0000 (25 bits em 1)
 
 

Como resultado deste AND, chega-se ao cálculo de 10.1.0.0. Como o número calculado para rede é o mesmo, a conclusão é que o destino está aqui, local, basta realizar um ARP e endereçar diretamente o MAC do destino. Nada de gateway.

Caso B: origem e destino não estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.129. Já sabemos que a rede que a máquina A pertence é 10.1.0.0 ( veja, pode não ser se a máquina A estiver com a máscara errada!!!)

 

 

Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):

 
 
(10)        (1)         (0)         (129)
0000 1010   0000 0001   0000 0000   1000 0001
1111 1111   1111 1111   1111 1111   1000 0000 (25 bits em 1)
0000 1010   0000 0001   0000 0000   1000 0000 (RESULTADO AND)
 
 

Como resultado deste AND, chega-se ao cálculo de 10.1.0.128, que não é mesma rede da máquina A. A conclusão é que o destino não está aqui e preciso repassar o pacote para o gateway (o que o gateway faz deixamos para um próximo artigo).

Se a máquina A estiver com a máscara errada (um /24 quando deveria ser um /25) ela pode ficar isolada de parte da rede, por achar que o destino é rede local quando não é (deveria ter usado o gateway). Da mesma forma se ela é um /25 quando deveria ser um /24 poderá usar o gateway quando não era necessário. A correta configuração de máscara é extremamente importante.

 

Conclusão

 

Por envolver operações binárias e conceitos de redes, este artigo pode não ter sido do interesse de muitos leitores. Mas tenho observado nos fóruns que muita gente não sabe o que são máscaras de rede e se perdem quando este conceito é empregado, por exemplo, em configurações de firewall.

O que significa dizer que estou executando um DROP no IP 10.1.0.0/28?

# iptables -A FORWARD -s 10.1.0.0/28 -j DROP
Quem está realmente sendo bloqueado? A resposta agora tem explicação: estão sendo bloqueados todos os ips que ao se realizar AND bit a bit com /28 resulte em 10.1.0.0. Na prática todos entre 10.1.0.0 e 10.1.0.15, pois este será o IP da rede e de broadcast que um /28 determina.
Ainda resta dizer que o uso de máscaras de forma apropriada é usado para subdividir uma faixa de ips públicos que determinada instituição recebeu em várias redes. Se eu tenho um /24, sei que posso montar uma rede com até 254 máquinas (sim, 254, pois tem o endereço de rede e de broadcast que não posso usar em máquina). Uma rede! Mas se eu quero DUAS, cada uma com 100 máquinas, posso quebrar este /24 em dois /25. Ou em quatro /26…

 

Ou ainda em três redes, uma /25 e duas outras /26.
Claro que para isto ai tem que ir mais a fundo no conceito de máscaras, pois pode não parecer, mas este artigo procurou fornecer apenas uma introdução ao assunto.

Referências

Este conceito de máscaras é bastante técnico e na Internet geralmente se encontram simplificações populares, como receitas de bolo. Nada como bons livros, principalmente os que descrevem o protocolo TCP/IP ou direto na veia, lendo as RFCs. Não seria ético da minha parte tornar público aqui minha preferência por este ou aquele livro, em detrimento de outro, mas se alguém se interessar pelo assunto, envie-me um email que terei maior prazer em responder.

Possuo em minha página pessoal um script em PHP para realizar o cálculo de máscara de redes, com um diferencial que ele mostra o números em seu formato binário, dentro do conceito que descrevi aqui. O mesmo pode ser encontrado em:

Categorias:Uncategorized