Você está na página 1de 6

Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

Compartilhando internet via rádio entre um servidor Linux e


clientes Windows

Autor: Junior Assis Barreto Bernardes <junior.assis at gmail.com>


Data: 19/11/2009

Introdução

O compartilhamento de internet entre um servidor Linux e estações Windows


não é uma coisa trivial, principalmente quando se trata de conexões pppoe.
Uma das complicações é que conexões pppoe domésticas normalmente possuem
IP dinâmico. Assim o mascaramento de pacotes vindos da rede interna para a
internet deve ser feito através de interfaces de conexão, e não por endereços
IP.

Durante o texto alguns dos conceitos supracitados serão explicados mais


detalhadamente para facilitar a compreensão do leitor, especialmente daqueles
iniciantes.

Gostaria de salientar que a distribuição utilizada para o desenvolvimento desse


artigo foi Ubuntu 8.10 (codenamed Hardy Heron).

Preparando o servidor
Primeiramente, deve-se estabelecer a conexão com a internet. No caso de
conexões via rádio (wireless) isso é feito com o comando pppoeconf. Porém,
antes de iniciar a conexão, certifique-se de que sua placa wireless está
reconhecida e funcionando, utilizando o comando:

$ iwconfig

Caso apareça uma interface com o nome de wlanX, onde X é um número inteiro
e positivo, então estamos prontos para continuar. Caso não apareça nenhuma
interface com este nome, procure ajuda em como instalar o modelo da sua placa
wireless no Linux, especialmente na distribuição que você está utilizando.

1 de 6 06-12-2009 12:52
Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

Posteriormente devemos configurar a interface wireless com o nome (ESSID) da


rede sem fio que será utilizada para navegar na internet. Para isso, execute:

# iwconfig wlanX ESSID "nome da rede"

Onde X é o número que apareceu anteriormente quando executamos o comando


iwconfig.

Feito isso estamos aptos para estabelecer a conexão com a internet. Para isso
rode o comando:

# pppoeconf

Durante o processo serão requisitados alguns dados, como nome de usuário e


senha e serão feitas algumas perguntas. Quanto as perguntas, se você ficar em
dúvida, o próprio texto indicará a opção mais recomendada.

Após a configuração da conexão da internet devemos configurar a placa de


rede que será utilizada para compartilhar a conexão. Para descobrir as placas
que estão reconhecidas e em pleno funcionamento, execute:

$ ifconfig

As interfaces de interesses são as do tipo ethX, onde X é um número inteiro e


positivo. Caso nenhuma interface com este nome apareça, execute:

$ ifconfig -a

para mostrar todas as interfaces existentes, levantadas ou não.

Se alguma interface de interesse aparecer, faça:

# ifconfig ethX up

para levantar e colocar a interface em funcionamento.

Com a interface de rede ethernet pronta, basta adicionar um ip para ela do


seguinte modo:

# ifconfig ethX 192.168.0.1 netmask 255.255.255.0

Com X sendo o número da interface que está funcionando. O endereço ip

2 de 6 06-12-2009 12:52
Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

(192.168.0.1) e máscara de rede (255.255.255.0) são apenas ilustrativos. Vou


continuar admitindo esses valores, mas o leitor pode configurar a rede de
acordo com as suas necessidades.

Habilitando o roteamento de pacotes

Depois de estabelecer a conexão com a internet e certificar de que ela está


funcionando corretamente devemos habilitar em nosso servidor o roteamento
de pacotes, ou seja, devemos permitir que o servidor possa descobrir o caminho
e entregar os pacotes que não sejam destinados a ele. Isso é fundamental para
que as máquinas da rede interna consigam enviar pacotes para máquinas
externas. Essa informação, sobre roteamento de pacotes está armazenada em
um arquivo chamado ip_forward. Este arquivo fica com o número 1 armazenado
se o roteamento estiver habilitado ou 0 caso contrário.

A modificação deste arquivo para permitir o roteamento pode ser feita de duas
maneiras: utilizando o comando sysctl:

# sysctl -w net.ipv4.ip_forward=1

ou através do comando echo:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Fazendo mascaramento de pacotes


com SNAT
Para que as estações clientes possam navegar na internet, o servidor tem que,
além de rotear os pacotes das mesmas para as máquinas externas (internet),
converter o endereço das estações internas, que possuem os respectivos
endereços ip referentes à rede interna para um endereço real de internet, para
que as máquinas externas também consigam se comunicar com as estações da
rede interna.

Esta técnica é conhecida como NAT (Network Address Translation) e, em


Linux, isso pode ser feito utilizando iptables, que é uma ferramenta utilizada
para fazer filtragem de pacotes e já está presente no kernel do Linux.

Na verdade existem dois tipos de NAT: o SNAT (Source Network Address

3 de 6 06-12-2009 12:52
Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

Translation) , em que o endereço de origem do pacote é alterado depois do


