Configurando rede no GNU/Linux

Publicado: 29 de março de 2008 em GNU/LINUX
Carlos E. Morimoto
28/03/2008
Mesmo a configuração de rede no Windows, que é aparentemente simples, esconde vários segredos, como vimos no tutorial sobre redes Windows:

server

Configurando a rede no Windows
A configuração de rede no Windows é um assunto bastante conhecido, pois a configuração é bastante similar entre as diferentes versões do Windows e a configuração gráfica torna tudo mais simples. Entretanto, é justamente a aparente simplicidade que faz com que muitos recursos passem despercebidos. Este é um tutorial “mais que completo” sobre a configuração de rede no Windows, incluindo tópicos avançados, configuração de redes wireless e a configuração no Vista.

Vamos agora estudar sobre a configuração de rede no Linux, que apesar de aparentemente complicada, não é tão exótica quanto pode parecer à primeira vista.

A primeira coisa a ter em mente com relação à configuração de rede no Linux é que, como quase tudo no sistema, a configuração pode ser feita tanto usando utilitários gráficos quanto diretamente, através de comandos e da edição dos arquivos de configuração. Existe uma grande variação com relação aos utilitários de configuração, já que cada distribuição adota um utilitário diferente, mas os passos da configuração manual são quase sempre os mesmos, com poucas variações.

Vamos então estudar as duas formas, começando com os utilitários e em seguida nos aprofundando na configuração manual do sistema.

Ubuntu

O Ubuntu, usa o networkmanager como utilitário de configuração da rede. Ele fica ativo ao lado do relógio e é carregado automaticamente durante o boot do sistema.

Ele tem a função de detectar as redes wireless disponíveis, mostrando uma lista que facilita a conexão e também de detectar a inserção do cabo de rede. A partir do momento em que o cabo de rede está conectado, ele tenta configurar a rede via DHCP. É por isso que em muitos casos o sistema configura a rede “sozinho”, sem que você precise fazer nada.

Clicando sobre o ícone ao lado do relógio, você pode alternar entre as redes disponíveis, incluindo tanto a rede cabeada quanto as redes wireless disponíveis. Usando a opção “Configuração manual” você tem acesso à configuração manual dos endereços para cada interface:

 

 

 


index_html_1bd64d2e

 index_html_50c1c712

Você pode notar que está disponível também a opção de configurar um modem discado, mas as opções são rudimentares; se você usa acesso discado, recomendo utilizar o gnome-ppp ou o kppp, que podem ser instalados através do gerenciador de pacotes.

Como de praxe, o utilitário de configuração é aberto com permissões administrativas. Mas, ao contrário de outras distribuições, onde seria solicitada a senha de root, o Ubuntu apenas confirma sua própria senha de usuário e abre o utilitário usando o sudo.

Dentro das propriedades da interface de rede, você vai notar a opção “Habilitar o modo de roaming”, que é justamente o recurso responsável pela conexão automática às redes disponíveis. Desativando a opção, você tem acesso à configuração manual da rede e pode definir endereços estáticos ou ativar o uso do DHCP:

index_html_12cbefc2

 index_html_6823ee3a

No Ubuntu 7.10 existe um bug que faz com que as alterações não sejam aplicadas depois de salvas. Você pode contornar isso forçando uma atualização manual, reiniciando o serviço responsável pela configuração da rede:

$ sudo /etc/init.d/networking restart

De volta à tela principal, você pode ajustar o nome da máquina na aba “geral” e ajustar os endereços dos servidores DNS na aba “DNS”. Ao contrário do Windows, onde você pode definir endereços de DNS específicos para cada interface, os endereços definidos no networkmanager valem para todas as interfaces de rede.

Na aba “Máquinas” você pode definir “apelidos” para as outras máquinas da rede, relacionando seus nomes a endereços IP. Criando um apelido, em vez de digitar “ssh 192.168.1.254” ao acessar o servidor da rede via SSH (por exemplo), você pode usar apenas “ssh servidor”. Esta opção equivale à edição do arquivo “/etc/hosts”, que você encontra em qualquer distribuição.

index_html_m3c291d59

 index_html_83f9609

Se você carrega o notebook de baixo do braço para cima e para baixo e precisa acessar diversas redes diferentes ao longo do dia, cada uma com uma grade de configuração diferente, pode usar o recurso de profiles, de forma a salvar as configurações e alternar entre elas.

Para salvar um profile, conecte-se à rede e use o botão com o disquete (dentro do “Configurações de rede”) para salvar a configuração, dando um nome a ela. O profile contém a grade completa da configuração, incluindo quais interfaces estão ativas e toda a grade de endereços usados. Os profiles salvos aparecem no campo “local”, permitindo que você alterne entre eles rapidamente:

