CompartilharConexaoInternet
Introdução
Conteúdo |
Compartilhamento de Conexão de Internet (ICS, sigla em inglês) fornece a habilidade para um computador compartilhar sua conexão com a Internet com outros. Para fazer isso, o computador com acesso a Internet deve ser configurado para funcionar como uma porta de saída de Internet (ou Internet gateway, em inglês). O computador gateway é conectado a Internet via uma placa de rede (com ou sem fios) ou um adaptador discado (dial up). O segundo computador (ou rede de computadores) acessa a Internet indiretamente via o computador gateway.
Situações nas quais ICS pode ser necessária inclui: conexões discadas; conexões autenticadas (PPPoA/E); conexões sem fio; quando é impraticável (devido a distância, por exemplo) ligar cada computador com um cado de rede.
Porém, quando possível, é preferível compartilhar a Internet através de um roteador dedicado. Existem muitas razões para isso, mas principalmente porque roteadores dedicados são construídos especificamente para esse propósito e são geralmente mais indicados para essa situação. Além disso, roteadores dedicados usam apenas uma fração da eletricidade requerida por um computador inteiro.
Configurando ICS no Ubuntu 9.10
Você vai precisar de duas portas Ethernet, uma para a conexão com a Internet e outra para a conexão com o outro computador. Ou ainda, você pode usar uma placa de rede sem fio para a conexão com a Internet e uma porta Ethernet para a conexão com o outro computador.
Para realizar a configuração, basta seguir os passos:
Clique com o botão direito do mouse no ícone de rede (ao lado do relógio do sistema). Selecione Editar conexões...
Na Aba Com fio, selecione Auto eth0 e clique no botão Editar....
Na Aba Configurações IPv4, selecione em Método a opção Compartilhado com outros computadores.
- Reinicie seu computador.
Agora, basta conectar qualquer computador em sua porta Ethernet para compartilhar a conexão com a Internet.
Nesse exemplo, os outros computadores devem ser conectados (por um cabo crossover) na placa de rede identificada como eth0 do computador gateway. Mude essa intarface caso seja necessário.
Ubuntu como gateway de Internet
Como na seção anterior, você vai precisar de duas placas de rede no computador gateway, ou ainda, uma interface PPP e uma palca de rede. Uma placa de rede (ou interface PPP) conecta a Internet, nós chamaremos essa placa de eth0. A outra placa conecta-se a sua rede interna, nós chamaremos essa placa de eth1. Também é possível fazer uma ICS com apenas uma placa de rede, caso ela tenha mais de uma porta. Nesse caso, use eth0 para a Internet e eth0:0 para a rede interna.
Em resumo, podemos ter uma das configurações:
Internet <==> eth0 <> Gateway Ubuntu <> eth1 <==> PC cliente.
Internet <==> ppp0 <> Gateway Ubuntu <> eth1 <==> PC cliente.
Internet <==> eth0 <> Gateway Ubuntu <> eth0:0 <==> PC cliente.
Configurando o gateway
O exemplo a seguir ilustra a configuração de gateway mais comum: um computador com duas placas de rede (eth0 e eth1) rodando o Ubuntu como servidor ICS em uma rede interna estática, configurada para subrede 192.168.0.x.
Nesse exemplo, eth0 representa a placa de rede conectada a Internet e eth1 representa a placa de rede conectada ao computador cliente. Você deve substituir eth0 e eth1 conforme sua situação. Além disso, qualquer subrede de IP privado pode ser usada para o endereço de IP da rede interna.
Em resumo:
eth0 = o adaptador de rede com Internet (externo ou WAN)
eth1 = o adaptador de rede no qual um segundo computador é conectado (interno ou LAN).
192.168.0.x = IP da subrede para eth1.
Caso sua configuração seja diferente, altere os comandos a seguir conforme for necessário.
Configurando a placa para a rede interna
Configure sua placa para a rede interna (eth1) para usar IP estático:
sudo ifconfig eth1 192.168.0.1
(As placas para a rede interna e para a externa não podem estar na mesma subrede)
Configurando o NAT
Configure o iptables para tradução NAT, desse modo os pacotes podem ser corretamente roteados através do gateway Ubuntu.
Você pode usar o Fire Starter como uma interface gráfica para o iptables. Para instalá-lo, basta procurar pelo pacote firestarter no Synaptic.
sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A POSTROUTING -t nat -j MASQUERADE
A regra 1 permite encaminhamento de pacotes (iniciais). A regra 2 permite o encaminhamento de pacotes com conexão estabelecida (e para aquelas relacionados aos que foram iniciados). A regra 3 faz o NAT.
Habilitando o roteamento
Configure o gateway para o roteamento entre as duas interfaces habilitando o encaminhamento de IP:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
- Edite o arquivo /etc/sysctl.conf adicionando as linhas:
net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1
A edição do arquivo /etc/sysctl.conf é requirida devido a um bug no Ubuntu Hardy e versões anteriores (Relatório de Bug no Launchpad).
Configurando o computador cliente
Qualquer sistema operacional pode ser conectado como cliente de uma ICS, desde que suas configurações de rede estejam corretas. O exemplo a seguir ilustra como configurar um cliente rodando o Ubuntu. Nesse exemplo, assumimos que o computador cliente será conectado ao gateway configurado para compartilhar Internet sobre a subrede 192.168.0.x, assim como feito na seção anterior.
Nesse exemplo, eth0 é a placa de rede do computador cliente que será conectada (por um cabo crossover) na placa eth1 do gateway rodando o Ubuntu. Você pode substituir eth0 conforme sua situação. Além disso, qualquer subrede de IP privado pode ser usada como endereço IP da rede interna, desde que ela conincida com a subrede do gateway.
Parando a rede
sudo /etc/init.d/networking stop
Configurando um IP estático no computador cliente
sudo ifconfig eth0 192.168.0.100
Este endereço IP pode ser qualquer um dentro do intervalo de IP privado do gateway.
Configurando o roteamento
sudo route add default gw 192.168.0.1
Configurando o servidor DNS
A menos que o seu gateway também gerencie DNS, você deve configurar manualmente o computador cliente com os servidores DNS de seu provedor de acesso a Internet. Se você não conhece esses servidores de DNS, você pode usar os servidores OpenDNS ao invés deles.
- Faça uma cópia de seu atual arquivo /etc/resolve.conf:
sudo cp /etc/resolv.conf /etc/resolv.conf.copia
- Abra o arquivo /etc/dhcp3/dhclient.conf com seu editor de texto favorito:
sudo nano /etc/dhcp3/dhclient.conf
- Localize a linha que começa com "prepend domain-name-servers" e altere da seguinte forma:
prepend domain-name-servers 208.67.222.222,208.67.220.220;
Os endereços 208.67.222.222 e 208.67.220.220 são servidores DNS do OpenDNS. Se você deseja usar os servidores DNS de seu provedor de acesso a Internet, use-os aqui ao invés desses.
Reiniciando a rede
sudo /etc/init.d/networking restart
Uma vez que isso termine, seu computador cliente terá acesso a Internet através de ICS. Por favor, dirija qualquer dúvida ou comentário para o fórum do Ubuntu-br: http://ubuntuforum-br.org/
Configurações avançadas de gateway
O exemplo descrito anteriormente ilustra como criar uma ICS básica em uma rede com IP estático. Uma vez que você já fez todas as configurações e certificou-se que tudo está bem em sua rede, existem algumas configurações avançadas de roteamento que podem ser feitas para tornar mais fácil a configuração dos computadores clientes.
As configurações avançadas incluem servidores DHCP e servidores DNS. Um servidor DHCP permite que os clientes obtenham um endereço IP sem ter que configurar um IP estático manualmente. Já um servidor DNS permite que os clientes interpretem os nomes de servidores sem ter que configurar endereços DNS manualmente.
Servidores DHCP/DNS
É extremamente fácil criar os servidores DHCP/DNS. O exemplo a seguir deve ser bom para a maioria das situações. Porém, ele não permitirá que o cliente veja computadores em diferentes subredes.
Instale no computador gateway o pacote dnsmasq pelo Synaptic ou seu gerenciador de pacotes preferido.
- Pare o servidor.
Após a instalação do dnsmasq ele é automaticamente iniciado, dessa forma será necessário pará-lo para podermos efetuar as mudanças.
sudo /etc/init.d/dnsmasq stop
- Faça uma cópia do arquivo de configuração atual (nós não usaremos nada dele agora, mas é interessante ter uma cópia para referência futura).
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.copia
- Edite o arquivo /etc/dnsmasq.conf com seu editor de texto favorito, adicionando as duas linhas seguintes:
interface=eth1 dhcp-range=192.168.0.100,192.168.0.250,72h
A "interface" deve ser a mesma a qual seu cliente será conectado. Já "dhcp-range" deve estar dentro da faixa de IP privado da subrede configurada para seu gateway.
- Iniciando o servidor DHCP/DNS
sudo /etc/init.d/dnsmasq start
Agora seus clientes estão aptos a obter um endereço IP automaticamente e interpretar nomes de servidores.
Alguns Exemplos
Nessa seção ilustraremos dois exemplos:
Computador gateway: placa de rede sem fio conectada a Internet; placa de rede com fio compartilhando a conexão. Computador cliente: placa de rede com fio recebendo conexão compartilhada.
Computador gateway: placa de rede com fio conectada a Internet; placa de rede sem fio compartilhando a conexão. Computador cliente: placa de rede sem fio recebendo conexão compartilhada.
Placa de rede sem fio conectada a internet
Nesse exemplo, o computador gateway conecta-se à Internet através da placa de rede sem fio identificada por wlan0. Uma placa de rede identificada por eth0 será usada para compartilhar a conexão. A conexão com a internet pode ser por ppp0, 3g ou modem móvel de Internet.
Para realizar as configurações, execute os comandos abaixo.
ifconfig eth0 up ifconfig eth0 192.168.2.1 echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.2.0/24 -j MASQUERADE iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 3074 -j DNAT --to-destination 192.168.2.2 iptables -t nat -A PREROUTING -i wlan0 -p udp -m multiport --dports 88,3074 -j DNAT --to-destination 192.168.2.2 iptables -A FORWARD -i wlan0 -d 192.168.2.2 -p tcp --dport 3074 -j ACCEPT iptables -A FORWARD -i wlan0 -d 192.168.2.2 -p udp -m multiport --dports 88,3074 -j ACCEPT
Se você precisar reinicar todas as configurações do iptable, execute o script abaixo.
# # rc.flush-iptables - Reiniciar os valores padroes do iptables. # # Copyright (C) 2001 Oskar Andreasson <bluefluxATkoffeinDOTnet> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program or from the site that you downloaded it # from; if not, write to the Free Software Foundation, Inc., 59 Temple # Place, Suite 330, Boston, MA 02111-1307 USA # # Configuracoes # IPTABLES="/usr/sbin/iptables" # # reiniciar as politicas padroes na tabela de filtro. # $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT # # reiniciar as politicas padroes na tabela NAT. # $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT # # reiniciar as politicas padroes na tabela de mangle. # $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P POSTROUTING ACCEPT $IPTABLES -t mangle -P INPUT ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT $IPTABLES -t mangle -P FORWARD ACCEPT # # limpar todas as regras nas tabelas de filtro e NAT. # $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F # # apagar todas as cadeias que nao sao padrao nas tabelas de filtro e NAT. # $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X
Placa de rede conectada a internet
Nesse exemplo, o computador gateway conecta-se à Internet através da placa de rede identificada por eth0. Uma placa de rede sem fio identificada por wireless0 será usada para compartilhar a conexão.
Antes de fazer as configurações vamos ter em mente algumas regras:
- Os computadores devem estar na mesma subrede.
- Talvez não seja possível usar o Gnome Network Manager (ou KDE Wifi Manager) para esse método.
O IP do servidor wireless0 deve estar no intervalo entre 192.168.x.2 e 192.168.x.24. Isso é devido ao fato de que normalmente nosso computador estará usando o IP 192.168.0.1, a menos que você esteja em uma grande rede. Além disso, em redes sem fio não é interessante usar um intervalo maior do que 24 no último número.
- Sua placa de rede sem fio deve ter o menor IP possível. Já os computadores clientes devem ter IP maiores do que os escolhidos para a placa de rede sem fio e para a placa que irá compartilhar a conexão.
Vamos agora parar o Network Manager:
sudo /etc/dbus-1/event.d/25NetworkManager stop
Uma vez interrompido, vamos configurar o arquivo /etc/network/interfaces. Pressione Alt+F2 e execute o comando:
gksu gedit /etc/network/interfaces
O seu arquivo pode se parecer com algo como:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 iface wlan0 inet dhcp
Vamos fazer nossa configuração da seguinte maneira:
Endereço de IP para wireless0: 192.168.0.2
Gateway para wireless0: 192.168.0.1 (Esse é o IP da placa que recebe a internet. Modifique caso seja necessário.)
Máscara de rede para wireless0: 255.255.255.0
Modifique seu arquivo /etc/network/interfaces da seguinte maneira:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wireless0
iface wireless0 inet static
wireless-key 1234567890
wireless-channel 6
wireless-mode ad-hoc
wireless-essid 'Wireless Connection'
address 192.168.0.2
gateway 192.168.0.1
netmask 255.255.255.0Lembre-se de modificar wireless0 pelo identificador de seu dispositivo, o qual você pode obter executando
iwconfig
Com esse arquivo de configuração, estamos fazendo o seguinte:
A interface wireless0 carrega automaticamente.
- Especificamos uma configuração estática, ao invés de usar DHCP.
Nós fixamos por segurança uma chave hexadecimal WEP (uma chave WAP não é suportada nesse estágio).
- Especificamos um canal por onde enviamos as informações. (Lembre-se que uma rede sem fio é muito similar as comunicações de radio/TV)
Especificamos que estamos em uma rede ad-hoc. (ponto-a-ponto ou malha).
- Colocamos um nome para a rede.
Fixamos os endereços IP, gateway e máscada de rede.
Uma vez feito isso, vamos reiniciar nossa rede:
sudo /etc/init.d/networking restart
Agora, vamos fazer algumas configurações com o Fire Starter. Para isso, pressione Alt+F2 e execute:
gksu firestarter
Uma janela padrão deve aparecer. Sigua os passos:
Pressione Próximo.
Escolha eth0 (ou o nome de seu dispositivo Ethernet) como o dispositivo de Internet. Se seu IP estiver configurado para DHCP, desmarque essa opção.
Escolha wireless0 (ou o nome de seu dispositivo sem fio) como o dispositivo que irá compartilhar a Internet. Marque a opção que fala sobre o compartilhamento de Internet.
Não marque a opção que habilita DHCP na Rede Local.
Pressione Salvar.
Se tudo correr bem, você deve ver uma mensagem do tipo Firewall Iniciado.
Agora, basta configurar o seu computador cliente. Se ele estiver rodando o Ubuntu, use o Network Manager. Caso ele esteja rodando o Windows ou outro OS, sigua a maneira usual do mesmo. Para o nosso exemplo, você deve escolher o seguinte:
- Endereço IP: 192.168.0.10
Gateway: 192.168.0.1
- Máscara de rede: 255.255.255.0
Servidor DNS: o mesmo que estiver no seu computador gateway.
Para descobrir o DNS que está configurado no seu computador gateway, você pode, por exemplo, abrir o arquivo /etc/resolv.conf e procurar pelo campo "nameserver".
Se tudo correu bem, o seu computador cliente agora tem acesso a Internet.
Fontes
https://help.ubuntu.com/community/Internet/ConnectionSharing
https://help.ubuntu.com/community/WifiDocs/ShareEthernetConnectionThroughWireless
Créditos
Tradutor: LuizAquino |
Data: 11/01/2010 |
Documentacao/CompartilharConexaoInternet (last edited 2011-09-19 23:23:03 by localhost)