Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Compartilhando internet via rádio entre um servidor Linux e clientes Windows

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo Compartilhando internet via rádio entre um servidor Linux e clientes Windows

    Este artigo tem como finalidade apresentar uma configuração básica para compartilhamento de uma conexão pppoe, via rádio, com estações Windows, utilizando, para isso, roteamento de pacotes, SNAT (para mascaramento) e DHCP para facilitar a configuração nas estações clientes.
    Por: Junior Assis Barreto Bernardes

    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.

    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 (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 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.

    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:
    Código:
    #-----------Arquivo dhcpd.conf-----------
    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0; #Mascara de rede utilizada na rede
    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.


    Fonte:
    VivaoLinux
    Postado Por: RedDeviL
X
Working...
X