index_html_6d60ed58

O networkmanager tem um irmão, o knetworkmanager, que é usado no Kubuntu. Os dois oferecem basicamente as mesmas opções, a diferença é que o knetworkmanager é baseado nas bibliotecas do KDE, enquanto o networkmanager é baseado nas bibliotecas do Gnome.

Ambos ficam ativos continuamente, como um serviço de sistema, que você não consegue desativar através do ambiente gráfico. Se você quiser configurar a rede manualmente, como veremos a seguir, precisa primeiro desativá-los, usando os comandos abaixo:

$ sudo /etc/dbus-1/event.d/??NetworkManagerDispatcher stop
$ sudo /etc/dbus-1/event.d/??NetworkManager stop

Em seguida, abra o arquivo “/etc/rc.local” (como root) e adicione os dois comandos, retirando o “sudo”, para que eles passem a ser executados automaticamente durante o boot. No caso do Kubuntu, é necessário também desativar o knetworkmanager dentro do ambiente gráfico, desmarcando o início automático nas configurações do programa.

Fedora

O Fedora utiliza o system-config-network, disponível no “Sistema > Administração > Rede”. Ele é um dos utilitários gráficos mais antigos para configuração da rede, usado desde as primeiras versões do Red Hat Desktop, antecessor do Fedora. Você vai perceber que a interface lembra um pouco a do networkmanager, já que os dois utilitários tem uma origem comum.

 

Na tela principal, clique sobre a interface a configurar e clique no botão “Editar” para ter acesso à janela de configuração. Além das opções de configurar a rede via DHCP ou usando um endereço fixo, você tem a opção de ativar o uso do protocolo IPV6, permitir que outros usuários da máquina possam ativar e desativar a interface (útil caso o micro seja compartilhado entre várias pessoas, ou no caso de um servidor) e também definir o MTU usado pela placa:

index_html_6ff74382

 index_html_m7d3c94ff

O MTU permite definir o tamanho máximo dos pacotes que são transmitidos através da rede. Usar pacotes menores pode melhorar sutilmente o desempenho em conexões via modem ou em redes baseadas em hubs burros, onde exista um grande volume de colisões. Mas, em situações normais, reduzir o MTU só atrapalha, pois reduz o percentual de bytes úteis dentro de cada frame, em relação ao overhead.

A tendência atual é justamente o contrário, ou seja, aumentar o tamanho dos frames, de forma a melhorar o aproveitamento do link e reduzir o volume de frames necessários para transmitir um determinado volume de dados, reduzindo assim o volume de processamento necessário. Este recurso é chamado de “jumbo frames” e permite o uso de frames com até 9000 bytes.

Continuando, a aba “Rota” permite definir rotas alternativas para determinados PCs da rede ou da Internet, o que é útil em redes com mais de um gateway. Você pode então usar o servidor A como gateway padrão, mas fazer com que acessos a uma determinada faixa de endereços sejam feitos através do servidor B.

De volta à tela principal, você pode definir os endereços dos servidores DNS na aba “DNS” e definir apelidos para os endereços na aba “Servidores” (da mesma forma que na aba “máquinas” do networkmanager):

index_html_m3da54e68

 index_html_174f4199

A aba “IPsec” permite criar VPNs. Existem duas modalidades: Host a Host (onde é criado um túnel entre dois micros) e Rede a Rede, onde é criada uma VPN entre duas redes, permitindo que os micros de uma enxerguem os da outra, como se ambas formassem uma rede só.

Para criar a VPN, é necessário que o servidor do outro lado da conexão esteja acessível via Internet (ou seja, utilize um IP fixo ou um domínio virtual) e esteja com o IPsec ativo. O IPsec é um software padrão, que pode ser usado em qualquer distribuição, por isso não é necessário que a outra máquina também esteja rodando o Fedora, mas apenas que o daemon do IPsec esteja disponível.

Assim como no networkmanager, você pode criar profiles com diferentes grades de configuração para a rede, alternando rapidamente entre elas conforme necessário:

index_html_m408921e9

 index_html_m760d6878

Além do system-config-network, o Fedora inclui também uma versão em modo texto, o “system-config-network-tui”, que é útil em situações onde o modo gráfico não estiver configurado, ou ao configurar servidores sem o ambiente gráfico instalado.

Você encontra também uma versão ligeiramente modificada do system-config-network na forma do “network-admin“, um utilitário disponível no Debian e em outras distribuições baseadas nele. Ele pode ser instalado através do pacote “gnome-system-tools”:

index_html_51eb91bd

 index_html_6e13d9ea

