Configurando rede no GNU/Linux

Desde que foi criado, o Linux é um sistema de rede… E mesmo que na sua casa tenha somente seu computador e você não esteja conectado à Internet, seu Linux continua sendo um sistema de rede.

Atualmente as distros trazem o Network Manager, que já ajuda o usuário a configurar a rede rapidamente. Mas, se você é um administrador de sistemas, não irá trabalhar com uma interface gráfica o tempo todo; assim, é importante conhecer os comandos e arquivos de configuração de rede.

Antes de falar sobre os arquivos de configuração, vou falar sobre as interfaces de rede, que são os dispositivos que irão formatar os pacotes e repassá-los através de cabo de rede, wireless, fibra ótica, etc.

Todos computadores que utilizam o protocolo TCP/IP, possuem uma interface de rede lógica, chamada loopback que responde no endereço 127.0.0.1. A interface loopback (lo), faz com que o sistema converse com ele mesmo. É o que chamo de “máquina bater papo com seu eu interior”.

Isso é bacana porque, se você quer criar um servidor DNS (servidor de resolução de nomes), um servidor de e-mail ou de FTP, poderá fazê-lo mesmo que não esteja em uma rede com muitos computadores; ou, caso esteja em uma rede, pode testar os serviços localmente.

Além da interface de loopback, também configuramos a placa de rede – no linux ela é identificada pelo dispositivo ethX, onde X é o número do dispositivo. Por exemplo, eth0 é o primeiro dispositivo de rede existente no computador.

Para configurar a placa de rede, é necessário que o módulo esteja no ar. Eu já falei em outro post, como configurar o módulo da placa de rede… para relembrar, clique aqui. Com o módulo no ar, podemos designar um IP para a placa; para isso usamos o comando ifconfig. Por exemplo:

#ifconfig eth0 192.168.0.10

Onde:

eth0 – Device da placa de rede, ou seja a interface de rede.

192.168.0.10 – É o endereço que estou designando para essa interface.

Essa forma de configuração de rede é temporária; caso reinicie a máquina, a configuração será perdida… é uma configuração básica quando você precisa testar por exemplo, saber se a placa está OK, se designar um IP ela vai conseguir conexão na rede, etc.

Para a configuração da rede ficar definitiva no sistema, devemos editar os seguintes arquivos:

/etc/hostname – Nome da máquina
/etc/hosts – Resolução de nomes locais
/etc/network/interfaces – Informação sobre IP

Os arquivos acima, são para configuração em distribuições Debian e suas variantes! Em sistemas Red Hat e suas variantes, os arquivos são:

/etc/sysconfig/network – Nome da máquina e informações da rede
/etc/hosts – Resolução de nomes
/etc/syscofig/network-scripts/ifcfg-ethX – Informação sobre IP

No caso de Red Hat e suas variantes, para cada placa instalada no computador, existe um arquivo de configuração… por isso o “X” na linha /etc/syscofig/network-scripts/ifcfg-ethX.

E no Slackware:

/etc/HOSTNAME – Nome da máquina e informações da rede
/etc/hosts – Resolução de nomes
/etc/networks/etc/rc.d/rc.inet1 – Informação sobre IP

Bem, nos meus posts, sempre falo em Debian, que é a distribuição que uso… então, aqui vou falar sobre a configuração em ambientes Debian.

O primeiro arquivo que editamos é o /etc/hostname. Esse arquivo é utilizado para definir o nome da nossa máquina:

# echo “nixi” > /etc/hostname

Acima, apenas inseri o nome da minha máquina (nixi) no arquivo hostname. Só que as configurações do nome, só estarão disponíveis quando eu reiniciar a máquina. Para usar o nome sem a necessidade de reiniciar, basta fazer:

# hostname nixi

E aí já estarei usando o novo nome. Ahn, o comando acima, além de definir um nome prá máquina, também pode ser usado para mostrar o nome da máquina… para isso, basta digitar:

