Proxmox VE 9 • Rede de máquinas virtuais • Guia

Colocando um endereço IP público em uma máquina virtual Proxmox

Quando seu servidor foi entregue, um endereço IPv4 foi configurado nele e os demais ficaram intocados. Isso é proposital, e esta página mostra como terminar o trabalho. Há três maneiras de fazer isso e nenhuma delas demora muito: coloque a máquina diretamente na rede com seu próprio endereço, encaminhe o tráfego dela pelo host ou esconda um conjunto inteiro de máquinas atrás do endereço que você já tem. Testamos as três em nossa própria rede antes de escrever este guia.

Nada para registrar antes Sem necessidade de reiniciar Alguém no telefone, sempre

Guia passo a passo

Leia os dois primeiros. Depois disso, os passos três, quatro e cinco são alternativas — escolha o que combina com o que você está montando.

1

Onde estão seus endereços e qual gateway cada um usa

Procure o e-mail com o título Configuração do Servidor Dedicado, enviado no dia em que a máquina foi criada. Ele lista tudo o que foi alocado para o servidor: primeiro os endereços IPv4, depois qualquer IPv6. A mesma lista está na sua conta, na página do servidor, no painel chamado Acesso, Rede e rDNS.

Em um servidor Proxmox, esse e-mail acrescenta uma linha abaixo da lista, informando que o host recebeu apenas o primeiro endereço e que os restantes são seus para distribuir — para máquinas virtuais, ou para o próprio host se você quiser que ele tenha mais de um. Configuramos um único endereço para que a máquina fique acessível ao iniciar, e então paramos. Configure todos no host e ele responderá por todos eles, deixando suas máquinas virtuais sem nada para reivindicar.

Dois números importam toda vez que você digita um endereço. A máscara de rede é /24, que é 255.255.255.0. O gateway é o próprio intervalo do endereço, terminando em .1 — então um endereço em 203.0.113.0/24 usa 203.0.113.1. Endereços emitidos juntos ficam lado a lado e compartilham um gateway. Endereços adicionados a um servidor meses depois podem vir de um intervalo diferente nosso, e então usam seu próprio .1. Errar isso é o motivo mais comum pelo qual uma nova máquina virtual não consegue alcançar nada, e custa uma tarde inteira às pessoas.

Para DNS, configuramos 209.244.0.3 no host. Aponte suas máquinas virtuais para onde preferir.

2

Veja o que já está configurado no host

Entre via SSH como root e dê uma olhada:

ip -br addr
cat /etc/network/interfaces

Em uma máquina que acabamos de montar, esse arquivo se parece aproximadamente com isto, com o nome da sua interface e seu próprio primeiro endereço no lugar dos mostrados:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

O que vale notar é que vmbr0 já é uma bridge, e a placa de rede já está conectada a ela. Nada mais é necessário para o passo três, e é por isso que o passo três pede que você não mude nada aqui.

O Proxmox VE 9 roda sobre Debian 13 e usa ifupdown2, então as mudanças de rede entram em vigor sem reiniciar a máquina. Salve o arquivo e execute:

ifreload -a

Editar pela interface web do Proxmox, em vez disso, grava suas alterações em /etc/network/interfaces.new e as mantém até você pressionar Aplicar Configuração. Seja qual for o método, abra o console pela sua conta primeiro. Um erro de digitação neste arquivo e a máquina cai da rede; o console entra por outro caminho e continuará funcionando.

3

O caminho rápido: coloque a máquina diretamente na rede

Comece por aqui. Sua máquina virtual se comporta como um computador separado plugado no mesmo switch, fala com nossos roteadores por conta própria e o host não precisa de nenhuma alteração.

No Proxmox, adicione um dispositivo de rede à máquina, defina a bridge como vmbr0 e deixe o endereço MAC que o Proxmox preencheu. Depois defina o endereço dentro da máquina. Debian ou Ubuntu com a configuração clássica:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/24
    gateway 203.0.113.1
    dns-nameservers 209.244.0.3 1.1.1.1

Ubuntu com netplan, em /etc/netplan/01-netcfg.yaml:

network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.58/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [209.244.0.3, 1.1.1.1]

No Windows, os mesmos três valores vão nas configurações IPv4 do adaptador. Realmente não importa o que a máquina executa; para nós, é apenas mais um computador na rede.