Clicando nas propriedades de cada interface, dentro do network-admin, você cai no menu de configuração, onde pode definir os endereços ou ativar a configuração via DHCP. No caso de um micro com duas ou mais placas, como no caso de um notebook com uma placa cabeada e uma placa wireless, ou no caso de um servidor compartilhando a conexão, você precisa definir qual delas é a interface onde está a conexão com a Internet, através da opção “Dispositivo padrão de gateway”.

Mandriva

No Mandriva, as ferramentas de configuração estão agrupadas dentro do Mandriva Control Center, na seção “Rede e Internet”. Como você pode ver no screenshot a seguir, estão disponíveis opções para compartilhar a conexão (no caso de um PC com duas ou mais interfaces de rede), configurar uma VPN, utilizar um servidor proxy ou criar diferentes perfis de configuração. Temos também a opção “Definição de hosts”, que permite criar apelidos, assim como vimos nas outras ferramentas:

index_html_m66238c0

A opção “Configurar uma nova interface de rede” inclui um wizard para configurar diversos tipos de conexão, incluindo conexões discadas, conexões via celular (veja a seguir), ISDN e outras. Mas, para configurar uma rede local você pode ir direto na opção “Centro de Rede”, que permite configurar as interfaces disponíveis sem rodeios:

index_html_7308ea16

Clicando na opção “Configurar” você tem acesso à configuração da rede, como de praxe. Uma dica é que, ao configurar a rede via DHCP, você pode definir um timeout para o servidor DHCP dentro das opções avançadas. Isso evita que o sistema fique aguardando a resposta do servidor DHCP quando o cabo de rede estiver desconectado, o que retarda o boot. Em situações normais, a resposta do servidor DHCP demora poucos milessegundos, de forma que um timeout de 2 segundos é mais do que suficiente:

index_html_m351fdce1

A configuração de endereço IP, máscara, gateway e DNS vale tanto para redes cabeadas quanto para redes wireless. A diferença é que as redes wireless possuem alguns parâmetros adicionais, que são necessários para estabelecer a conexão com o ponto de acesso. Só depois que a conexão é estabelecida, passamos para a configuração dos endereços.

Acesso a redes Windows

Graças ao cliente Samba, é possível acessar compartilhamentos de rede em máquinas Windows também a partir das máquinas Linux da rede. É possível também compartilhar arquivos e impressoras (que ficam disponíveis tanto para as máquinas Windows, como também para outras máquinas Linux da rede) usando o servidor Samba.

No Ubuntu, você pode usar o módulo de acesso a compartilhamentos do Nautilus, disponível no menu “Locais > Rede” (no menu do topo da tela). Ao ser aberto, ele mostra os servidores e compartilhamentos disponíveis dentro do ícone “Rede Windows”:

 

 

 

 

 

index_html_30638314

Você pode também especificar compartilhamentos manualmente usando a opção “Locais > Conectar ao Servidor”. No menu seguinte, especifique o IP ou o nome do servidor, seguido do nome do compartilhamento que será acessado. A opção “Pasta” fica vazia e o login de acesso é especificado na opção “Nome do Usuário”. A opção “Nome do Domínio” é usada apenas caso o servidor a ser acessado tenha sido configurado para fazer parte de um domínio Windows, ou caso a rede utilize o Active Directory:

index_html_mdee98f5

Isso cria um ícone no desktop, que dá acesso aos arquivos do compartilhamento. Se o usuário e senha usados para acesso ao compartilhamento forem os mesmos que você usa para fazer login localmente, os arquivos são acessados diretamente, caso contrário é solicitada a senha.

index_html_m1e55a87c

Estas são na verdade funções do Nautilus (o gerenciador de arquivos do Gnome), que estão disponíveis também em outras distribuições, embora o acesso a elas possa ser feito de formas diferentes.

Outro programa muito usado é o “Smb4k“, que vem instalado por padrão em diversas distribuições baseadas no KDE. Ao ser aberto, ele mostra os grupos de trabalho disponíveis na rede e, dentro de cada um, os servidores e compartilhamentos. Ao clicar sobre um compartilhamento que exige autenticação, ele abre um prompt de login; e os compartilhamentos acessados aparecem no menu da direita. Clicando sobre eles você abre uma tela do gerenciador de arquivos:

index_html_7b0035a7

Os compartilhamentos acessados através do Smb4k são, na verdade, montados dentro da pasta “smb4k”, dentro do seu diretório home. Eles são organizados em uma estrutura de pastas, onde temos uma pasta separada para os compartilhamentos de cada servidor. Note que quando falo em “servidor” me refiro a qualquer máquina da rede que esteja compartilhando arquivos.