roteamento, e o DNAT (Destination Network Address Translation) , em que
altera-se o endereço de destino antes do roteamento. Porém, no nosso caso,
basta o SNAT: queremos apenas que todos os pacotes vindos da rede interna
pareçam que têm como origem o nosso servidor com uma conexão PPP.

Quando executamos o comando pppoeconf foram criadas uma ou mais


interfaces de conexão pppoe com a internet. Podemos ver esse fato executando:

$ ifconfig

As interfaces de interesse, neste caso, são as do tipo pppX.

Antes de mascarar os pacotes oriundos da rede interna, trocando os endereços


de origem, precisamos descobrir qual é a interface que de fato é responsável
pela conexão com a internet.

Para isso utilizaremos a ferramenta Wireshark, que serve como analisadora de


tráfego de rede, mostrando os pacotes que estão sendo enviados e recebidos
por cada interface, sendo ela real (placas de rede) ou virtual.

Para instalar o Wireshark no Ubuntu (ou qualquer distribuição Debian-based),


basta digitar no terminal:

# apt-get install wireshark

Depois de instalar o Wireshark, inicie-o como root.

Vá em "Capture", na barra de menus, e selecione "Interfaces".

Aparecerá uma tela com as interfaces presentes no sistema e o número de


pacotes que está passando por cada uma delas.

Para descobrir qual interface ppp será utilizada no mascaramento, basta iniciar
o navegador, com o wireshark ativo, navegar em algum site e, simultaneamente,
verificar por qual interface ppp estão passando os pacotes.

Após descobrir por qual interface ppp está se comunicando com a internet,
podemos fazer o mascaramento da seguinte forma:

# iptables -t nat -A POSTROUTING -o pppX -j MASQUERADE

Onde X é o número da interface que foi descoberta no Wireshark.

4 de 6 06-12-2009 12:52
Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

O comando acima indica que será adicionada uma regra na chain


POSTROUTING da tabela nat. Tal regra indica que os pacotes saindo de pppX
terão o endereço automaticamente escolhidos devido ao parâmetro
MASQUERADE. Isso é necessário uma vez que o IP normalmente não é fixo em
conexões pppoe.

Em caso de dúvidas no entendimento do comando acima, recomenda-se a


leitura de artigos relacionados à ferramenta iptables.

Configurando o servidor DHCP

Se os passos anteriores foram executados corretamente e nenhum erro


aconteceu, basta configurar as estações clientes com endereços IP de acordo
com o endereço e a máscara de rede utilizada no servidor, informar os
servidores de nomes e adicionar a rota de saída e as estações já estarão prontas
para navegar na internet.

Porém os procedimentos citados não são elementares para um usuário iniciante


e leigo em assuntos relacionados a redes de computadores.

Podemos facilitar a vida desses usuários configurando um servidor DHCP


(Dynamic Host Configuration Protocol) . Este servidor se encarregará de
atribuir um endereço IP para cada estação ativa na rede, além de informar os
servidores de nomes e a rota padrão de saída para Internet (gateway).

Existem vários servidores DHCP disponíveis. No Ubuntu, por exemplo, você


pode instalar facilmente o dhcp3-server digitando no terminal:

# apt-get install dhcp3-server

Para configurar o servidor, bastar editar o arquivo dhcpd.conf, que se encontra


no diretório raiz onde está o servidor DHCP que, normalmente é o /etc. No meu
caso o arquivo dhcpd.conf está localizado no diretório /etc/dhcp3-server/.

Uma configuração básica e funcional para o servidor pode ser feita da seguinte
maneira:

#-----------Arquivo dhcpd.conf-----------
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0; #Mascara de rede utilizada na rede

5 de 6 06-12-2009 12:52
Compartilhando internet via rádio entre um servid... http://www.vivaolinux.com.br/artigos/impressora....

option broadcast-address 192.168.1.255;


option routers 192.168.0.1; #Roteador: no nosso caso é o ip do servidor Linux
option domain-name-servers 10.100.100.2, 10.100.100.4; #Servidores DNS

#Intervalo de IPs válidos a serem atribuídos às estações.


subnet 192.168.0.1 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
}

Lembrando que os valores dos endereços IP, tando da própria rede quanto dos
servidores DNS são apenas ilustrativos. O leitor deve substituí-los por valores
condizentes com suas necessidades.

Uma vez editado o arquivo, basta iniciar (reiniciar) o servidor DHCP:

# /etc/init.d/dhcp3-server restart

Agora basta colocar as estações Windows para obter endereço IP e DNS


automaticamente. Estações Linux também podem obter endereços
automaticamente: basta utilizar um cliente DHCP para isso.

http://www.vivaolinux.com.br/artigo/Compartilhando-internet-via-radio-entre-
um-servidor-Linux-e-clientes-Windows

Voltar para o site

6 de 6 06-12-2009 12:52

Você também pode gostar