Networking em ponte com convidados bhyve e FreeBSD não funciona

1

Eu tenho um host do FreeBSD10 com bhyve e a seguinte configuração de IP no rc.conf:

ifconfig_igb0="inet X.X.X.146 netmask 255.255.255.0 broadcast X.X.X.255"
defaultrouter="X.X.X.254"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm igb0 up"

O dispositivo de toque é adicionado por meio dos scripts vmrc. Eu tenho outro endereço IPv4 do meu hoster que está em outra sub-rede : Y.Y.Y.176 . O hoster me fornece o seguinte guia para configurar a conexão em ponte com este IP: Networking em ponte

De acordo com este guia eu configurei o guest (FreeBSD10) assim (o hoster me fornece um "MAC virtual" para o IP):

ifconfig_vtnet0="inet Y.Y.Y.176 netmask 255.255.255.255 ether 02:00:00:8c:46:32"
static_routes="net1 net2"
route_net1="-net X.X.X.254/32 Y.Y.Y.176"
route_net2="default X.X.X.254"

Antes de iniciar a VM, eu configuro a bridge assim:

ifconfig bridge0 addm igb0 addm tap0 up

com tap0 sendo o "host-side" do adaptador de rede das VMs.

Isso não funciona. Não consigo acessar o gateway de dentro da VM e não consigo acessar o host da VM. Isso faz sentido para mim, porque não há rotas. Não está claro como isso pode funcionar.

    
por Subito 06.06.2014 / 11:25

3 respostas

0

Isso não resolveu, mas sim contornou o problema:

Eu atribuí igb0 no host a todos os IPs com /32 network-mask, em vez das VMs e à ponte atribuída0 o IP privado 10.0.0.1/24 , a interface vtnet0 na VM é atribuída 10.0.0.2 com um gateway padrão de 10.0.0.1 e eu crio um binat usando pf.

O rc.conf no host é assim:

ifconfig_igb0="inet X.X.X.146 netmask 255.255.255.0 broadcast X.X.X.255"
defaultrouter="X.X.X.254"

ifconfig_igb0_alias0="inet Y.Y.Y.176/32"
ifconfig_igb0_alias1="inet Y.Y.Y.177/32"
ifconfig_igb0_alias2="inet Y.Y.Y.178/32"
ifconfig_igb0_alias3="inet Y.Y.Y.179/32"

cloned_interfaces="bridge0"
ifconfig_bridge0="inet 10.0.0.1/24"

E o pf.conf no host:

vm_if1 = "Y.Y.Y.176"
vm_if2 = "Y.Y.Y.177"
vm_if3 = "Y.Y.Y.178"
vm_if4 = "Y.Y.Y.179"

slave = "10.0.0.4"

binat on igb0 from $slave to any -> $vm_if1
nat on igb0 from bridge0:network to any -> (igb0)

As VMs rc.conf são realmente fáceis:

ifconfig_vtnet0="10.0.0.2 netmask 255.255.255.0"
defaultrouter="10.0.0.1"

Agora, sempre que provisiono uma nova VM, ela precisa de um IP dentro do intervalo 10.0.0.0/24 e preciso ajustar os hosts pf.conf .

    
por 28.06.2014 / 11:41
4

Você provavelmente precisa fazer:

ifconfig tap0 up

e / ou adicione net.link.tap.up_on_open=1 a /etc/sysctl.conf para torná-lo automático.

Normalmente, a interface de toque não aparece até que você forneça um IP.

Isso deve fazer a ponte funcionar.

Para configurar a ponte em rc.conf :

cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="addm igb0 addm tap0 up"

Você também precisa:

if_bridge_load="YES"
if_tap_load="YES"

em /boot/loader.conf , para que seja possível criar um toque instantaneamente.

Veja as instruções oficiais que eu escrevi aqui .

    
por 25.06.2014 / 04:16
3

Mesmo que a pergunta tenha mais de meio ano, já que tive o mesmo problema

Não configure seu endereço IP nas interfaces de membro físico da ponte, mas na própria interface da ponte. Isso é mencionado na seção de manuais do FreeBSD sobre a ponte .

Meu entendimento é que isso se deve à maneira como os pacotes são processados. if_bridge(4) cobre alguns deles na seção sobre filtragem.

    
por 25.01.2015 / 17:48