index_html_65e781ed

Em casos onde o Smb4k não consiga mostrar corretamente os compartilhamentos, ou a navegação fique instável, você pode indicar manualmente o endereço IP de uma máquina Windows, ou servidor Samba de onde ele obterá a lista dos compartilhamentos. Acesse o “Configurações > Configurar Smb4k > Rede” e indique o servidor na opção “Query a master browser to retrieve the browse list”.

Na opção “Compartilhamentos”, você pode marcar a opção “Remount recently used shares on program start”, que faz com que ele “lembre” dos compartilhamentos acessados e restaure o acesso a eles ao ativar o programa, mesmo depois de reiniciar a máquina.

index_html_m229768fb

Outra opção para acessar os compartilhamentos é usar o módulo “smb:/” do Konqueror. Abra uma janela do gerenciador de arquivos e digite “smb://servidor” (onde o “servidor” pode ser o endereço IP, ou o nome do servidor Windows ou Samba dentro da rede) para ver os compartilhamentos disponíveis. Você pode digitar também “smb://grupo” (onde “grupo” é o nome do grupo de trabalho) ou mesmo apenas “smb:/” (neste caso com uma única barra) para que ele tente mostrar toda a rede:

index_html_m28f9da76

Configurando a rede manualmente

Como vimos, existem diversas ferramentas gráficas de configuração da rede, que você pode usar de acordo com a distribuição. Mesmo assim, nenhuma ferramenta é à prova de falhas. Erros diversos podem ocorrer, lhe obrigando a corrigir o problema manualmente.

 

Além de ser um trunfo na hora de solucionar problemas, entender a configuração manual do sistema lhe dá uma flexibilidade muito maior na hora de criar configurações personalizadas ou pouco comuns, ou ainda na hora de configurar servidores dedicados, sem ambiente gráfico.

O utilitário básico para configurar a rede é o ifconfig. Ele suporta um grande número de opções, mas o comando básico para ativar a rede é:

# ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up

Este comando configura o endereço IP e a máscara de sub-rede para a interface especificada (a “eth0” no exemplo) e o “up” serve para ativar a interface, caso ela esteja inativa.

No Linux, as placas Ethernet cabeadas recebem nomes como “eth0” (primeira placa), “eth1” (segunda placa), “eth2” (terceira placa) e assim por diante. No caso das placas wireless, o nome muda de acordo com o modelo e com o driver usado. Placas configuradas através do ndiswrapper são identificadas como “wlan0”, placas com chipset Ralink como “ra0” e placas com chipset Intel como “eth1”, da mesma forma que uma placa cabeada. Em caso de dúvida, você pode verificar como as placas de rede foram detectadas pelo sistema usando os comandos:

# cat /proc/net/dev


(mostra todas as interfaces)

# cat /proc/net/wireless


(mostra apenas as placas wireless)

Além das interfaces de rede, o comando “cat /proc/net/dev” mostra também interfaces virtuais, como a lo (a interface de loopback) e a sit0, que é uma interface virtual, usada pelo protocolo IPV6 para encapsular pacotes IPV4 quando necessário. Se você usa o VMware, a lista incluirá também a interface vmnet8, que é usada para permitir que as máquinas virtuais acessem a rede. Veja um exemplo da saída dos dois comandos:

index_html_5d7b017c

 

index_html_dac0079

Através do “cat /proc/net/dev”, posso ver que o PC usado nos screenshots possui três interfaces de rede (eth0, eth1 e a ppp0) e, através do “cat /proc/net/wireless” vejo que a interface eth1 é uma placa wireless. Não seria difícil deduzir então que a placa eth0 é a placa cabeada, a eth1 é a placa wireless e a ppp0 é um modem discado, ou uma conexão via celular.

Depois de identificadas as interfaces, o passo seguinte é definir a rota padrão, ou seja, o gateway da rede e a interface que será usada para contatá-lo. Por segurança, rodamos primeiro o comando “route del default”, que desativa qualquer configuração anterior:

# route del default
# route add default gw 192.168.1.1 dev eth0

… onde o “192.168.0.1” é o gateway da rede e a “eth0” é a placa conectada a ele. Estes mesmos dois comandos resolvem casos em que o micro tem duas placas de rede (ou uma placa de rede e um modem) e o sistema tenta acessar a Internet usando a interface errada.

Em caso de redes com mais de um gateway (caso você tenha uma conexão via ADSL e também uma conexão via cabo, por exemplo), estes mesmos comandos podem ser usados para mudar a conexão que está sendo usada. Se o segundo gateway da rede é o “192.168.1.254”, por exemplo, você poderia mudar a configuração para que ele seja utilizado no lugar no “192.168.1.1” usando os comandos:

