Linux: Configurando a rede manualmente

Propaganda
Linux: Configurando a rede manualmente
Ao contrário do que muitos imaginam a configuração da rede em si em Linux não é
complicada, o que ocorre é que muitas vezes as pessoas que tentam fazer essa configuração
em Linux não tem o mínimo de conhecimento de redes e por isso troca a ordem de fazer as
coisas, esquece de algum detalhe ou coisas do gênero. Veremos neste tutorial como
configurar IP, Gateway e DNS, fixo ou dinâmico, veremos também como se conectar na
internet usando conexão PPPOE (ADSL).Leandro Santos
19/06/2008
Introdução
Este documento tem a finalidade de mostrar como configurar a rede no Debian e em
distribuições derivadas dele como Ubuntu, Kurumin, Kalango e etc.
Ao contrário do que muitos imaginam a configuração da rede em si em Linux não é
complicada, o que ocorre é que muitas vezes as pessoas que tentam fazer essa configuração
em Linux não tem o mínimo de conhecimento de redes e por isso troca a ordem de fazer as
coisas, esquece de algum detalhe ou coisas do gênero. Veremos neste tutorial como
configurar IP, Gateway e DNS, fixo ou dinâmico, veremos também como se conectar na
internet usando conexão PPPOE (ADSL).
Em uma rede típica, tenha em mente que precisamos configurar 3 coisas para que uma
determinada máquina possa se comunicar com a rede interna e externa (internet). Essas três
coisas são: IP, Gateway e DNS. O ideal é que decoremos nesta ordem, pois tem uma certa
lógica se consideramos que ao configurar um IP em nossa máquina já teremos acesso aos
outros micros da rede (mas não à internet). Ao configurarmos o gateway estamos dizendo
para a nossa máquina qual o equipamento que nos fornece conexão com a internet e a partir
daí já podemos nos comunicar com a internet, porém só por endereço de IP como
200.204.0.1, se tentarmos acessar www.guiadohardware.net já não teremos êxito pois para
conseguir acessar sites através de nomes precisamos configurar o DNS, configurando-o já
teremos acesso tanto à rede interna como à internet.
Um pré requisito para se trabalhar com redes em Linux é entender como as placas de redes
são representadas no sistema. O nomes das placas de redes em Linux sempre começam com
eth seguido de um número à partir de 0. Normalmente temos no minimo uma placa de rede
que é onboard, neste caso esta seria a primeira placa, portanto seria representada como
eth0. Se tivermos outra placa de rede esta será eth1 e assim sucessivamente. Para visualizar
as configurações atuais das placas usamos o comando ifconfig que veremos à seguir.
Isso tudo no que se refere à rede, para conexão direta à internet via modem ADSL com
autenticação PPPoE utilizaremos um aplicativo chamado pppoeconf, mas isso no final do
capítulo.
Usando o ifconfig
Para verificar as placas detectadas e ativas no momento utilize o comando ifconfig sem
parâmetro nenhum:
# ifconfig
eth0 Link encap:Ethernet Endereço de HW 00:1b:24:0b:6e:f9
inet end.: 192.168.0.3 Bcast:192.168.0.255 Masc:255.255.255.0
endereço inet6: fe80::21b:24ff:fe0b:6ef9/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:82307 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:69351 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:77572745 (73.9 MB) TX bytes:10467746 (9.9 MB)
IRQ:17 Endereço de E/S:0xa000
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:628 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:628 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:0
RX bytes:31400 (30.6 KB) TX bytes:31400 (30.6 KB)
Algumas vezes por um motivo ou outro temos placas que foram detectadas pelo sistema
mas não estão ativas, para ter certeza de quais são todas as placas detectadas utilize o
parâmetro -a.
# ifconfig -a
Caso exista uma placa que foi reconhecida mas está desativada você pode ativa-la usando o
parâmetro up do ifconfig, mas neste caso você precisa do nome da interface (que o
parâmetro -a lhe informará), considerando que seja eth1 faríamos o seguinte:
# ifconfig eth1 up
E para desativa-la:
# ifconfig eth1 down
Atenção: A partir do momento que você executa um down na placa ela não aparece mais
no resultado do comando ifconfig sozinho, apenas com o parâmetro -a.
Nós normalmente desativamos uma interface de rede quando não vamos utiliza-la para
evitar qualquer tipo de problema ou confusão na hora da configuração.
Além de mostrar informações, ativar e desativar interfaces de rede o ifconfig também é
usado para atribuir IP, Máscara de Rede e Endereço de Broadcast, como este documento
não tem como foco a parte teórica sobre redes, vamos apenas aprender a aplicar cada um
destes itens sem nos estendermos sobre a parte teórica de cada um. Repararam que a
configuração do gateway e DNS ficaram de fora? Para esta duas configurações não
utilizamos o ifconfig como veremos a seguir.
Como exemplo vamos considerar que estamos na rede 192.168.0 e que a máscara seja
255.255.255.0, diante deste cenário vamos atribuir o IP 192.168.0.2 para a interface eth0.
# ifconfig eth0 192.168.0.2
# ifconfig eth0
eth0 Link encap:Ethernet Endereço de HW 00:1b:24:0b:6e:f9
inet end.: 192.168.0.2 Bcast:192.168.0.255 Masc:255.255.255.0
UP 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:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
IRQ:18 Endereço de E/S:0x4000
Perceba no item inet end.: que agora a interface eth0 tem o número de IP 192.168.0.2,
fique atento também para perceber que apesar de não termos atribuído nenhuma máscara ou
endereço de Broadcast o sistema atribuiu automaticamente os valores 255.255.255.0 e
192.168.0.255 respectivamente, isso porque essa é uma configuração típica, ou seja, uma
rede de classe C utilizando o último endereço IP para Broadcast. Mas se fosse o caso
poderíamos ter passado essas informações para o ifconfig usando a seguinte sintaxe:
# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
Depois de atribuir um número de IP, caso já tenha outro micro na rede (Linux ou não)
devidamente configurado você pode testar a comunicação com ele usando o comando ping:
# ping -c5 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.047 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.048 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=0.052 ms
--- 192.168.0.1 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 3997ms
rtt min/avg/max/mdev = 0.047/0.049/0.053/0.006 ms
Se o resultado for algo parecido com o que está acima, ótimo, caso contrário você precisa
verificar o que pode estar errado antes de prosseguir. As hipóteses para não haver
comunicação são inúmeras, no entanto procure verificar se o cabo está conectado
exatamente na interface que você configurou; se o outro micro está ligado; se o Hub ou
Switch (caso exista) está funcionando e assim por diante, enfim, verifique tanto a parte
física (hardware) quanto a parte lógica (software).
Tendo sucesso na comunicação com os demais micros da rede podemos seguir e configurar
o Gateway, ou seja, dizer para a nossa máquina qual é o micro ou equipamento na rede que
está compartilhando a internet, para isso vamos utilizar o comando route, consideremos
que o roteador (gateway) seja 192.168.0.1:
# route add default gw 192.168.0.1




