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.