# route del default
# route add default gw 192.168.1.254 dev eth0

É possível também fazer com que o segundo roteador seja usado apenas para um endereço específico, o que é útil na hora de fazer grandes downloads. Você pode usar a segunda conexão para baixar o arquivo, deixando a conexão principal livre. Para isso, copie o endereço do arquivo e selecione apenas o endereço ou domínio do servidor, como em “linorg.usp.br”, ignorando a estrutura de pastas até o arquivo.

Use em seguida o comando “route add host”, especificando o servidor, o gateway e a interface de rede que serão usadas para acessá-lo, como em:

# route add -host linorg.usp.br gw 192.168.1.1 dev eth0

Com isso, os downloads feitos a partir do servidor especificado serão feitos usando o gateway “192.168.1.1” e todos os demais acessos continuarão sendo feitos através do “192.168.1.254”. Com o preço dos planos de acesso caindo como estão, pode valer à pena ter uma segunda conexão para baixar arquivos e usar como backup.

Para checar as rotas definidas, use o comando “netstat -rn” e, para remover uma rota definida manualmente (de forma que o servidor volte a ser acessado usando a rota padrão), use o comando “route del -host”, seguido pelo endereço, como em:

# route del -host linorg.usp.br

Depois de definir o IP, máscara e o gateway, falta também indicar os servidores de DNS, o que é feito no arquivo “/etc/resolv.conf“. Nele você indica os servidores DNS que serão usados, um por linha, como em:

nameserver 208.67.222.222
nameserver 208.67.220.220

A falta dos endereços no “/etc/resolv.conf” é, provavelmente, a causa mais comum de problemas com a navegação. Na dúvida, você pode utilizar qualquer servidor de DNS público, como os endereços do opendns.com que usei no exemplo anterior.

Para checar a configuração rapidamente em caso de problemas e assim verificar o que está errado, você pode usar os comandos:

# ifconfig
# route
# cat /etc/resolv.conf

Outro arquivo que vale à pena citar é o “/etc/hosts“, onde você pode definir apelidos para hosts que deseja acessar. Os apelidos podem ser usados para agilizar o acesso a micros que você acessa com frequência, ou serem usados para atribuir nomes aos micros da rede local, sem para isso precisar configurar um servidor DNS.

Originalmente ele contém uma declaração para a interface de loopback, que relaciona o endereço “127.0.0.1” com os nomes “localhost” e com o nome da máquina:

127.0.0.1 lenny localhost

Imagine, por exemplo, que você administra o “servidor.minhaempresa.com”. Sempre que precisa acessá-lo você precisa digitar “ssh servidor.minhaempresa.com”, o que é tedioso. Você poderia simplificar as coisas adicionando uma entrada como esta no /etc/hosts:

servidor.minhaempresa.com servidor

A partir daí, você poderia acessá-lo apenas digitando “ssh servidor”. Também funciona ao especificar o endereço IP diretamente, como em:

200.234.32.21 servidor

Para dar nomes aos micros da rede local, você criaria uma lista, como em:

192.168.1.1 gateway
192.168.1.40 etch
192.168.1.31 sarge
192.168.1.30 woody

O grande problema em usar o /etc/hosts para dar nomes aos micros da rede local, no lugar de um servidor DNS, é que você precisa replicar a lista (e mantê-la atualizada) em todos os micros. Funciona em redes pequenas, com 3 ou 5 micros, mas para redes maiores um servidor DNS local acaba sendo uma opção muito mais saudável.

Além de ser declarado no arquivo /etc/hosts, o nome da máquina é configurado no arquivo “/etc/hostname“. Este arquivo contém uma única linha, contendo o nome da máquina, como em:

 

lenny

Este arquivo é lido durante o boot pelo script “/etc/init.d/hostname.sh”, que se encarrega de atribuir o nome especificado no arquivo.

Configurando via DHCP

Configurar a rede via DHCP é bastante simples. Desde que exista um servidor DHCP na rede, a estação recebe os endereços automaticamente e você não precisa esquentar a cabeça.

No Linux, existem dois clientes dhcp. O mais usado é o “dhclient“, disponível na maioria das distribuições. O comando para configurar uma placa via DHCP manualmente através dele é:

# dhclient eth0

(onde o eth0 é a interface a ser configurada)

Ao usá-lo via terminal, ele mostra todos os passos da negociação, incluindo o endereço do servidor DHCP da rede e o IP recebido, como em:

Listening on LPF/eth0/00:0f:b0:55:df:17
Sending on LPF/eth0/00:0f:b0:55:df:17
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 10.67.3.2
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.67.3.2
bound to 201.56.188.45 — renewal in 5585 seconds.

