Network configuration (Português)

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.
Artigos relacionados
Depuração de rede
Firewalls
Compartilhamento de internet
Roteador
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
.
Verificar a conexão
Para solucionar problemas de uma conexão de rede, siga as seguintes condições e assegure-se de atendê-las:
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
.
Você está conectado à rede. O cabo está conectado ou você está
conectado com a rede sem fio
.
Sua interface de rede tem um
endereço IP
.
Sua
tabela de roteamento
está configurada corretamente.
Você pode
pingar
um endereço IP local (por exemplo, seu gateway padrão).
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.
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.
[1]
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:
Certifique-se que sua
interface de rede
está listada e habilitada.
Conecte à rede. Conecte o cabo de rede ou
conecte à rede sem fio
.
Configure sua conexão de rede:
endereço IP estático
endereço IP dinâmico: use
DHCP
Nota
A imagem de instalação habilita
dhcpcd
(
dhcpcd@
interface
.service
) para
dispositivos de rede cabeada
na inicialização.
net-tools
Arch Linux tornou
net-tools
obsoleto em favor do
iproute2
.
[2]
Comando obsoleto
Comandos substitutos
arp
ip neighbor
ifconfig
ip address, ip link
netstat
ss
route
ip 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
ip(8)
, usado para gerenciar
interfaces de rede
,
endereços IP
e a
tabela de roteamento
. Esteja ciente de que a configuração feita usando
ip
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
ip
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
en
(cabeada/
Ethernet
),
wl
(sem fio/wireless/WLAN) ou
ww
(
WWAN
).
Dica
Para alterar os nomes de dispositivos, veja
#Alterando o nome da interface
e
#Revertendo para nomes tradicionais de interfaces
.
Listando interfaces de rede
Ambos nomes de interfaces com e sem fio podem ser descobertos por meio de
ls /sys/class/net
ou
ip link
. Note que
lo
é 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
ip link set
interface
up|down
. Veja
ip-link(8)
.
Para verificar o status da interface
eth0
:
$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT qlen 1000
...
O
UP
em
<BROADCAST,MULTICAST,UP,LOWER_UP>
é o que indica a interface está ativa, e não o
state DOWN
posterior.
Nota
Se sua rota padrão é por meio da interface
eth0
, desabilitá-la também vai remover a rota e reativá-la não vai restabelecer automaticamente a rota padrão. Veja
#Tabela de roteamento
para restabelecê-la.
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
ip-address(8)
.
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:
o endereço é dado em
notação CIDR
para também fornecer uma
máscara de sub-rede
+
é um símbolo especial que faz o
ip
derivar o
endereço broadcast
do endereço IP e a máscara de sub-rede
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
Dica
Endereços IP podem ser calculados com
ipcalc
(
ipcalc
).
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
ip-route(8)
.
PREFIXO
é uma notação CIDR ou
default
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:
Cliente
Pacote
Archiso
Nota
Units de systemd
dhcpcd
dhcpcd
Sim
DHCP, DHCPv6, ZeroConf, IP estático
dhcpcd.service
,
dhcpcd@
interface
.service
ISC dhclient
dhclient
Sim
DHCP, DHCPv6, BOOTP, IP estático
dhclient@
interface
.service
Alternativamente,
iwd
tem um cliente DHCP embutido que pode ser usado com algumas configurações:
iwd (Português)#Ativar configuração de rede embutida
.
Nota
Você não deve usar dois clientes DHCP simultaneamente.
Em vez de usar diretamente um cliente DHCP, você também pode usar um
gerenciador de rede
.
Dica
Você pode verificar se um servidor DHCP estiver funcionando com
dhcping
.
Servidores
This article or section needs expansion.
Reason:
systemd-networkd
tem suporte a servidor DHCP. (Discuss in
talk:Network configuration
)
Servidor
Pacote
IPv4
IPv6
GUI
Interfaces
Backend(s) de armazenamento
Observação
dhcpd
dhcp
Sim
Sim
Glass-ISC-DHCP
?
Arquivo
dnsmasq
dnsmasq
Sim
Sim
Não
?
Arquivo
Também DNS, PXE e TFTP
Kea
kea
Sim
Sim
Kea-Anterius (Experimental)
REST, RADIUS e NETCONF
Arquivo, MySQL, PostgreSQL e Cassandra
També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.
Nota
Existem muitas soluções para escolher, mas lembre-se de que todas elas são mutuamente exclusivas; você não deve executar dois daemons simultaneamente.
Gerenciador
de rede
GUI
Archiso
[3]
Ferramentas CLI
Suporte a
PPP
(ex., Modem 3G)
Cliente DHCP
Units de systemd
ConnMan
8 não oficiais
Não
connmanctl(1)
Sim ((com
ofono
AUR
)
interno
connman.service
netctl
2 não oficiais
Sim
netctl(1)
, wifi-menu
Sim
dhcpcd
ou
dhclient
netctl-ifplugd@
interface
.service
,
netctl-auto@
interface
.service
NetworkManager
Sim
Não
nmcli(1)
,
nmtui(1)
Sim
interno ou
dhclient
NetworkManager.service
systemd-networkd
Não
Sim (
base
)
networkctl(1)
Não
interno
systemd-networkd.service
,
systemd-resolved.service
Configurando um hostname
Um
hostname
, ou "nome de máquina", é um nome único criado para identificar uma máquina em uma rede, configurada em
/etc/hostname
— veja
hostname(5)
e
hostname(7)
para detalhes. O arquivo pode conter o nome de domínio do sistema, se houver. Para configurar o hostname,
edite
/etc/hostname
para incluir uma única linha com
meuhostname
:
/etc/hostname
meuhostname
Dica
Para um conselho quanto ao hostname, veja
RFC 1178
.
Alternativamente, usando
hostnamectl(1)
:
# hostnamectl set-hostname
meuhostname
Para definir temporariamente o hostname (até reiniciar), use
hostname(1)
do
inetutils
:
# hostname
meuhostname
Para configurar um hostname "bonito" e outros metadados de máquina, veja
machine-info(5)
.
Resolução de hostname local
O módulo
Name Service Switch
(NSS)
myhostname
do
systemd
fornece resolução de hostname local sem ter que editar
/etc/hosts
(
hosts(5)
). Ele está habilitado por padrão.
Alguns clientes, porém, podem depender de
/etc/hosts
, veja
[4]
[5]
por exemplos.
Para configurar o arquivo hosts, adicione as seguintes linhas ao
/etc/hosts
:
127.0.0.1        localhost
::1              localhost
127.0.1.1
meuhostname
.localdomain
meuhostname
Nota
A ordem de hostnames/aliases que seguem o endereço IP no
/etc/hosts
é relevante. A primeira string é considerada o hostname canônico e pode ser adicionada a domínios pais, sendo os componentes de domínio separados por um ponto (p. ex.,
.dominiolocal
acima). Todas as strings a seguir na mesma linha são considerados aliases. Veja
hosts(5)
para mais informações.
Como um resultado, o sistema resolve ambas entradas:
$ getent hosts
127.0.0.1       localhost
127.0.0.1       localhost
127.0.1.1
meuhostname
.localdomain
meuhostname
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
/etc/hosts
para todo dispositivio em sua LAN, veja
hosts(5)
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
samba
e habilitação do serviço
nmb.service
. Computadores usando Windows, macOS ou Linux com
nmb
ativo, serão capazes de localizar sua máquina.
Resolução de nomes de host via
mDNS
. Fornecido por
nss_mdns
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
Nota
Ao alterar o esquema de nomes de interface, não se esqueça de atualizar todos os arquivos de configuração relacionados a rede e arquivos personalizados de unit de systemd para refletir a alteração.
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:
cat /sys/class/net/
nome_dispositivo
/address
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
DEVPATH
, por exemplo:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", DEVPATH=="/devices/platform/wemac.*", NAME="int"
SUBSYSTEM=="net", DEVPATH=="/devices/pci*/*1c.0/*/net/*", NAME="en"
Para obter o
DEVPATH
de todos os dispositivos atualmente conecados, veja para onde os links simbólicos em
/sys/class/net/
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,
"/devices/pci*/*1c.0/*/net/enp*"
seria errado, uma vez que irá parar de corresponder depois que o nome for alterado para
en
. Somente a regra padrão do sistema será chamada na segunda vez, fazendo com que o nome seja alterado de volta para, por exemplo,
enp1s0
.
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:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="12ab", ATTRS{idProduct}=="3cd4", NAME="net2"
Para
testar
suas regras, elas podem ser acionadas diretamente do espaço de usuário, por exemplo, com
udevadm --debug test /sys/class/net/*
. Lembre-se de primeiro retirar a interface que você está tentando renomear (ex.
ip link set enp1s0 down
).
Nota
Ao escolher os nomes estáticos
deve-se evitar o uso de nomes no formato de "eth
X
" e "wlan
X
"
, pois eles podem levar a codiçẽos de corrida entre o kernel e udev durante a inicialização. Em vez disso, é melhor usar nomes de interface que não são usados pelo kernel como padrão, ex.:
net0
,
net1
,
wifi0
,
wifi1
. Para detalhes adicionais, por favor veja a documentação do
systemd
.
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
net.ifnames=0
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:
/etc/udev/rules.d/10-network.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", ATTR{mtu}="1500", ATTR{tx_queue_len}="2000"
Nota
mtu
: Para PPPoE, o MTU não deve ser maior que 1492. Você também pode definir o MTU via
systemd.netdev(5)
.
tx_queue_len
: Valores pequenos para dispositivos menores com uma latência maior, como modens e ISDN. Valor alto é recomendado para servidor conectado por meio conexões de Internet de alta velocidade que realiza grandes transferências de dados.
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
ip route
.
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)
.
/etc/systemd/system/promiscuous@.service
[Unit]
Description=Set %i interface in promiscuous mode
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i promisc on
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Se você deseja habilitar o modo promíscuo na interface
eth0
, execute
enable
promiscuous@eth0.service
.
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
ss(8)
.
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
dmesg
está normal, os logs estão limpos e
ip addr
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).
Formas de corrigi-lo
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
/etc/sysctl.d/99-disable_window_scaling.conf
(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
Linux Network Administrators Guide
Referência do Debian: Configuração de Rede
RHEL7: Guia de Rede
Linux Home Networking
Monitorando e ajustando o Linux a Pilha de Conectividade: Recebendo dados
Monitorando e ajustando o Linux a Pilha de Conectividade: Enviando dados
Rastreamento de uma viagem de pacotes usando tracepoints, perf e eBPF