Tutoriais de VPS
Tutorial de configuração multi-IP em VPS: adicionar IP secundário, especificar endereço de origem de saída, binding no Nginx (2026)
Multi-IP não é "escrever o endereço e pronto". Primeiro você precisa descobrir se o provedor entregou um único IP adicional ou um bloco /29 roteado; depois adicionar corretamente o IP secundário à interface de rede e torná-lo persistente; por fim, se você quer que "um serviço específico use um IP específico para sair", precisa de binding ou roteamento por políticas. Este artigo traz um fluxo prático do zero ao funcional, com comandos.

O motivo pelo qual você compra um VPS multi-IP costuma ser bem simples:
- Rodar vários sites na mesma máquina, querendo que "site A / site B" tenham cada um um IP independente
- Montar um servidor de e-mail, precisando de um IP limpo + poder configurar PTR (resolução reversa)
- Fazer scraping/requisições a APIs, querendo distribuir os IPs de saída
- Você não quer explicar toda vez que "esses negócios na verdade estão no mesmo VPS"
Mas os pontos mais chatos do multi-IP também são bem consistentes:
- O IP secundário foi adicionado, mas de fora ainda não responde ao ping
- A saída sempre vai pelo IP principal (mesmo você querendo claramente usar o secundário)
- O Nginx só escuta em um IPv4 específico, e o outro IP dá timeout
Este artigo foi escrito com o objetivo de "ser aplicável na prática": seguindo os passos, você consegue deixar o IP secundário funcionando, torná-lo persistente e controlar o endereço de origem de saída.
Os provedores costumam entregar multi-IP de duas formas:
- Um único IPv4 adicional (/32)
- Você recebe: um IPv4 extra + a instrução de "adicioná-lo à eth0"
- Um bloco de sub-rede inteiro (/29, /28) roteado para você
- Você recebe: uma sub-rede pública + instruções de gateway/roteamento
Esses dois métodos de configuração têm pontos em comum, mas o tratamento de "escolher o IP de origem para saída" e de "tabela de rotas" será diferente.
Você pode primeiro imprimir o estado atual da sua rede:
ip -4 addr
ip -4 route
Preste atenção em duas coisas:
- Como o IP principal está configurado (DHCP ou static)
- Qual é o gateway da rota padrão
1) Não se apresse em tornar persistente: adicione temporariamente um IP secundário com o comando ip (verificação mais rápida)
Suponha que o IP secundário que você recebeu seja 203.0.113.10/32 e a interface de rede seja eth0.
sudo ip addr add 203.0.113.10/32 dev eth0
ip -4 addr show dev eth0
Este passo apenas "anexa o IP à interface de rede" e não altera sua rota padrão.
Verifique a saída a partir do próprio VPS:
curl -4 -s https://api.ipify.org && echo
Depois verifique "saída com endereço de origem especificado" (este passo é fundamental):
curl -4 --interface 203.0.113.10 -s https://api.ipify.org && echo
- Se o segundo também retornar
203.0.113.10: significa que seu IP secundário pelo menos consegue sair - Se der erro (por exemplo
Cannot assign requested address/ timeout): significa que o IP secundário ainda não é realmente utilizável, não se apresse em escrever arquivos de configuração
Muitos IPs fornecidos pelos provedores são "roteados para você", e o funcionamento da entrada também depende do seu firewall local e da escuta do serviço. Faça a saída funcionar primeiro; isso vai te deixar bem mais tranquilo.
A qual categoria seu sistema pertence normalmente se descobre com estes três comandos:
ls -l /etc/netplan/ 2>/dev/null || true
ls -l /etc/network/interfaces 2>/dev/null || true
nmcli -v 2>/dev/null || true
Abra a configuração existente (o nome do arquivo pode variar):
sudo ls -l /etc/netplan/
sudo cat /etc/netplan/*.yaml
Adicione o IP secundário em addresses: (exemplo):
network:
version: 2
ethernets:
eth0:
dhcp4: true
addresses:
- 203.0.113.10/32
Aplique:
sudo netplan apply
Você pode usar a forma mais estável de post-up (evita alterar como seu IP principal é configurado):
auto eth0
iface eth0 inet dhcp
# add extra IPv4
post-up ip addr add 203.0.113.10/32 dev eth0 || true
pre-down ip addr del 203.0.113.10/32 dev eth0 || true
Reinicie a rede:
sudo systemctl restart networking
# 先找到连接名
nmcli con show
# 假设连接名是 "System eth0"
sudo nmcli con mod "System eth0" +ipv4.addresses "203.0.113.10/32"
sudo nmcli con up "System eth0"
Por exemplo, no Nginx você só escreveu:
listen 80;
Então ele pode escutar apenas em 0.0.0.0:80 (normalmente sem problema), mas se você escreveu um IP específico, garanta que ambos estejam escritos.
Exemplo: fazer o site ficar acessível tanto no IP principal + IP secundário:
server {
listen 203.0.113.1:80;
listen 203.0.113.10:80;
server_name example.com;
location / { return 200 "ok\n"; }
}
Recarregue:
sudo nginx -t
sudo systemctl reload nginx
A autoverificação mais simples:
sudo ss -lntp | head
Confirme que o serviço está escutando e depois verifique as regras do firewall.
Se você ainda não fez o endurecimento básico, recomendo passar primeiro por este artigo (não transforme o multi-IP em "múltiplas entradas sendo escaneadas"):
Esta é "a armadilha mais real do multi-IP".
Há dois níveis de solução:
- Simples e direto: deixar o próprio programa vincular o endereço de origem (resolve 80% das necessidades)
- Mais geral: usar roteamento por políticas para que o tráfego "que sai por um IP específico" use uma tabela de rotas própria
As duas seções a seguir tratam de cada uma.
Muitos serviços/ferramentas suportam vincular o endereço de origem.
curl -4 --interface 203.0.113.10 -s https://api.ipify.org && echo
ssh -b 203.0.113.10 user@target-host
- O Nginx pode vincular o IP de origem ao fazer proxy reverso para upstreams
- Seu programa (Go/Node/Python) também pode fazer bind do endereço local ao fazer requisições
Desde que você consiga vincular na camada de aplicação, basicamente não precisará mexer no roteamento por políticas.
5) Roteamento por políticas: fazer "o tráfego que sai do IP secundário" ir pelo IP secundário por padrão
Cenário aplicável: você não quer fazer bind manual em cada programa, ou quer usar um IP específico como "IP de saída dedicado".
Suponha:
- IP principal:
203.0.113.1 - IP secundário:
203.0.113.10 - Gateway padrão:
203.0.113.254 - Interface de rede:
eth0
5.1 Encontre a sub-rede diretamente conectada atual (adicione uma entrada à tabela de roteamento por políticas)
ip -4 route show dev eth0 scope link
Você verá algo como:
203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.1
Memorize esta sub-rede (por exemplo 203.0.113.0/24).
# 1) 新建路由表
sudo bash -lc 'echo "100 out-ip2" >> /etc/iproute2/rt_tables'
# 2) 给新表加直连网段(让它能到网关)
sudo ip route add 203.0.113.0/24 dev eth0 scope link table out-ip2
# 3) 新表默认路由,指定 src
sudo ip route add default via 203.0.113.254 dev eth0 src 203.0.113.10 table out-ip2
# 4) 规则:从 203.0.113.10 发出的流量走 out-ip2 表
sudo ip rule add from 203.0.113.10/32 table out-ip2
# 查看
ip rule
ip route show table out-ip2
Verifique:
curl -4 --interface 203.0.113.10 -s https://api.ipify.org && echo
Observação: os gateways/sub-redes de provedores diferentes podem não ter o formato acima. Basta seguir a ideia de "escrever também a entrada scope link na nova tabela" e basicamente vai funcionar.
Isso varia muito entre distribuições.
- Você pode primeiro tornar persistente com a abordagem de "script de inicialização + serviço systemd" (o menos provável de ser sobrescrito pelo netplan/cloud-init)
- Ou escrever as regras em um hook de rede conforme a distribuição
Se seu objetivo principal é "funcionar para começar", recomendo primeiro fazer o 5.2 funcionar e depois decidir como tornar persistente.
Muita gente acaba querendo multi-IP por causa do e-mail.
Mas o que mais trava os serviços de e-mail auto-hospedados muitas vezes não é o Postfix, e sim:
- A porta 25
- A reputação do IP
- O PTR/resolução reversa
Se você está indo especificamente atrás de e-mail, recomendo fortemente passar por este artigo como uma "lista de armadilhas":
- Guia de endurecimento de segurança em VPS: SSH + firewall + Fail2Ban
- Não consegue conectar ao VPS? Soluções para falha de login SSH
- Como diagnosticar rede VPS lenta: do teste de velocidade à localização de perda de pacotes
- O site no VPS não abre? Diagnóstico e correção de problemas comuns
- Montar um servidor de e-mail em VPS (Docker Mailserver)