Existe ainda o “pump“, um cliente mais simples, que ainda pode ser encontrado em algumas instalações. Para configurar a rede através dele, use o comando:

# pump -i eth0

Ao contrário do dhclient, ele não exibe a negociação, limitando-se a exibir uma mensagem de erro em caso de problemas.

Ao acessar via cabo, a configuração da rede é obtida automaticamente via DHCP, com o cable-modem cuidando de toda a modulação do sinal. Ao contrário do ADSL, não é usada autenticação, mas em compensação sua conta é relacionada ao endereço MAC da placa de rede do micro onde foi configurado o acesso. Se você tentar acessar a partir de outro micro, ou trocar de placa de rede, não conseguirá acessar, a menos que ligue para a central e peça que alterem o endereço cadastrado.

Uma solução mais rápida é simplesmente trocar o endereço MAC da nova placa de rede, de forma que ela utilize o endereço cadastrado. Isso pode ser feito de forma muito simples utilizando o comando ifconfig.

Comece desativando a placa de rede, como em:

# ifconfig eth0 down

Use em seguida os parâmetros “hw ether”, seguidos pelo endereço MAC desejado, para trocar o endereço físico da placa:

# ifconfig eth0 hw ether 00:0F:B2:52:45:E3

Execute novamente o “dhclient eth0” e você verá que o micro volta a receber a resposta do servidor DHCP, mesmo com a placa diferente🙂. Esta dica pode ser usada também em casos onde você quer acessar acessar (em horários alternados) a partir de dois micros, desde que não ao mesmo tempo.

Outra peculiaridade do acesso via cabo é que você não consegue obter uma nova resposta do servidor DHCP até que a primeira conexão seja encerrada (o timeout varia de 90 a 180 minutos, de acordo com a operadora). Isto causa problemas quando você tem Linux e Windows em dual-boot, pois é preciso esperar até três horas ao trocar de sistema, até que vença o leasing do endereço no servidor DHCP e você possa obter outro IP.

A solução neste caso é liberar o IP antes de reiniciar, usando o parâmetro “-r” disponível tanto no dhclient, quanto no pump. Ele avisa ao servidor DHCP que a conexão está sendo encerrada, permitindo que você consiga configurar a rede novamente depois de reiniciar no Windows. Para isso use:

# dhclient -r eth0


ou:

# pump -r

(nesse caso sem especificar a interface)

Arquivos de configuração

Uma forma simples de salvar a configuração da rede seria criar um mini-script com os comandos usados e adicioná-lo no arquivo “/etc/rc.local” ou outro arquivo de configuração, como em:

ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
route del default
route add default gw 192.168.1.1 dev eth0
echo ‘nameserver 208.67.222.222
nameserver 208.67.220.220’ > /etc/resolv.conf

Como o arquivo “/etc/rc.local” é processado no final do boot, depois dos serviços que carregam a configuração da rede, sua configuração seria usada mesmo que a rede tivesse sido configurada usando outro utilitário. Mas, naturalmente, esta não seria a forma mais elegante de salvar a configuração da rede.

Assim como outras configurações do sistema, a configuração da rede é salva em arquivos de configuração, que são lidos pelos serviços responsáveis por ativar a rede. A maioria dos utilitários de configuração nada mais são do que interfaces para a edição desses arquivos.

Nas distribuições derivadas do Debian, incluindo o Ubuntu e o Kubuntu, a configuração da rede é salva no arquivo “/etc/network/interfaces“. Um exemplo de arquivo configurado é:

# /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

O arquivo é dividido em duas partes. A linha “auto …” lista as interfaces que devem ser ativadas automaticamente e as demais contém a configuração de cada uma. Para configurar uma nova placa de rede, você adicionaria a configuração relacionada a ela no final do arquivo e a adicionaria na linha “auto”, como em “auto lo eth0 eth1”. Se, por outro lado, você quiser desativar uma interface, precisa apenas removê-la da linha auto, não é preciso remover as demais linhas.

A interface “lo” é a interface de loopback, usada para a comunicação local entre diversos aplicativos e componentes do sistema, por isso nunca deve ser desativada. Embora o uso da interface de loopback pareça ser uma exclusividade do Linux, ela é usada também no Windows; a única diferença é que no Windows ela não aparece na configuração.

Em seguida temos a configuração de cada interface, que vai em uma seção separada. No caso da interface lo é usada uma única linha, “iface lo inet loopback”, usada em qualquer instalação, seguida pelas demais interfaces.