Não há nada para nos avisar antes. Você não precisa nos enviar o endereço MAC de cada máquina virtual, e não limitamos quantos sua porta pode usar. Várias empresas de hospedagem fazem isso, e as instruções delas pedem que você preencha um formulário para cada nova máquina. Nós verificamos em vez de presumir: a porta em que seu servidor está não tem limite de MAC definido e a segurança de porta está desligada, e antes de publicar isto colocamos um segundo endereço e MAC na porta de uma máquina da equipe e o alcançamos pela internet pública.

Três coisas que vale acertar:

• Cada máquina precisa do seu próprio endereço MAC. Duas máquinas compartilhando um, ou copiando o do host, e nenhuma funciona direito.
• Use o gateway pertencente ao intervalo daquele endereço, do passo um.
Use apenas endereços que estão na sua conta. Esta bridge está voltada para uma rede real com máquinas de outras pessoas. Um endereço que não é seu leva o tráfego delas junto.

Pelo mesmo motivo: nada que distribua endereços pertence à vmbr0. Sem servidor DHCP, sem anúncios de roteador. Se quiser entregar endereços às suas próprias máquinas automaticamente, use o passo cinco, onde a bridge não tem saída e não alcança mais ninguém.

4

O caminho controlado: tudo pelo host

Escolha isto quando quiser que o host veja cada pacote, para que o firewall dele possa agir sobre ele, ou quando preferir que suas máquinas nunca apareçam na rede compartilhada. Elas ainda recebem endereços públicos reais da sua conta; só o caminho muda.

O endereço público sai da bridge e vai para a placa de rede, o host é instruído a encaminhar e responde em nome das máquinas atrás dele. No host:

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    up ip route add 203.0.113.58/32 dev vmbr0
    down ip route del 203.0.113.58/32 dev vmbr0

Uma linha up e down para cada endereço roteado dessa forma. Dentro da máquina o endereço é um /32, e o host precisa ser alcançado por uma rota explícita antes da padrão:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/32
    post-up ip route add 203.0.113.10 dev ens18
    post-up ip route add default via 203.0.113.10
    dns-nameservers 209.244.0.3 1.1.1.1

Não remova a linha proxy_arp. Nossos roteadores perguntam à rede quem detém cada endereço, e essa linha é o que faz o host responder pelas máquinas atrás dele. Deixe-a de fora e elas ficam simplesmente invisíveis. As duas linhas post-up echo são a maneira do próprio Proxmox de escrever isso. Para defini-las permanentemente, em vez disso, coloque um arquivo em /etc/sysctl.d/ contendo:

net.ipv4.ip_forward=1
net.ipv4.conf.eno1.proxy_arp=1

O que você compra com o trabalho extra é um host que pode filtrar e registrar cada pacote. Se não precisa disso, o passo três tem menos coisas para dar errado.

5

Máquinas que não precisam de um endereço próprio

Muitas máquinas só iniciam conversas: executores de build, trabalhadores de fila, um banco de dados que nada de fora deveria tocar. Dê a elas um endereço privado em uma bridge sem saída própria e deixe o host traduzir o tráfego delas para o endereço dele no caminho. Isso não usa nada da sua alocação, então você pode rodar quantas o hardware aguentar.

Adicione uma segunda bridge, deixando a vmbr0 exatamente como está:

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE

Coloque as máquinas na vmbr1, dê a cada uma um endereço nesse intervalo com 10.10.10.1 como gateway, e elas estão prontas. Para o resto da internet, elas parecem seu servidor. Nada as alcança de fora a menos que você peça, e pedir é mais uma regra ao lado da primeira, em uma porta que o host ainda não esteja usando:

post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443

Esta bridge não tem porta física, então um servidor DHCP nela é seguro e é uma maneira organizada de endereçar as máquinas atrás dela.

6

Adicionando seus endereços IPv6

O que você tem é um punhado de endereços IPv6 separados, não um bloco para dividir. Eles estão no final do mesmo e-mail de configuração e são colocados um de cada vez, exatamente como os IPv4: um no host se você quiser que o host seja acessível por IPv6, os outros nas máquinas que precisarem deles. O instalador não configura nenhum deles, então tudo isso é seu para adicionar.

Escreva cada um com um /64 no final, e o gateway é o prefixo com ::1 depois dele — um endereço dentro de 2001:db8:1234::/64 usa 2001:db8:1234::1. No host, ao lado da bridge que já existe:

iface vmbr0 inet6 static
    address 2001:db8:1234::2/64
    gateway 2001:db8:1234::1

E em uma máquina na bridge:

iface ens18 inet6 static
    address 2001:db8:1234::5/64
    gateway 2001:db8:1234::1

Depois ifreload -a, como antes. Como são endereços individuais em vez de um bloco seu, não anuncie rotas nem distribua endereços que não lhe foram dados. Precisa de mais? Fale conosco.

7

Nomeando seus endereços: DNS reverso

Você mesmo configura o DNS reverso, em qualquer endereço, sem perguntar a ninguém. Entre, abra o servidor e encontre o painel chamado Acesso, Rede e rDNS. Cada endereço é listado com o nome ao qual responde atualmente e um botão Editar rDNS ao lado. Endereços IPv6 funcionam da mesma forma.

O campo pede um nome de host: letras, números, hífens e pontos, cada parte entre 1 e 63 caracteres, pelo menos duas partes, e o ponto final é adicionado para você. Dê alguns minutos para entrar em vigor.

Se a máquina envia e-mail, o endereço a nomear é aquele de onde o e-mail realmente sai — com o passo cinco é o endereço do host, não o da máquina — e você também vai querer o registro direto correspondente no seu provedor de DNS. Os servidores de e-mail do outro lado verificam se os dois concordam e recusam mensagens quando não concordam.

FAQ

O que as pessoas nos perguntam depois de seguir esta página.

A máquina virtual está ligada, mas nada funciona. Onde procuro?

O gateway, nove em cada dez vezes. Ele tem que ser o .1 do intervalo ao qual o próprio endereço pertence, e um servidor cujos endereços foram comprados em momentos diferentes pode facilmente ter dois intervalos com dois gateways. Depois disso, verifique se o endereço realmente está na sua conta, se você usou /24 e se nenhuma outra máquina está com o mesmo endereço MAC.

Preciso enviar o endereço MAC de cada máquina virtual para vocês?

Não, e não há nada para preencher em lugar nenhum. Sua porta aprende quantos endereços MAC você colocar nela e a segurança de porta está desligada, então uma máquina virtual aparece na rede exatamente como uma física. Mantenha o endereço MAC que o Proxmox gerou e garanta que nenhuma máquina compartilhe um.

Por que apenas um endereço foi configurado quando o servidor chegou?

Porque um host carregando todos os endereços responderia por todos eles, e suas máquinas virtuais não teriam nenhum para assumir. Configuramos o primeiro para que a máquina inicie acessível e deixamos os outros para você. O e-mail de configuração diz isso diretamente, abaixo da lista.

Qual devo escolher, passo três ou passo quatro?

Passo três, a menos que você saiba por que quer o passo quatro. Ele não muda nada no host, não exige configurações incomuns na máquina e se comporta como um computador real em uma rede. O passo quatro é para quando você quer que o host inspecione e filtre tudo no caminho, e está disposto a configurar cada máquina com um pouco mais de cuidado em troca.

Posso distribuir endereços automaticamente com DHCP?

Em uma bridge privada sem porta física, com certeza, e é uma maneira elegante de rodar muitas máquinas. Nunca na vmbr0, que está conectada a uma rede onde outros clientes também estão: um servidor DHCP ou anúncios de roteador lá começam a responder por máquinas que não são suas.

Salvei um arquivo com erro e o servidor caiu. E agora?

Use o console na sua conta. Ele alcança a máquina pela placa de gerenciamento em vez da rede, então continua funcionando quando a rede não funciona. Repare o /etc/network/interfaces, execute ifreload -a e você está de volta. Abrir o console antes de aplicar uma mudança é um hábito que vale a pena adquirir.

Posso conseguir mais endereços?

Sim. Fale conosco no chat ao vivo ou abra um ticket e diga para que serve cada um — os registros de endereços exigem um motivo para cada atribuição, então é a primeira coisa que precisamos registrar. Endereços IPv4 extras são cobrados mensalmente na mesma conta e aparecem no seu painel assim que são alocados.

Procurando um servidor para rodar isso?

O Proxmox VE é um dos sistemas operacionais que você pode instalar com um clique, em hardware que é só seu, com acesso ao console e sem licença para comprar.