# hostname
nixi

O segundo arquivo, é o /etc/hosts… ele serve para resolver o nome da máquina pelo IP dela. É como se fosse um servidor DNS, só que é local, isto é, somente para a minha máquina! Esse arquivo tem a seguinte estrutura:

# cat /etc/hosts
127.0.0.1       localhost.localdomain   localhost

Onde:
127.0.0.1 – IP da máquina

localhost.localdomainFQDNFully Qualified Domain Name – é o nome completo da máquina; isto é, o nome (localhost) e o domínio (localdomain)

localhost – nome da máquina

A utilidade desse arquivo? Bem, imagine que você queira acessar algumas máquinas e não quer ficar digitando o IP delas! Se você não tem DNS, pode colocar o nome e o IP das máquinas que deseja acessar nesse arquivo. Por exemplo, se quiser fazer ping para a máquina asmith, ao invés de digitar o IP dela, poderia incluir a seguinte linha no arquivo /etc/hosts:

192.168.0.150    asmith.nixi.com.br    asmith

Quando for fazer o ping, ao invés de digitar o IP, posso fazer:

# ping asmith
PING asmith.nixi.com.br (192.168.0.150) 56(84) bytes of data.
64 bytes from asmith.nixi.com.br (192.168.0.150): icmp_seq=1 ttl=64 time=0.156 ms
64 bytes from asmith.nixi.com.br (192.168.0.150): icmp_seq=2 ttl=64 time=0.122 ms
64 bytes from asmith.nixi.com.br (192.168.0.150): icmp_seq=3 ttl=64 time=0.044 ms

Lembrando que essa é uma configuração local! Então, se quiser que outras máquinas resolvam os nomes, tem que configurar nelas também… mas se for pensar em configurar muuuuuitas máquinas, é melhor ter um DNS (assunto para um futuro post!) e deixar o /etc/hosts resolver somente o nome da nossa máquina. No caso, da minha máquina local, o arquivo ficou assim:

# cat /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   nixi.org.br        nixi

O próximo arquivo a ser configurado é o /etc/network/interfaces, responsável por armazenar as configurações de IP de todas as placas de rede. Em distribuições Red Hat e variantes, cada placa tem seu arquivo específico; no Debian, as configurações de todas interfaces são feitas em um único arquivo. Abaixo, exemplo de configuração para IP fixo; isto é, toda vez que a máquina iniciar, sempre irá usar esse IP:

auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Onde:
auto eth0 – Indica que a interface será inicializada no boot. Caso não defina essa linha, mesmo que o serviço de rede esteja iniciado, as configurações dessa interface não serão carregadas.

iface eth0 inet static – Indica se a interface terá IP fixo ou não. Aqui, estamos falando que a interface eth0 terá IP fixo.

address– Endereço IP

netmask – Máscara de rede

network – Endereço da rede

broadcast – IP que varre a rede inteira para determinar quais IP’s estão ativos

gateway – IP da máquina que fará a saída dos pacotes para Internet

Essa configuração é usada quando a máquina tem um IP fixo! Caso a máquina seja um cliente de DHCP; isto é, quando existe um servidor que distribui os IP’s para as máquinas que estão na rede, a configuração desse arquivo fica assim:

auto eth0
iface eth0 inet dhcp

Fica uma configuração simples… porque o servidor DHCP será o responsável por configurar o IP, máscara, rede, broadcast, gateway e resolução DNS para o cliente!

Após configurar o arquivo, para que as alterações sejam realizadas, devemos parar e iniciar o serviço de rede:

# /etc/init.d/networking stop
# /etc/init.d/networking start

Para checar as novas configurações da placa de rede:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:47:ba:19
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe47:ba19/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:47639 errors:0 dropped:0 overruns:0 frame:0
TX packets:33167 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:65097967 (62.0 MiB)  TX bytes:2828496 (2.6 MiB)
Interrupt:19 Base address:0x2000