Como você pode ver, as últimas 5 linhas na configuração da placa eth0 especificam o IP utilizado pelo PC e o restante da configuração da rede, com exceção dos endereços dos servidores DNS, que vão no arquivo “/etc/resolv.conf”.

Se você quisesse que a interface fosse configurada via DHCP, poderia substituir as 6 linhas referentes a ela por:

iface eth0 inet dhcp

Ao configurar um servidor com duas placas de rede, onde a eth0 está ligada à rede local e a eth1 ao cable modem (obtendo o endereço via DHCP), por exemplo, o arquivo ficaria:

# /etc/network/interfaces
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
iface eth1 inet dhcp

Veja que nesse caso a configuração da interface eth0 não inclui o gateway, pois é a eth1 que será usada para acessar a web.

Depois de editar o arquivo, você pode aplicar as alterações reiniciando o serviço relacionado a ele:

# /etc/init.d/networking restart

Um problema comum que afeta versões do Debian, Ubuntu e distribuições baseadas neles é as interfaces mudarem de endereço a cada reset em micros com duas ou mais interfaces de rede. A placa eth0 passa então a ser a ath1 e assim por diante, o pode ser uma grande dor de cabeça ao configurar um servidor para compartilhar a conexão, já que se as duas interfaces mudam de posição, nada funciona.

A solução para o problema é um pequeno utilitário chamado “ifrename”, que permite fixar os devices utilizados para as placas. Utilizá-lo é bem simples. Comece instalando o pacote via apt-get:

# apt-get install ifrename

Crie o arquivo “/etc/iftab” e, dentro dele, relacione o device de cada interface com o endereço MAC correspondente, seguindo o modelo abaixo:

 

#/etc/iftab
eth0 mac 00:11:D8:76:59:2E
eth1 mac 00:E0:7D:9B:F8:01

Em caso de dúvida, use o comando “ifconfig -a” para ver a configuração atual das placas e o endereço MAC de cada uma. Uma vez criado, o arquivo é verificado a cada boot e a configuração se torna persistente, resolvendo o problema. Este bug das interfaces itinerantes afeta apenas algumas distribuições, por isso você não precisa se preocupar com ele até que perceba que está usando uma das afetadas.

No Fedora e outras distribuições derivadas do Red Hat, a configuração de rede é dividida em uma série de arquivos, localizados na pasta “/etc/sysconfig/network/network-scripts/“. Dentro da pasta, você encontrará um arquivo separado para a configuração de cada interface disponível. A configuração da placa eth0 é armazenada no arquivo “ifcfg-eth0“, o da eth1 no “ifcfg-eth1” e assim por diante.

Um exemplo de configuração para uso de IP fixo é:

 

#/etc/sysconfig/network/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.1.43
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BOOTPROTO=static
ONBOOT=yes

A opção “ONBOOT” indica se a placa deve ser ativada automaticamente durante o boot. Ao desativar essa opção, a interface fica desativada por padrão, até ser carregada manualmente. Continuando, aqui vai um exemplo de configuração para DHCP:

 

#/etc/sysconfig/network/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

Lembre-se que cada arquivo armazena a configuração de uma interface específica (a configuração da interface de loopback, por exemplo, vai no arquivo ifcfg-lo), diferente do Debian, onde é usado um único arquivo com uma seção separada para cada interface. Temos também o arquivo “/etc/sysconfig/network“, que armazena o nome da máquina.

Para que as alterações entrem em vigor, é necessário reiniciar o serviço responsável pela configuração da rede, o que no Fedora é feito usando o comando:

# /etc/rc.d/init.d/network restart

Concluindo, tanto no Fedora quanto no Debian, Ubuntu e outros, você pode desativar temporariamente uma interface configurada usando o comando “ifdown”, como em:

# ifdown eth0

Para reativá-la posteriormente, use o comando ifup:

# ifup eth0

Assim como no caso das alterações feitas através do ifconfig, desativar a interface usando o ifdown não é permanente: a interface volta a ser ativada ao reiniciar o micro. Se você quiser desativar a interface de forma definitiva, precisa fazer a alteração diretamente no arquivo de configuração.

Usando um DNS local

A Internet como a conhecemos funciona em grande parte graças aos servidores DNS, que convertem nomes de domínio nos endereços IP correspondentes. Sem eles, a web seria muito menos amigável, já que você teria que manter longas listas com os endereços IP dos sites e servidores que precisa acessar. Sem o DNS, a web talvez nem tivesse se popularizado tão rápido em primeiro lugar.

Toda esta dependência traz um inconveniente, que é o fato de que você fica virtualmente desconectado quando os servidores DNS do provedor saem fora do ar. Obviamente, você ainda continua conectado e pode acessar qualquer servidor através do endereço IP, mas você por acaso sabe algum de cor?