route é o comando em si;
add é porque estamos adicionando uma rota;
default porque esta rota será a padrão;
gw porque oque estamos adicionando se trata de um roteador (ou um computador
fazendo esta função)
Para verificar se a rota foi incluída com sucesso use:
# route -n
O número 192.168.0.1 (no nosso caso) tem que estar disponível na lista, caso contrário
execute o comando novamente e verifique mais uma vez.
Se tudo estiver Ok você já deve ter acesso à internet, portanto vamos tentar pingar um
número de IP externo para ver se temos resposta:
# ping -c5 200.204.0.10
PING 200.204.0.10 (200.204.0.10) 56(84) bytes of data.
64 bytes from 200.204.0.10: icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from 200.204.0.10: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 200.204.0.10: icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from 200.204.0.10: icmp_seq=4 ttl=64 time=0.055 ms
64 bytes from 200.204.0.10: icmp_seq=5 ttl=64 time=0.049 ms
--- 200.204.0.10 ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 0.049/0.053/0.058/0.008 ms
Se conseguimos pingar um número de IP então vamos tentar pingar algum site:
# ping -c5 www.guiadohardware.net
Funcionou? Provavelmente não, porque nossa máquina “não sabe” quem é
www.guiadohardware.net precisamos configurar o servidor de nomes, o famoso DNS, ele é
a última coisa que falta para concluirmos nosso exemplo, para configurar o DNS você
precisa editar o arquivo /etc/resolv.conf e colocar algo como o conteúdo abaixo:
nameserver 200.204.0.10
nameserver 200.204.0.138
Estes servidores DNS são da telefônica, você pode colocar qualquer servidor válido, mas dê
preferência para o servidor que seu provedor te fornecer, assim evita problemas. Perceba
que fora o endereço do servidor (que vão te fornecer) a única regra para o arquivo é a linha
começar com a palavra nameserver. É comum configurarmos dois servidores DNS, pois se
um falhar na resolução do nome, ou estiver fora do ar, o outro assume automaticamente.
Agora sim:
# ping -c5 www.guiadohardware.net
PING www.guiadohardware.net (204.189.40.11) 56(84) bytes of data.
64 bytes from www.guiadohardware.net (204.189.40.11): icmp_seq=1 ttl=64 time=0.049
ms
64 bytes from www.guiadohardware.net (204.189.40.11): icmp_seq=2 ttl=64 time=0.048
ms
64 bytes from www.guiadohardware.net (204.189.40.11): icmp_seq=3 ttl=64 time=0.047
ms
64 bytes from www.guiadohardware.net (204.189.40.11): icmp_seq=4 ttl=64 time=0.049
ms
64 bytes from www.guiadohardware.net (204.189.40.11): icmp_seq=5 ttl=64 time=0.047
ms
--- www.guiadohardware.net ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 0.047/0.048/0.049/0.000 ms
Ufa, conseguimos.
Mas agora, bem....não vá ficar bravo hein? Tenho uma notícia para dar: Tudo isso que
fizemos será perdido ao reiniciarmos o sistema! Com exceção da configuração do DNS,
pelo menos isso né?
Acontece o seguinte, essas ferramentas que usamos normalmente são usadas para você ir
testando as configurações de rede em tempo real sem perder tempo com outras coisas, mas
elas não são definitivas, a idéia é que você faça a configuração dessa forma e se funcionar
ai sim deixe esta configuração fixa no arquivo /etc/network/interfaces. Basta seguirmos a
sintaxe mostrada abaixo substituindo as informações (obviamente) e a configuração da rede
será fixada, lembrando, antes de mexer neste arquivos você tem que ter todas as
informações abaixo em mãos:





Nome da Interface de Rede
Endereço IP
Máscara de Sub-rede
Endereço de Broadcast
Endereço do Gateway
Como já temos todas as informações em mãos e sabemos que no nosso exemplo a interface
a ser configurada é eth0, ao abrirmos o arquivo vamos remover qualquer linha que faça
referência à eth0 e depois acrescentar o seguinte conteúdo:
auto eth0
iface eth0 inet static
network 192.168.0.0
address 192.168.0.2
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
Pronto, fique atento para não errar nenhuma palavra chaves, qualquer erro neste arquivo
fará com que a rede não funcione.
Vamos explicar cada linha:







auto eth0 indica para o sistema que essa interface de rede deve ser configurada no
boot
iface eth0 inet static indica que a configuração da interface vai ser estática, ou seja,
nós vamos definir as configurações. No lugar da palavra static poderíamos colocar
a palavra dhcp, assim a configuração da rede seria obtida via DHCP caso você
tenha um servidor deste tipo na rede, mas isso é outra história.
network é a rede em que você está, no geral é o mesmo número de IP da sua
máquina só que no final ao invés do seu número coloque um 0 (zero).
address é o seu número de IP.
netmask é a máscara de sub-rede.
broadcast é o endereço de broadcast da rede.
gateway é o endereço IP do equipamento que está compartilhando a internet.
Depois de configurar e salvar este arquivo você tem duas opções para saber se configurou
corretamente e a rede continua funcionando, a primeira opção é reiniciar o computador,
assim o serviço de rede será reiniciado e as configurações entrarão em vigor, a segunda é
reiniciar o serviço de rede manualmente e já poder testar as configurações na hora:
# /etc/init.d/networking restart
Ao executar o comando acima o arquivo /etc/network/interfaces que configuramos será
lido para que a configuração de rede entre em vigor, se as informações contidas nele
estiverem corretas a rede deve estar funcionando, vamos testar com o ping:
# ping -c5 www.guiadohardware.net
Caso contrário teremos que abrir o arquivo novamente, descobrir onde está o erro e
reiniciar o serviço de novo para ver se a mudança corrigiu o problema.
Configuração via DHCP
Hoje em dia é meio raro configurar a rede máquina por máquina para que elas tenham
comunicação como fizemos acima, costuma-se utilizar um servidor DHCP que fornece
essas informações automaticamente para a máquina que solicitar. Esta solicitação costuma
ser feita a cada boot, portanto, não precisamos nos preocupar com quase nada, apenas dizer
para o sistema que a configuração deve ocorrer de forma automática.
Tenha em mente que esta parte do capítulo não depende de nenhuma configuração que
fizemos quando definimos um IP fixo, na verdade você terá que optar por IP fixo ou
dinâmico (via DHCP).
Atualmente o aplicativo cliente de DHCP, ou seja, o programa que vai solicitar os dados da
rede ao servidor e configurar a rede com estes dados recebidos é o dhclient, que no Debian
faz parte do pacote dhcp3-client. Sua utilização é bem simples, ao chamar o comando sem
parâmetro nenhum, como em:
# dhclient
Ele irá tentar buscar as configurações por DHCP em todas as placas de redes detectadas, se
por outro lado você quiser ser mais específico e forçar o dhclient a buscar as configurações
direto usando uma determinada placa você pode especificar o dispositivo como parâmetro,
exemplo:
# dhclient eth0
Caso tenha um servidor DHCP na mesma rede as configurações serão obtidas e você pode
testar o funcionando utilizando o ping em algum site:
# ping -c5 www.guiadohardware.net
Não tem muito o que dar errado ao se utilizar o dhclient, em caso de problema você terá
que se certificar de que o servidor não está off-line e que toda a parte física da rede como
cabos, hubs ou switchs estão operando normalmente, além é claro de verificar com o
ifconfig se sua placa de rede foi reconhecida.
Assim como a configuração do IP fixo, você precisa configurar o arquivo
/etc/network/interfaces para que a cada boot ele busque as configurações via dhcp, para
isso abra o arquivo, remova qualquer referência a interface que você deseja configurar
(eth0 por exemplo) e deixe as configurações da interface da seguinte forma:
auto eth0
iface eth0 inet dhcp
Somente isso, nada além. Bem mais simples do que a configuração do IP fixo. Só lembre
que eth0 é um exemplo, no seu caso pode ser eth1, eth2 ou algum outro nome, fique
atento.
Download