Ainda falando sobre o arquivo /etc/network/interfaces, lá existe a linha gateway. Para uma máquina ser capaz de encontrar outra através de uma rede, é necessário que ela saiba como ir de uma rede para outra. O ‘caminho’ que permite uma máquina de uma rede se comunicar com outra de rede diferente, se chama roteamento.

Uma rota, é um par de endereços composto por destino e gateway e indica que, se você estiver tentando alcançar este destino, deve se comunicar através desse gateway. A famosa ‘rota default’, é a rota utilizada por um roteador quando não há nenhuma outra rota conhecida existente para o endereço de destino de um pacote. E todos os pacotes para destinos desconhecidos pela tabela do roteador são enviados para o endereço de rota padrão.

O comando para visualizar a tabela de rotas é o route:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

Vejam que a última linha indica o IP 192.168.0.1, que é justamente o IP que foi configurado na linha gateway do arquivo /etc/network/interfaces. A opção -n no comando, é para mostrar em formato numérico, isto é, o comando não tentará resolver os IP’s para nomes.

O comando route também é usado para criar uma rota manualmente, seja por motivo de não ter adicionado a linha gateway no arquivo, ou até mesmo por querer utilizar uma outra rota. Para isso, executa-se o comando abaixo:

# route add default gw 192.168.0.1

Onde:

add – para adicionar a rota

default gw 192.168.0.1 – indica que está configurando a rota default com o IP 192.168.0.1

Esse comando faz a mesma coisa que a linha gateway indicada no arquivo /etc/network/interfaces. A diferença é que essa configuração é perdida caso a máquina reinicie, enquanto no arquivo é uma configuração definitiva.

Outras formas ver a tabela de rotas:

# cat /proc/net/route

# netstat -nr

E, para finalizar essa parte da configuração de rede, tem mais um arquivo que editamos quando configuramos rede no Linux. É o arquivo /etc/resolv.conf; responsável por buscar o servidor DNS para resolver nomes na rede.

O DNS foi criado com o objetivo de tornar as coisas mais fáceis para o usuário, permitindo assim, a identificação de computadores na Internet ou redes locais através de nomes (é como se tivéssemos apenas que decorar o nome da pessoa ao invés de um número de telefone). A parte responsável por traduzir os nomes como http://www.wordpress.com em um endereço IP é chamada de resolvedor de nomes.

Então, é no arquivo /etc/resolv.conf que indicamos o nome de domínio DNS da nossa rede, e qual o servidor DNS irá resolver as consultas de nomes.

Exemplo de um arquivo resolv.conf:

search nixi.org.br
nameserver 4.2.2.2

Onde:

search – Lista de pesquisa para a procura do nome de servidor; normalmente é determinado pelo domínio do servidor local.

nameserver – Endereço IP do servidor de nomes que o resolvedor deve pesquisar; são utilizados na ordem em que estão listados.

É importante observar que, se for um cliente dhcp, o resolv.conf será sobrescrito com a informação recebida do servidor DHCP.

Abordei no post a configuração em sistemas Debian; apesar de não utilizar sistemas Slackware ou Red Hat, segue links que irão ajudar na configuração de rede nessas duas distros:

SlackwareConfiguration Help

Red Hat e derivadosHowto Red hat enterprise Linux 5 configure the network card

Referências:
Manual Completo do Linux – Guia do Administrador
Evi Nemeth et al, Pearson Books

Capítulo 15 – Rede

Bem, é isso… até o próximo post!🙂

1 Response to “Configurando rede no GNU/Linux”


  1. 1 unix 19/02/2016 às 2:03 AM

    I am truly happy to read this website posts which includes lots of useful
    information, thanks for providing these information.


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




Follow Nix on WordPress.com
novembro 2010
S T Q Q S S D
« out   dez »
1234567
891011121314
15161718192021
22232425262728
2930  

Flickr Photos

Red and Gold

Mais fotos

%d blogueiros gostam disto: