Network configuration (Português)

Esse artigo descreve como configurar conexões de rede na camada 3 do Modelo OSI e acima. Especificidades para cada meio de transporte são tratadas nas subpáginas /Ethernet e /Sem fio.

Status de tradução: Esse artigo é uma tradução de Network configuration. Data da última tradução: 2020-07-06. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Verificar a conexão

Para solucionar problemas de uma conexão de rede, siga as seguintes condições e assegure-se de atendê-las:

  1. Suas interfaces de rede estão listadas e habilitadas. Do contrário, confira o driver de dispositivo – veja /Ethernet#Driver de dispositivo ou /Sem fio#Driver de dispositivo.
  2. Você está conectado à rede. O cabo está conectado ou você está conectado com a rede sem fio.
  3. Sua interface de rede tem um endereço IP.
  4. Sua tabela de roteamento está configurada corretamente.
  5. Você pode pingar um endereço IP local (por exemplo, seu gateway padrão).
  6. Você pode pingar um endereço IP público (por exemplo, 8.8.8.8), que é um servidor DNS do Google e é um endereço conveniente para se usar em um teste.
  7. Verifique se você consegue resolver nomes de domínio (por exemplo, archlinux.org).

Ping

ping é usado para testar se você consegue alcançar um host.

$ ping www.example.com
PING www.example.com (93.184.216.34): 56(84) data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms
...

Para cada resposta que você recebe, o utilitário ping imprimirá uma linha como a acima. Para mais informações, consulte o manual ping(8). Observe que os computadores podem ser configurados para não responder às solicitações de eco ICMP.

Se você não receber nenhuma resposta, isso pode estar relacionado a seu gateway padrão ou a seu provedor de internet. Você pode executar um traceroute para diagnosticar ainda mais a rota para o host.

Nota: Se você receber um erro como ping: icmp open socket: Operation not permitted ao executar ping, tente reinstalar o pacote iputils.

Gerenciamento de rede

Para configurar uma conexão de rede, siga as etapas abaixo:

  1. Certifique-se que sua interface de rede está listada e habilitada.
  2. Conecte à rede. Conecte o cabo de rede ou conecte à rede sem fio.
  3. Configure sua conexão de rede:

net-tools

Arch Linux tornou obsoleto em favor do .

Comando obsoletoComandos substitutos
arpip neighbor
ifconfigip address, ip link
netstatss
routeip route

Para um resumo mais completo, veja essa publicação de blogue.

iproute2

iproute2 é uma dependência do metapacote base e fornece a interface de linha de comando , usado para gerenciar interfaces de rede, endereços IP e a tabela de roteamento. Esteja ciente de que a configuração feita usando será perdida após uma reinicialização. Para uma configuração persistente, você pode usar um gerenciador de rede ou automatizar comandos ip usando scripts e units de systemd. Observe também que os comandos geralmente podem ser abreviados, para maior clareza eles são descritos neste artigo.

Interfaces de rede

Por padrão, o udev atribui nomes para suas interfaces de rede usando Predictable Network Interface Names, que prefixam nomes de interfaces com (cabeada/Ethernet), (sem fio/wireless/WLAN) ou (WWAN).

Listando interfaces de rede

Ambos nomes de interfaces com e sem fio podem ser descobertos por meio de ls /sys/class/net ou . Note que é o dispositivo loop ou de laço e não é usado para fazer conexões de rede.

Nomes de dispositivos sem fio também podem ser obtidos usando iw dev. Veja também /Sem fio#Obter o nome da interface.

Se sua interface de rede não estiver listada, certifique-se que o driver de seu dispositivo foi carregado com sucesso. Consulte /Ethernet#Driver de dispositivo e /Sem fio#Driver de dispositivo.

Habilitando e desabilitando interfaces de rede

Interfaces de rede podem ser habilitadas/desabilitadas usando . Veja .

Para verificar o status da interface :

O em é o que indica a interface está ativa, e não o state DOWN posterior.

Endereço IP estático

Um endereço IP estático pode ser configurado com a maioria dos gerenciadores de rede padrão e também dhcpcd.

Para configurar manualmente um endereço IP estático, adicione um endereço IP como descrito em #Endereços IP, configure sua tabela de roteamento e configure seus servidores DNS.

Endereços IP

Endereços IP são gerenciados usando .

Liste endereços IP:

$ ip address show

Adicione um endereço IP a uma interface:

# ip address add endereço/tam_prefixo broadcast + dev interface
Note que:
Nota: Certifique-se que endereços IP atribuídos manualmente não conflitem com os atribuídos por DHCP.

Exclui um endereço IP de uma interface:

# ip address del endereço/tam_prefixo dev interface

Exclui todos os endereços correspondendo a um critério, por exemplo, de uma interface específica:

# ip address flush dev interface

Tabela de roteamento

A tabela de roteamento é usada para determinar se você pode alcançar um endereço IP diretamente ou qual gateway (roteador) você deve usar. Se nenhuma rota corresponde ao endereço IP, o gateway padrão é usado.

A tabela de roteamento é gerenciada usando .

PREFIXO é uma notação CIDR ou para o gateway padrão.

Lista rotas IPv4:

$ ip route show

Lista rotas IPv6:

$ ip -6 route

Adiciona uma rota:

# ip route add PREFIXO via endereço dev interface

Exclui uma rota:

# ip route del PREFIXO via endereço dev interface

DHCP

Um servidor Dynamic Host Configuration Protocol (DHCP) fornece aos clientes um endereço IP dinâmico, a máscara de sub-rede, o endereço IP do gateway padrão e, opcionalmente, também servidores de nome DNS.

Para usar DHCP, você precisa de um servidor DHCP em sua rede e um cliente DHCP:

ClientePacoteArchisoNotaUnits de systemd
dhcpcdDHCP, DHCPv6, ZeroConf, IP estático,
ISC dhclientDHCP, DHCPv6, BOOTP, IP estáticodhclient@interface.service

Alternativamente, tem um cliente DHCP embutido que pode ser usado com algumas configurações: iwd (Português)#Ativar configuração de rede embutida.

Servidores

ServidorPacoteIPv4IPv6GUIInterfacesBackend(s) de armazenamentoObservação
dhcpddhcpGlass-ISC-DHCP?Arquivo
dnsmasq?ArquivoTambém DNS, PXE e TFTP
KeaKea-Anterius (Experimental)REST, RADIUS e NETCONFArquivo, MySQL, PostgreSQL e CassandraTambém DNS

Gerenciadores de rede

Um gerenciador de rede permite que você gerencie configurações de conexão de rede nos chamados peris de rede para facilitar a troca de redes.

Gerenciador
de rede
GUIArchiso Ferramentas CLISuporte a PPP (ex., Modem 3G)Cliente DHCPUnits de systemd
ConnMan 8 não oficiais ((com )interno
netctl , wifi-menudhcpcd ou netctl-ifplugd@interface.service,
NetworkManager , interno ou
systemd-networkd (base)networkctl(1)interno,

Configurando um hostname

Um hostname, ou "nome de máquina", é um nome único criado para identificar uma máquina em uma rede, configurada em — veja e para detalhes. O arquivo pode conter o nome de domínio do sistema, se houver. Para configurar o hostname, edite para incluir uma única linha com meuhostname:

Alternativamente, usando hostnamectl(1):

# hostnamectl set-hostname meuhostname

Para definir temporariamente o hostname (até reiniciar), use do :

# hostname meuhostname

Para configurar um hostname "bonito" e outros metadados de máquina, veja .

Resolução de hostname local

O módulo Name Service Switch (NSS) do systemd fornece resolução de hostname local sem ter que editar (). Ele está habilitado por padrão.

Alguns clientes, porém, podem depender de , veja por exemplos.

Para configurar o arquivo hosts, adicione as seguintes linhas ao :

127.0.0.1        localhost

 ::1 localhost

127.0.1.1        meuhostname.localdomain        meuhostname

Como um resultado, o sistema resolve ambas entradas:

Para um sistema com um endereço IP permanente, esse endereço IP permanente deve ser usado em vez de 127.0.1.1.

Resolução de hostname de rede local

Para tornar sua máquina acessível em sua LAN por seu hostname, você pode:

  • editar o arquivo para todo dispositivio em sua LAN, veja
  • configurar um servidor DNS para resolver seu hostname e faça com que os dispositivos LAN o usem (ex., por #DHCP)
  • ou a forma fácil: use um serviço Zero-configuration networking:
    • Resolução de nomes de host através do serviço NetBIOS da Microsoft. Fornecido pelo Samba no Linux. Ele precisa da instalação do e habilitação do serviço . Computadores usando Windows, macOS ou Linux com ativo, serão capazes de localizar sua máquina.
    • Resolução de nomes de host via mDNS. Fornecido por com Avahi (consulte Avahi#Hostname resolution para detalhes de configuração) ou systemd-resolved. Computadores usando macOS, ou Linux com o Avahi ou o systemd-running em execução, poderão localizar sua máquina. A API Win32 mais antiga não possui suporte a mDNS, o que pode impedir que alguns aplicativos antigos do Windows acessem seu dispositivo.

Dicas e truques

Alterando o nome da interface

Você pode alterar o nome de um dispositivo definindo o nome em uma regra de udev. Exemplo:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"

Essas regras serão aplicadas automaticamente na inicialização.

Alguns detalhes devem ser ressaltados:

  • Para obter o endereço MAC de cada placa de rede, utilize o comando:
  • Certifique-se de usar valores hexadecimais minúsculos em suas regras de udev. Ele não gosta de letras maiúsculas.

Se a placa de rede possui um MAC dinâmico, você pode usar , por exemplo:

Para obter o de todos os dispositivos atualmente conecados, veja para onde os links simbólicos em levam. Por exemplo:

file /sys/class/net/*
/sys/class/net/enp0s20f0u4u1: symbolic link to ../../devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.1/2-4.1:1.0/net/enp0s20f0u4u1
/sys/class/net/enp0s31f6:     symbolic link to ../../devices/pci0000:00/0000:00:1f.6/net/enp0s31f6
/sys/class/net/lo:            symbolic link to ../../devices/virtual/net/lo
/sys/class/net/wlp4s0:        symbolic link to ../../devices/pci0000:00/0000:00:1c.6/0000:04:00.0/net/wlp4s0

O caminho do dispositivo deve corresponder ao nome do dispositivo novo e antigo, uma vez que a regra pode ser executada mais de uma vez na inicialização. Por exemplo, na segunda regra, seria errado, uma vez que irá parar de corresponder depois que o nome for alterado para . Somente a regra padrão do sistema será chamada na segunda vez, fazendo com que o nome seja alterado de volta para, por exemplo, .

Se você estiver usando um dispositivo de rede USB (por exemplo, tethering de telefone Android) que tenha um endereço MAC dinâmico e deseje usar diferentes portas USB, poderá usar uma regra que corresponda, dependendo do fornecedor e do ID do produto:

Para testar suas regras, elas podem ser acionadas diretamente do espaço de usuário, por exemplo, com . Lembre-se de primeiro retirar a interface que você está tentando renomear (ex. ip link set enp1s0 down).

Revertendo para nomes tradicionais de interfaces

Se você preferir manter os nomes de interface tradicionais, como eth0, Predictable Network Interface Names podem ser desabilitados mascarando a regra de rule:

# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Alternativamente, adicione aos parâmetros do kernel.

Definindo o MTU do dispositivo e o tamanho da fila

Você pode alterar o MTU do dispositivo e o tamanho da fila ao definir manualmente com uma regra de udev. Por exemplo:

Bonding e LAG (agregação de LINK)

Veja netctl ou systemd-networkd, ou Wireless bonding.

Aliasing de endereço IP

IP aliasing é o processo de adicionar mais de um endereço IP para uma interface de rede. Como isso, um nó em uma rede pode ter múltiplas conexões com uma rede, cada uma servindo um propósito diferente. Usos típicos são hospedagem virtual de servidores Web e FTP ou reorganização de servidores sem ter que atualizar qualquer outras máquinas (isso é especialmente útil para servidores de nome).

Exemplo

Para definir manualmente um alias, para algumas interfaces de rede, use iproute2 para executar

# ip addr add 192.168.2.101/24 dev eth0 label eth0:1

Para remover um dado alias, execute

# ip addr del 192.168.2.101/24 dev eth0:1

Os pacotes de rede destinados para uma sub-rede vão usar o alias primário por padrão. Se o IP de destino está dentro de uma sub-rede de um alias secundário, então o IP fonte está definido respectivamente. Considere o caso em que há mais de uma interface de rede, as rotas padrão podem ser listadas com .

Modo promíscuo

Ativar modo promíscuo fará com que uma interface de rede (sem fio) encaminhe todo o tráfego que receber para o sistema operacional para processamento posterior. Isso é contrário ao "modo normal" onde uma interface de rede irá descartar quadros que não pretende receber. É usado com mais frequência para solução de problemas avançados de rede e análise de pacotes (sniffing).

Se você deseja habilitar o modo promíscuo na interface , execute enable .

Investigar soquetes

ss é um utilitário para investigar portas de rede e é parte do pacote iproute2. Ele tem uma funcionalidade similar ao utilitário obsoleto netstat.

Uso comum inclui:

Exibe todos os TCP Sockets com nomes de serviços:

$ ss -at

Exibe todos os TCP Sockets com números de portas:

$ ss -atn

Exibe todos os UDP Sockets:

$ ss -au

Para mais informações, veja .

Solução de problemas

O problema de escala de janela TCP

Os pacotes TCP contêm um valor "janela" em seus cabeçalhos indicando quantos dados o outro host pode enviar em troca. Esse valor é representado com apenas 16 bits, então o tamanho da janela é no máximo 64Kb. Os pacotes TCP são armazenados em cache por um tempo (eles precisam ser reordenados) e, como a memória é (ou costumava ser) limitada, um host poderia ficar sem isso.

Em 1992, à medida que mais e mais memória ficava disponível, RFC 1323 foi escrito para melhorar a situação: escala de janela. O valor "janela", fornecido em todos os pacotes, será modificado por um Fator de Escala definido uma vez, no início da conexão. Esse Fator de Escala de 8 bits permite que a Janela seja até 32 vezes maior do que os 64Kb iniciais.

Parece que alguns roteadores quebrados e firewalls na Internet estão reescrevendo o Fator de Escala para 0, o que causa mal-entendidos entre hosts. O kernel do Linux 2.6.17 introduziu um novo esquema de cálculo gerando maiores fatores de escala, tornando visíveis as consequências dos roteadores quebrados e dos firewalls.

A conexão resultante é no máximo muito lenta ou quebrada.

Como diagnosticar o problema

Antes de mais, vamos deixar claro: esse problema é estranho. Em alguns casos, você não poderá usar conexões TCP (HTTP, FTP, ...) e em outros, você poderá se comunicar com alguns hosts (muito poucos).

Quando você tiver esse problema, a saída do está normal, os logs estão limpos e informará o estado como normal... e, na verdade, tudo parece normal.

Se você não pode navegar em nenhum site, mas você pode fazer ping em alguns hosts aleatórios, você tem grande chances de estar enfrentando esse problema: o ping usa o ICMP e não é afetado pelos problemas do TCP.

Você pode tentar usar Wireshark. Você pode ver comunicações UDP e ICMP bem-sucedidas, mas comunicações TCP mal sucedidas (somente para hosts estrangeiros).

Ruim

Para corrigi-lo de forma incorreta, você pode alterar o valor tcp_rmem, no qual o cálculo do Fator de Escala se baseia. Embora ele funcione para a maioria dos hosts, não é garantido, especialmente para os mais distantes.

# echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem
Bom

Simplesmente desative Escala de Janela. Como a Escala de Janela é um bom recurso TCP, pode ser desconfortável desativá-lo, especialmente se você não conseguir corrigir o roteador quebrado. Há várias maneiras de desativar Escala de Janela, e parece que a maneira mais segura (que funcionará com a maioria dos kernels) é adicionar a seguinte linha a (veja também sysctl):

net.ipv4.tcp_window_scaling = 0
Melhor

Esse problema é causado por roteadores/firewalls quebrados, então vamos mudá-los. Alguns usuários relataram que o roteador quebrado era o próprio roteador DSL.

Mais sobre isso

Essa seção é baseada nos artigos, em inglês, do LWN Escala de janela e roteadores quebrados e do Kernel Trap Escala de Janela na Internet (arquivado).

Há também vários tópicos relevantes no LKML.

Veja também

gollark: <#457999277311131649> here is bridged to <#457999277311131649> on esolangs 2.
gollark: I have forgotten what cyan actually said or did thus no comment.
gollark: You mean the first one in <#348702212110680064> regarding this or what?
gollark: I do not think this is actually the case.
gollark: Is this the "they hate me" thing again?
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.