Compartilhar internet sem fio entre dois computadores

Iniciado por lamorais, 25 de Agosto de 2009, 20:57

tópico anterior - próximo tópico

lamorais

Olá pessoal, sou novo no fórum e também no "universo linux".
Tenho dois computadores: um notebook (ubuntu 9.04) e um desktop (ubuntu 9.04)
Antigamente eu usava windows nos dois computadores, mas resolvi instalar o ubuntu no meu notebook e permanecer com windows apenas no desktop.
Até aí não teve problema nenhum, consegui compartilhar a internet via-rádio do meu desktop com meu notebook.
Só que eu gostei tanto do ubuntu que resolvi também instalar ele no meu desktop.
Aí começou o problema: não consigo compartilhar a internet do meu desktop (via-rádio) com meu notebook. Já tentei configurar, até mostrou que o cabo estava conectado, mas mesmo assim não pegava internet no meu notebook. Vou mostrá-los como as conexões estão configuradas:

Conexão sem fio (internet via-rádio)
Método: Automático(DHCP)

Conexão com fio - desktop
Método: Manual
ip: 10.0.0.1
mascara de rede: 255.0.0.0
gateway: 10.0.0.1 (eu acho que o erro está aqui, pois no windows eu deixava essa opção em branco, mas no ubuntu tem que preenchê-la)

Conexão com fio - notebook
Metodo: Manual
ip: 10.0.0.2
mascara de rede: 255.0.0.0
gateway: 10.0.0.1
servidor DNS: 10.0.0.1

É isso pessoal, quem souber como configurar (de preferência sem ser através de comandos no terminal) me ajude por favor, eu fico grato.
Atenciosamente,

Luiz Augusto

fabio2paolini

Olá eu não saberia lhe informar como fazer sem o uso de alguns comandos no terminal. Porém não são tantos. Inicialmente seria bom você dizer como faz essa conexão. Imagino que tenha duas placas de rede no seu desktop. Uma recebe o sinal da net via rádio e a outra envia o sinal para o note. Ou talvez você use um adaptador usb ou pci para pegar a net via rádio.

Seria interessante você postar a saída do comando ifconfig aqui. Apesar de você já ter mostrado parte da configuração da rede.

Por fim dois comandos são importantes para compartilhar a net, que eu sei fazer somente por linha de comando. Ambos necessariamente com atributos de administrador.

Até onde eu sei, por padrão o linux não redireciona sinal da net, mesmo que já haja conexão entre os computadores.

Para habilitar a trasmissão de dados é necessário modificar o arquivo  " /proc/sys/net/ipv4/ip_forward" que por padrão leva somente o número 0 e deve ser trocado por 1. Em geral se faz isso com o comando:

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

Além disso, como o pc que recebe o sinal não possui um IP válido se usa um método chamado de "mascaramento de ip". Não é necessário compreender isso. Mas basta acionar os comandos:

modprobe iptable_nat

e

iptables -t nat -A POSTROUTING -o xxxx -j MASQUERADE

onde xxxx deve ser trocado com o device que acessa a net, talvez "eth0" no caso de uma placa de rede.

Esses comandos são necessários mesmo se sua rede já estiver devidamente configurada. Qualquer coisa dê um retorno.
Até

lamorais

Olá Fábio, obrigado por atender tão rápido a minha dúvida..
Primeiramente, sim, tenho duas placas de rede no computador. A que recebe o sinal da internet é encaixada no num adaptador pci, é uma RalinkR61(ou algo assim rsrsrs..) e a outra é integrada na placa-mãe mesmo..

Aqui está o comando ifconfig:

eth0      Link encap:Ethernet  Endereço de HW 00:24:21:bb:a8:29 
          inet end.: 10.0.0.1  Bcast:10.255.255.255  Masc:255.0.0.0
          endereço inet6: fe80::224:21ff:febb:a829/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:1948 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:1633 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:167325 (167.3 KB) TX bytes:188300 (188.3 KB)
          IRQ:253 Endereço de E/S:0x2000