Infelizmente os problemas relacionados aos servidores DNS dos provedores de acesso são extremamente comuns. Muitas vezes mudam os endereços sem aviso, em outras o servidor DHCP (do provedor) é configurado incorretamente e fornece endereços errados quando você se conecta, sem falar nos casos em que os servidores simplesmente ficam inacessíveis, sem motivo aparente.

Diz o bom senso que o provedor deveria manter dois servidores DNS em redes separadas, para manter a redundância, mas o fato é que, em muitos provedores, é usado um único servidor, com um simples alias para a placa de rede, que “simula” a existência de um segundo servidor DNS. Desta forma, temos uma única máquina, de forma que quando o servidor cai, você perde simultaneamente tanto o DNS primário quanto o secundário.

Para fugir desta calamidade, você pode passar a usar um servidor DNS local. No Linux você precisa apenas instalar o pacote “bind” ou “named”, usando o gerenciador de pacotes da sua distribuição. Nas derivadas do Debian, você pode usar o apt-get, como em

# apt-get install bind

O Bind pode ser bastante indigesto de configurar, mas no nosso caso não é necessário alterar a configuração padrão, já que queremos apenas acessar a web e não configurá-lo para responder por nenhum domínio registrado; basta manter o serviço ativo.

É recomendável que você mantenha a porta 53 (tanto TCP quanto UDP) bloqueada no firewall, de forma que não consigam usar seu DNS de fora. Deixar o DNS disponível para o mundo não chega a ser uma brecha terrivelmente grave, mas existe a possibilidade de alguém mal intencionado utilizar seu servidor para enviar um grande número de requisições para outra máquina, como parte de um ataque DoS.

Finalizando, abra agora o arquivo “/etc/resolv.conf” e inclua a linha “nameserver 127.0.0.1” antes das outras entradas, como em:

nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220

Isto faz com que o sistema passe a usar seu servidor DNS local ao invés dos endereços DNS do provedor.

Uma segunda opção é usar o Dnsmasq, um servidor DNS minimalista, que simplesmente cria um cache dos endereços já acessados, evitando usar o DNS do provedor a cada acesso. Ele é uma opção em casos onde os servidores DNS do provedor são estáveis, mas a velocidade do acesso não é das melhores. Um DNS lento faz com que você perca vários segundos no “procurando pelo servidor” ao acessar cada site.

Instalar o Dnsmasq é igualmente simples, basta procurar pelo pacote no gerenciador da distribuição usada. Ao instalar via apt-get, use:

# apt-get install dnsmasq

A principal observação é que você não pode usar o Dnsmasq junto com o Bind, já que ambos escutam na mesma porta. Antes de instalar o Dnsmasq você deve desativar e remover o Bind e vice-versa.

Depois de instalar, adicione a linha abaixo no final do arquivo “/etc/dnsmasq.conf“:

 

listen-address=127.0.0.1

Ela faz com que o Dnsmasq responda apenas a requisições da sua própria máquina, ignorando requisições externas, provenientes de outros micros da rede ou da Internet.

Mantenha o arquivo “/etc/resolv.conf” configurado como vimos a pouco, contendo a linha “nameserver 127.0.0.1” (seguida pelos endereços DNS do provedor), o que faz com que o sistema utilize o Dnsmasq como servidor preferencial.

Tente acessar um site qualquer. Você perceberá que o primeiro acesso continuará demorando o tempo normal, mas a partir do segundo o endereço estará no cache do Dnsmasq e a resolução será instantânea.

Se o seu micro usa DHCP para obter a configuração da rede, o arquivo “/etc/resolv.conf” será modificado a cada acesso, voltando à configuração original, fornecida pelo servidor. Ao invés de ter que modificar o arquivo novamente, a cada acesso, adicione a linha abaixo no começo (começo, não final) do arquivo “/etc/dhcp3/dhclient.conf“, onde vai a configuração do cliente DHCP:

prepend domain-name-servers 127.0.0.1;

Esta linha faz com que ele sempre adicione a linha “nameserver 127.0.0.1” no início do arquivo “/etc/resolv.conf”, substituindo a edição manual.

 Fonte

 

 

 

 

 

 

comentários
  1. Marcelo Antonio Pacífico Cavalcanti disse:

    Parabéns, um ótimo tutorial, que ensina o caminho das pedras para configuração de uma rede no Linux, em algumas distribuições, bem como o modo de fazê-la para todas.

  2. Alê disse:

    Parabéns pelo tutorial, sanou uma dúvida q eu tinha em relação “ao resolv.conf”

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s