4 Coisas a considerar na configuração de uma interface de rede no linux

Olá! tive recentemente alguns problemas com um cartão de rede. Isso fez-me perceber que seria uma boa ideia carregar um artigo sobre o assunto. Hoje vou mostrar 4 pontos a ter em conta na configuração de uma interface de rede em linux.

Por favor, se gostar deste tipo de conteúdo, partilhe-o nas suas redes sociais e/ou faça comentários.

Vamos começar!

1. não temos rede no sistema

Como regra geral, executar ip a show ou ip a deve exibir a lista de interfaces (em distribuições mais antigas isto é feito com o ifconfig):

3 puntos a tener en cuenta al configurar un interfaz de red en linux

Se tudo correr bem e simplesmente não tivermos o IP configurado, podemos configurá-lo da seguinte forma (esta forma de o configurar só funcionará enquanto não reiniciarmos o serviço de rede e reiniciarmos o sistema):

Com ip a a xxx.xxx.xxx.xxx.xxx.xxx.xxx/mask dev ethX adicionamos um novo IP à interface de rede, é importante definir correctamente a máscara IP porque se nenhuma for especificada adiciona um /32 por defeito e não seremos capazes de configurar as rotas.

ip a a

Como se pode ver na imagem, devemos também adicionar a rota padrão para que utilizemos a gateway correcta, neste caso 192.168.1.1. É um bom hábito fazer dois pings antes de configurar um IP, um ping para outro IP na rede e outro ping para a Internet (se for um dispositivo que deve ter uma ligação à Internet). A rota padrão pode ser adicionada com ip route a default via IP_GATEWAY dev ethX como mostrado na imagem.

 

2. Configurámos a interface e ainda não temos rede.

falta_dns

Como se pode ver na imagem, ainda não conseguimos resolver nomes. Temos de ter cuidado porque em muitos casos podemos acreditar que não temos uma rede e simplesmente não somos capazes de resolver nomes. Para sair da dúvida com um simples ping para um ip público como o 8.8.8.8.8, seríamos capazes de saber se vamos ou não realmente sair para a Internet.

Neste caso, como já fizemos anteriormente, vamos configurar o servidor DNS que vamos utilizar e vamos repetir a operação:

configurar DNS

Uma vez configurado o DNS, tudo está a funcionar correctamente.

3. Hemos tenido red configurada pero al hacer algún cambio no funciona

Quando se clona uma máquina virtual ou se muda um cartão de rede (mesmo que se substitua pelo mesmo modelo), a rede pode não funcionar correctamente. Isto pode ser devido a termos armazenado o mac do dispositivo no ficheiro 70-persistent-net.rules (/etc/udev/rules.d/70-persistent-net.rules) relacionado com o dispositivo para o qual temos a configuração.

O principal sintoma disto é que ao executar ip a verá a interface com um nome diferente. Por exemplo, se tiver apenas um cartão de rede e o cartão deve ser chamado eth0, ele será chamado eth1:

Para corrigir isto, basta apagar o ficheiro /etc/udev/rules.d/70-persistent-net.rules ou pode editar o ficheiro e apagar a linha que “incomoda”, por exemplo, este é um exemplo de “eth0”.

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:26:b9:82:21:7a”, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

Recomendo que se apague o ficheiro. Depois basta reiniciar o sistema e a rede deve funcionar correctamente se a rede estiver configurada correctamente e as interfaces forem chamadas como devem ser.

4. Quando não aparecem interfaces com o ip a

É possível que, ao tentar configurar a rede de um sistema, descubramos que com ip a não estamos a reconhecer a interface para configurar este é um indicador de que é possível que não tenhamos o módulo kernel para esta placa de rede, este módulo kernel seria o equivalente a um driver windows (este esclarecimento vai para os recém-chegados ao windows).

Para verificar se isto acontece, podemos executar ls /sys/class/net como se mostra abaixo:

ger@portatil:~$ ls -al /sys/class/net/
total 0
drwxr-xr-x  2 root root 0 nov 18 21:52 .
drwxr-xr-x 67 root root 0 nov 18 21:52 ..
lrwxrwxrwx  1 root root 0 nov 18 21:52 docker0 -> ../../devices/virtual/net/docker0
lrwxrwxrwx  1 root root 0 nov 18 21:52 enp1s0f0 -> ../../devices/pci0000:00/0000:00:02.2/0000:01:00.0/net/enp1s0f0
lrwxrwxrwx  1 root root 0 nov 18 21:52 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx  1 root root 0 nov 18 21:52 tun0 -> ../../devices/virtual/net/tun0
lrwxrwxrwx  1 root root 0 nov 18 21:52 veth019ec36 -> ../../devices/virtual/net/veth019ec36
lrwxrwxrwx  1 root root 0 nov 18 21:52 wlp5s0 -> ../../devices/pci0000:00/0000:00:02.3/0000:05:00.0/net/wlp5s0

Com este comando, devemos ver todas as interfaces que o sistema tem. Se não virmos nenhum, o passo seguinte é verificar se vemos o dispositivo com lspci ou lsusb, dependendo se o dispositivo é USB ou PCI:

ger@portatil:~$ lspci|grep -i net
01:00.0 Ethernet controller: Qualcomm Atheros QCA8171 Gigabit Ethernet (rev 13)
05:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
ger@portatil:~$ lsusb|grep -i net
ger@portatil:~$ 

Se o dispositivo aparecer na lista de dispositivos reconhecidos mas não aparecer ao executar ip a ou ao executar ls /sys/classes/net, verificar se os módulos do kernel correspondem ao kernel carregado:

[root@localhost ~]# ls -al /lib/modules/
total 8
drwxr-xr-x.  3 root root   35 nov 18 21:36 .
dr-xr-xr-x. 27 root root 4096 oct 19 20:38 ..
drwxr-xr-x.  7 root root 4096 oct 19 20:41 3.10.0-862.el7.x86_64
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# 

Se os módulos do kernel faltassem, teríamos de os obter (por vezes basta copiar o directório de outra versão do kernel para o kernel actual funciona bem). Neste caso tudo está bem, por isso devemos instalar o módulo de kernel em falta para a interface PCI ou USB. Normalmente este módulo pode ser descarregado a partir do website do fabricante.

Tudo isto tem sido sobre os 4 pontos a ter em conta ao configurar uma interface de rede no linux, se gostou do artigo agradecemos que o partilhe nas suas redes sociais e/ou comentário.

Até breve!

Se estiver interessado em aprender Docker, pode adquirir o nosso livro aqui.

Docker para novatosDocker para novatos

Deixe uma resposta