lo        Link encap:Loopback Local 
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:16436  Métrica:1
          pacotes RX:124 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:124 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0
          RX bytes:18784 (18.7 KB) TX bytes:18784 (18.7 KB)

wlan0     Link encap:Ethernet  Endereço de HW 00:0e:2e:83:0e:53 
          inet end.: 60.60.0.24  Bcast:60.60.0.255  Masc:255.255.255.0
          endereço inet6: fe80::20e:2eff:fe83:e53/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:131305 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:37128 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:40081994 (40.0 MB) TX bytes:6742632 (6.7 MB)

wmaster0  Link encap:Não Especificado  Endereço de HW 00-0E-2E-83-0E-53-65-35-00-00-00-00-00-00-00-00 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Por favor, teria como explicar mais detalhadamente como usar esses comandos que você mostrou? É porque eu ainda não sei usar o terminal (mas vou aprender!). É só copiar e colar eles no terminal (substitiundo os xxxx, é claro)?
Atenciosamente,

Luiz Augusto

fabio2paolini

Olá, pela saída do ifconfig eu acho que sua conexão com a net vem pela rede sem fio wlan0. Caso isso seja correto você deve trocar aquele  "xxxx" por wlan0. 

Seria interessante mais algumas informações.

Poste a saída de "ifconfig -a" (somente ifconfig mostra as conexões ativas no pc enquanto ifconfig -a mostra todas as disponíveis)

Poste também  a saída do comando "route" do pc que conecta a net.

Notei que  a configuração de DNS do seu notebook me parece errada.

Conexão com fio - notebook
Metodo: Manual
ip: 10.0.0.2
mascara de rede: 255.0.0.0
gateway: 10.0.0.1
servidor DNS: 10.0.0.1


Para confirmar isto poste o conteúdo do arquivo /etc/resolv.conf  do Desktop. Para mostrar o conteúdo você pode usar o comando:

cat /etc/resolv.conf

e postar a saída. Antecipando um pouco, você pode por os números de dns deste arquivo na configuração do seu note.
Caso você não saiba, o dns são os números de IP de servidores remotos que fazem o mapeamento entre o nome dos sites e seus respectivos números de IP.


Quanto a sua pergunta "É só copiar e colar eles no terminal (substitiundo os xxxx, é claro)?" . É quase só copiar e colar. Antes você deve estar na linha de comando como administrador. Para fazer isso digite o comando:

sudo su

e preencha a sua senha.  Depois disso este terminal estará com poderes de "super usuário" ou administrador e então você pode copiar e colar nele.

Por ora já há  tarefas o bastante.
Até mais e boa sorte

lamorais

Aqui estão todas as informações que você pediu:

ifconfig -a

eth0      Link encap:Ethernet  Endereço de HW 00:24:21:bb:a8:29 
          inet end.: 10.0.0.1  Bcast:10.255.255.255  Masc:255.0.0.0
          endereço inet6: fe80::224:21ff:febb:a829/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:74 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:65 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:7347 (7.3 KB) TX bytes:7779 (7.7 KB)
          IRQ:253 Endereço de E/S:0x2000

lo        Link encap:Loopback Local 
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:16436  Métrica:1
          pacotes RX:8 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:8 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0
          RX bytes:728 (728.0 B) TX bytes:728 (728.0 B)

pan0      Link encap:Ethernet  Endereço de HW ba:d3:84:81:26:95 
          BROADCAST MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  Endereço de HW 00:0e:2e:83:0e:53 
          inet end.: 60.60.0.24  Bcast:60.60.0.255  Masc:255.255.255.0
          endereço inet6: fe80::20e:2eff:fe83:e53/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:19152 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:8740 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:6594629 (6.5 MB) TX bytes:1790052 (1.7 MB)

wmaster0  Link encap:Não Especificado  Endereço de HW 00-0E-2E-83-0E-53-65-35-00-00-00-00-00-00-00-00 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:0 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


route

