Verificar o endereço IP no Linux: ip addr, hostname -I, curl
- 30 de outubro de 2026
- 09:00
- Por Adrien Roche
- Redes

Verificar o seu endereço IP no Linux com ip addr
O comando que responde a "qual é o meu endereço IP" em qualquer distribuição Linux atual é ip, do pacote iproute2. Vem instalado por omissão em todas as grandes distribuições, funciona sem root e é aquilo que os restantes comandos deste guia encapsulam ou vieram substituir. A forma básica lista todas as interfaces com todos os seus endereços:
ip addr show
ip a # same thing, shorterNum servidor com uma única placa de rede, o resultado é parecido com este (as linhas de validade valid_lft foram cortadas):
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 203.0.113.25/24 brd 203.0.113.255 scope global eth0
inet6 2001:db8:1::25/64 scope global
inet6 fe80::5054:ff:fe12:3456/64 scope linkComo interpretar:
- Nome da interface.
loé o loopback, sempre127.0.0.1, acessível apenas a partir da própria máquina. A placa real aqui éeth0; com nomes de interface previsíveis aparece comoens3,enp0s3oueno1, e as placas sem fios começam porwl. ineté o endereço IPv4,inet6o IPv6. O sufixo/24é o comprimento do prefixo em notação CIDR, a escrita moderna da máscara de rede255.255.255.0.scope globalsignifica roteável para lá desta máquina;scope link(a linhafe80::) só é válido no segmento de rede ligado;scope hosté loopback.state UPcomLOWER_UPsignifica que a interface está ativa e tem ligação física.state DOWNouNO-CARRIERé a razão habitual para uma interface não ter endereço nenhum.
Variantes úteis:
ip -4 addr # IPv4 only
ip -6 addr # IPv6 only
ip -br -4 addr # one line per interface
ip -4 addr show dev eth0 # a single interfaceA forma resumida (-br) é a maneira mais rápida de verificar um endereço IP no Linux quando existem várias interfaces, o que é normal num VPS a correr Docker:
$ ip -br -4 addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 203.0.113.25/24
docker0 DOWN 172.17.0.1/16hostname -I: apenas os endereços
Quando só precisa dos endereços, hostname -I (I maiúsculo) imprime todos os endereços configurados numa linha, separados por espaços, excluindo o loopback e os IPv6 link-local:
$ hostname -I
203.0.113.25 2001:db8:1::25Duas ressalvas. O hostname -i minúsculo é um comando diferente: resolve o nome da máquina através de /etc/hosts e do DNS, o que em Debian e Ubuntu costuma dar 127.0.1.1. E o hostname -I imprime os endereços sem ordem garantida, incluindo pontes virtuais como docker0, por isso hostname -I | awk '{print $1}' é um atalho para humanos, não um "IP principal" fiável para scripts. A opção não é POSIX: Debian, Ubuntu, Fedora e RHEL têm-na, imagens mínimas baseadas em BusyBox como o Alpine podem não ter.
ifconfig, nmcli e networkctl
ifconfig (obsoleto, net-tools)
O ifconfig é o que aparece nos tutoriais mais antigos. Pertence ao net-tools, obsoleto há anos em favor do iproute2 e já ausente da instalação por omissão das versões atuais de Ubuntu, Debian e Fedora/RHEL. Se devolver command not found, passe para o ip ou instale o pacote:
sudo apt install net-tools # Debian / Ubuntu
sudo dnf install net-tools # Fedora / RHEL / Rocky / Alma$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 203.0.113.25 netmask 255.255.255.0 broadcast 203.0.113.255
inet6 fe80::5054:ff:fe12:3456 prefixlen 64 scopeid 0x20<link>É legível, mas tem uma limitação real: o ifconfig mostra apenas um endereço IPv4 por interface. Os endereços secundários adicionados com ip addr add, comuns num VPS com vários IP públicos, ficam-lhe invisíveis.
nmcli e networkctl
Os desktops e os servidores da família Fedora/RHEL gerem a rede com o NetworkManager; o Ubuntu Server usa o netplan sobre o systemd-networkd, e muitas imagens de VPS seguem o mesmo modelo. Cada um tem uma ferramenta de estado que mostra endereço, gateway e DNS num só bloco:
nmcli device show eth0
nmcli -g IP4.ADDRESS device show eth0 # NetworkManager: just the address field
networkctl status eth0 # systemd-networkdA opção -g (--get-values) imprime apenas o valor de um campo, com o comprimento do prefixo incluído, o que é prático para scripts. Se não tiver a certeza de qual é a stack da sua máquina, ou sequer de qual é a distribuição e a versão, comece por identificar a versão do sistema pela linha de comandos; a resposta determina qual das ferramentas está presente.
Descobrir o seu endereço IP público com curl
Tudo o que vimos acima indica o endereço configurado na interface. Na maioria dos VPS o IPv4 público está atribuído diretamente à interface, por isso é também o que a internet vê. Em casa, num escritório ou em algumas clouds, a interface tem um endereço privado das gamas RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) e um router ou um NAT 1:1 traduz-o à saída. A única forma fiável de ver o lado público é perguntar a um serviço externo:
curl -4 icanhazip.com
curl -4 ifconfig.me/ip
curl -4 https://api.ipify.org
curl -6 icanhazip.com # public IPv6, if the host has oneAs opções -4 e -6 forçam a família de endereços, o que conta em máquinas dual-stack: sem elas o curl pode preferir IPv6 e devolver um endereço inesperado. O icanhazip.com é operado pela Cloudflare desde 2021 e devolve texto simples. Leia a resposta como "o endereço a partir do qual o meu tráfego sai": atrás de uma VPN ou de um proxy é o endereço do nó de saída, não o do seu operador.
IPv6: global versus link-local
Quase todas as interfaces Linux mostram pelo menos uma linha inet6, muitas vezes confundida com um endereço IPv6 público. A linha que começa por fe80:: e está marcada como scope link é link-local: cada interface gera uma automaticamente, só é válida na rede ligada e nunca é acessível a partir da internet. Um endereço IPv6 público está marcado como scope global e começa por 2 ou 3, já que o espaço unicast global é 2000::/3.
ip -6 addr show scope global
ip -6 route show defaultSe o primeiro comando não imprimir nada, a máquina não tem IPv6 roteável e o curl -6 vai falhar. Os endereços globais adicionais marcados como temporary num desktop vêm das extensões de privacidade; nos servidores essas ficam desligadas para que o endereço se mantenha estável para o DNS e para as regras de firewall.
Gateway predefinido, rotas e DNS
Um endereço, por si só, não diz se a máquina consegue chegar a algum lado. A tabela de rotas diz, e o ip route (forma curta ip r) imprime-a:
$ ip route
default via 203.0.113.1 dev eth0 proto static
203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.25A linha default via é o gateway predefinido, o router que todos os pacotes usam quando nenhuma rota mais específica corresponde. A segunda linha foi acrescentada pelo kernel quando o endereço foi configurado; o campo src é o endereço que a máquina prefere como origem nessa rede. O truque mais útil parte daí: perguntar ao kernel que endereço usaria para um determinado destino.
$ ip route get 1.1.1.1
1.1.1.1 via 203.0.113.1 dev eth0 src 203.0.113.25 uid 1000
cacheEsse valor src é, por definição, o endereço de saída da máquina em direção à internet, sejam quais forem as interfaces, pontes ou túneis existentes. Para o DNS, o /etc/resolv.conf continua a ser o sítio a consultar, mas em sistemas com systemd-resolved (Ubuntu desde 18.04, Fedora recente) contém apenas o stub local 127.0.0.53; os verdadeiros resolvers upstream aparecem em resolvectl status, ou nos campos IP4.DNS de nmcli device show em máquinas com NetworkManager.
Scripts: guardar o endereço IP numa variável
O resultado interativo é feito para humanos; um script precisa de um endereço isolado, sem nada à volta. Estes padrões aguentam-se bem, do mais simples ao mais robusto:
# One interface, IPv4, prefix length stripped
IP=$(ip -4 -o addr show dev eth0 | awk '{print $4}' | cut -d/ -f1)
# Robust: the source address used to reach the internet
IP=$(ip route get 1.1.1.1 | awk '{for (i=1; i<=NF; i++) if ($i == "src") {print $(i+1); exit}}')
# Same thing with JSON output and jq
IP=$(ip -j route get 1.1.1.1 | jq -r '.[0].prefsrc')
# Public IP, with a timeout so the script never hangs offline
PUBLIC_IP=$(curl -4 -s --max-time 5 https://icanhazip.com)A opção -o faz o ip imprimir um endereço por linha, o que mantém seguras as posições dos campos no awk; acrescente head -n 1 se a interface tiver vários endereços IPv4. A opção -j passa o ip para saída JSON, e o jq escolhe depois os campos pelo nome. Prefira essa forma em tudo o que corra em mais de uma máquina: os nomes das interfaces variam de servidor para servidor, os nomes dos campos não.
| Comando | O que mostra | Melhor para |
|---|---|---|
ip addr / ip -br -4 addr | Todas as interfaces, todos os endereços, estado | Uso diário, visão completa |
hostname -I | Todos os endereços numa linha | Uma vista de olhos rápida |
ip route get 1.1.1.1 | Endereço de origem usado para sair para a internet | Scripts, máquinas com várias interfaces |
ifconfig | Um IPv4 por interface (obsoleto) | Sistemas antigos, tutoriais antigos |
curl -4 icanhazip.com | O IPv4 público tal como a internet o vê | NAT, VPN, confirmar o endereço de um VPS |
O que muda num VPS
Num VPS com IPv4 dedicado, ip -4 addr, hostname -I e curl -4 icanhazip.com devem devolver todos o mesmo endereço, porque o IP público está configurado diretamente na interface, sem NAT pelo meio. Quando divergem, há algo no caminho: um NAT do lado do fornecedor, um cliente VPN esquecido, ou uma ponte Docker que ficou em primeiro lugar no hostname -I.
Depois de confirmar o endereço, verifique duas coisas. Primeiro, se está realmente acessível e em que portas, o que é uma pergunta diferente de saber se está configurado: verifique as portas abertas do seu servidor Linux por dentro com ss -tulpn e por fora com nmap. Segundo, o DNS inverso. Consulte o registo PTR do seu endereço:
dig -x 203.0.113.25 +shortUm VPS acabado de criar responde normalmente com um nome genérico do fornecedor, ou com nada. Se o servidor enviar correio ou expuser algum serviço público, defina o hostname e o DNS inverso para que coincidam; o correio de saída, em particular, é rotineiramente rejeitado quando o registo PTR e o nome HELO não coincidem.
Estes comandos tornam-se reflexos mais depressa num servidor cujo endereço é só seu e não muda. Um VPS Linux da rdp.monster vem com um IPv4 dedicado, acesso root completo, CPU e RAM dedicados, largura de banda ilimitada (fair-use) e sem KYC, com criptomoedas aceites, a partir de $8.99/mês. O servidor fica online cerca de 10 segundos após a confirmação do pagamento, por isso o primeiro ip -br -4 addr que executar nele está a um instante de distância.
Perguntas frequentes
Porque é que o hostname -I mostra mais do que um endereço IP?
hostname -I imprime todos os endereços de todas as interfaces, exceto o loopback e os IPv6 link-local, por isso uma máquina com Docker, libvirt, um cliente VPN ou uma segunda placa de rede mostra vários. O docker0 contribui com 172.17.0.1, o virbr0 tipicamente com 192.168.122.1, e uma máquina dual-stack acrescenta o seu IPv6 global. A ordem não é garantida. Quando precisar do endereço a partir do qual o seu tráfego sai realmente, execute antes ip route get 1.1.1.1 e leia o campo src.Porque é que o ifconfig diz command not found no Ubuntu?
ifconfig faz parte do pacote net-tools, obsoleto em favor do iproute2 e ausente da instalação por omissão das versões atuais de Ubuntu, Debian e Fedora/RHEL. O substituto é o ip addr, disponível em todo o lado. Se um script ou um velho hábito o exigir mesmo, instale o pacote com sudo apt install net-tools ou sudo dnf install net-tools, tendo presente que o ifconfig mostra apenas um IPv4 por interface e esconde os endereços secundários adicionados com ip addr add.Porque é que o hostname -i devolve 127.0.1.1?
hostname -i não inspeciona a rede: resolve o nome do sistema como qualquer aplicação faria, através de /etc/hosts e depois do DNS. Os instaladores de Debian e Ubuntu acrescentam uma linha que associa o hostname a 127.0.1.1 para que a máquina possa resolver o próprio nome sem rede, e é essa linha que aparece. Use a forma com I maiúsculo, hostname -I, que lê os endereços reais das interfaces, ou ip -4 addr para o detalhe completo.Como descubro os endereços IP dos outros dispositivos da minha rede?
ip neigh show (ou arp -a se o net-tools estiver instalado). Para um retrato completo, faça um ping-sweep à sub-rede: nmap -sn 192.168.1.0/24 lista todas as máquinas que respondem, com nomes quando o DNS inverso os fornece. Substitua pela sua própria rede, que pode ler na rota scope link de ip route. Num VPS isto raramente é útil, e analisar endereços vizinhos pode violar os termos do seu fornecedor.Adrien Roche, Editor de infraestrutura e hospedagem
Engenheiro de sistemas com mais de 10 anos cuidando de parques de servidores Windows Server e Linux. Adrien mantém a documentação de infraestrutura do rdp.monster e escreve nossos guias sobre RDP, hospedagem VPS, administração de servidores, redes e ferramentas de privacidade.




