Este é um tópico antigo, mas aqui vai.
Por acaso, eu executo uma série de VMs do OpenBSD em um ESXi 6.0 rodando na SoYouStart, uma empresa filha da OVH. A configuração da rede é a mesma da OVH, e acho que, apesar de estranho, seu objetivo principal é eliminar o máximo possível o tráfego ARP limitando artificialmente os domínios de broadcast e sem a necessidade de usar VLANs, por exemplo.
No meu caso, solicitei endereços IP extras da OVH e eles vêm de um intervalo completamente diferente. Para a discussão aqui, vamos supor que estas são minhas configurações:
- meu endereço IP principal (que o host ESXi está usando): 213.0.113.78/32
- o intervalo de endereços IP extra para convidados da VM: 192.0.2.64/30
- o gateway padrão para TODOS os itens acima: 213.0.113.254
- observe - todos os hosts precisam usar uma máscara de rede do host (255.255.255.255) devido à maneira como a rede OVH está configurada
Para configurar o roteamento no host do OpenBSD, isso é o que eu preciso fazer:
ifconfig vmx0 inet 192.0.2.64 255.255.255.255
route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0
route add -inet default 213.0.113.254
Para que tudo isso seja feito durante o início, eu ignoro o arquivo /etc/mygate
e coloco o seguinte no /etc/hostname.vmx0
:
inet 192.0.2.64 255.255.255.255
!sleep 2
!route add -inet 213.0.113.254 -llinfo -link -static -iface vmx0
!route add -inet default 213.0.113.254
Você notará o comando sleep
- por algum motivo isso é requerido no OpenBSD 5.9, mas não foi antes. Sem o sleep
, o primeiro dos comandos para route
não será executado e, portanto, seu roteamento não será configurado corretamente.
Isso funciona usando o seguinte truque:
- configuramos o endereço IP na interface
- com o primeiro comando
route
, traduzimos o endereço IP do gateway (213.0.113.254) para um endereço de link (endereço MAC); isso é feito pela opção-llinfo
; - no mesmo comando
route
, usando a opção-link
, instalamos o endereço do link na tabela de roteamento e usando o-iface vmx0
informamos ao kernel qual interface de rede que vincula o endereço pode ser acessada via; a opção-static
marca como uma entrada inserida manualmente na tabela de roteamento - o segundo comando
route
agora pode ser bem-sucedido, pois a rota para o gateway padrão agora é conhecida
Uma coisa que eu encontrei na configuração acima, a qual eu não tenho solução ainda, é que um dos quatro hosts do OpenBSD, configurados exatamente da mesma maneira, rodando exatamente a mesma versão do SO e o mesmo kernel construir, e até rodando no mesmo host VMware, a cada 24 horas ou mais, parece estar "perdendo" aquela rota mágica da sua tabela de roteamento ...