Tabela de Roteamento IP do Kernel
Destino         Roteador        MáscaraGen.    Opções Métrica Ref   Uso Iface
60.60.0.0       *               255.255.255.0   U     2      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
10.0.0.0        *               255.0.0.0       U     1      0        0 eth0
default         60-60-0-1.rev.h 0.0.0.0         UG    0      0        0 wlan


cat /etc/resolv.conf

# Generated by NetworkManager
nameserver 60.60.0.1
nameserver 201.12.128.5


Eu já troquei o servidor DNS do meu notebook por: 60.60.0.1, 201.12.128.5 (agora está certo)
Já coloquei todos os seus comandos no Terminal como administrador mas ainda não pedou internet no meu notebook. Talvez agora com esses dados você deserole... estou esperando sua resposta.

Desde já agradeço..
Atenciosamente,

Luiz Augusto

lamorais

Fábio, consegui!!!! Digitei todos os comandos novamente, substituindo os xxxx por wlan0 e troquei o servidor DNS  do notebook como você me disse e de repente a net pegou!!!
Muito obrigado pela sua atenção!!
Atenciosamente,

Luiz Augusto

fabio2paolini

Beleza então. Tinha lido sua primeira resposta e já tinha ficado um pouco desanimado, pois aparentemente já estava tudo certo. Mas depois vi a segunda resposta.

Agora existem mais alguns detalhes a serem tomados para que tudo funcione quando você reiniciar o Desktop e talvez o notebook também.

No caso do notebook, em alguns casos ocorre do número de DNS no /etc/resolv.conf ser alterado. Se isso ocorrer, num primeiro momento vc pode simplesmente arrumar novamente até uma solução definitiva. Caso não ocorra na primeira reinicialização creio que está resolvido.

Por outro lado, no caso do Desktop, certamente ele não irá ajustar as configurações de Mascaramento e liberação de tráfego por padrão durante reinicialização. Para fazer isso é necessário alguns ajustes adicionais. Há diversas maneiras de se fazer isto. Irei lhe passar uma possibilidade. Como o meu Ubuntu é o 8.04 talvez haja alguma incopatibilidade mas acho improvável. De qualquer modo se encotrar dificuldades é só retornar.
Enfim seguem as modificações adicionais:

Para garantir que o comando "echo 1 /proc/sys/net/ipv4/ip_forward "  seja feito na reinicialização, abra o arquivo " /etc/sysctl.conf ". Neste arquivo você irá encotrar, entre outras coisas, algo assim

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1


Como a própria explicação diz, elimine o comentário da segunda linha. Caso você não saiba, nesses arquivos em geral se desabilita uma determinada linha  colocando o caracter "#" no início. O seu arquivo deve agora tomar a forma:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1


Falta ainda os comandos

modpbrobe iptable_nat

e

iptables -t nat -A POSTROUTING -o xxxx -j MASQUERADE

O que o comando modprobe faz é carregar módulos. Uma maneira de fazer isso na inicialização e escrevê-lo no arquivo /etc/modules, logo
abra este arquivo e na última linha escreva " iptable_nat " e se quiser por segurança você pode postar este arquivo aqui. Você pode também ler o início do arquivo, pois estes arquivos de configuração sempre possuem diversas explicações e comentários.


Por fim, o exemplo que eu vou lhe dar agora é uma adaptação do procedimento obtido em http://www.debian-administration.org/articles/445
Abra o arquivo /etc/network/if-up.d/iptables, caso ele exista  poste ele aqui. Caso não exista então crie ele
e adicione as linhas

#!/bin/sh
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE


Onde eu já supus que a sua conexão com a net vem da interface "wlan0". A primeira linha tem o papel de "avisar o sistema" de que este arquivo se trata de um executável em Shell Script, ou ao menos é o que eu suponho ser. O último passo é tornar este arquivo  um executável. Isto é feito com o comando (como administrador)

chmod +x /etc/network/if-up.d/iptables


Agora falta apenas reinicializar as máquinas para verificar se está tudo pronto. Caso não der certo retorne, mas ao menos você agora já sabe resolver o problema manualmente.

Até mais.
Fabio