KVM: todo o tráfego de rede para um convidado (firewall)

1

Atualmente, estou usando um servidor VMWare ESXi 5.5 para minha virtualização. A configuração da rede é assim:

O firewall PFSense é o centro de tudo e está conectado a: Rede LAN (NIC física 1 atribuída pela VMWare) Rede DMZ (nenhuma NIC física atribuída pela VMWare) WAN (NIC física 2 atribuída apenas ao firewall pela VMWare)

O host é membro da rede LAN. Há um par de servidores na rede DMZ e LAN que são todos baseados em linux, então, no geral, nada é muito chique.

No meu cenário, o firewall cuida de todo o tráfego e a NIC física 2 está disponível exclusivamente para o firewall (não para o host). Desta forma, o firewall é capaz de obter o endereço IP público que é atribuído pelo meu provedor de internet via DHCP (provedor de cabo).

Finalmente, agora eu sou capaz do meu cliente, que é membro da rede LAN, de acessar todos os servidores que eu quero e preciso para os quais eu gerenciei por regras de firewall específicas no PFSense. Tudo é aveludado até agora.

Então, minha pergunta agora é como implementar esse cenário no KVM e tornar o host KVM (que provavelmente será um servidor Ubuntu 13.10 ou 14.04 ou baseado no Debian) um host "burro" relacionado à rede e deixar o firewall poço para todo o tráfego de rede.

Eu experimentei um pouco no meu laptop com o KVM e instalei um convidado (baseado no servidor Ubuntu 13.10), mas ele tinha apenas um NIC físico e não queria puxar o cabo da Internet para esse teste. :)

Portanto, toda ajuda, sugestões e ideias sobre como realizar essa configuração são muito apreciadas. Se houver falta de informação, por favor me avise e tentarei atualizar este post de acordo, mas espero que a idéia geral sobre o que eu quero fazer fique clara durante este post.

VJ

PS: Para uma melhor compreensão, aqui está uma foto da minha configuração de rede VMWare atual.

    
por ViiJay 01.03.2014 / 08:34

2 respostas

1

Simples. Vamos supor:

WAN - > eth0

LAN - > eth1

O que você vai querer fazer é criar uma bridge (vamos chamar de br_wan) com o dispositivo eth0 e deixar sem IP configurado no host (o host não terá nenhum IP configurado para br_wan).

Agora crie outra bridge (vamos chamá-la de br_lan) com o dispositivo eth1 e deixe o host tomar seu IP desta bridge via DHCP (assumindo que o PFSense é o servidor dhcp aqui).

Para a VM do PFSense, você fornecerá tanto o br_wan quanto o br_lan como dispositivos ethernet (use o virtio para obter um melhor desempenho). O PFSense os verá como eth0 e eth1 mais prováveis.

Algumas configurações básicas, não foram testadas, mas tudo que você precisa fazer é configurar a configuração correta dentro de / etc / network / interfaces, as linhas abaixo são da minha memória, não testadas, mas devem estar quase certas:

====== / etc / network / interfaces no HOST ======

auto br_wan

iface br_wan inet static

    address 0.0.0.0

    bridge_ports eth0


auto br_lan

iface br_lan inet dhcp

    bridge_ports eth1
    
por 10.03.2014 / 06:01
0

Tanto quanto eu entendo que você quer quase a mesma configuração que eu, então vou tentar descrevê-lo:

Meu servidor KVM com 2 NICs executa o Ubuntu 13.10 Server com KVM + Libvirt. Um NIC serve como ponte na LAN e o outro é passado diretamente do ISP para o firewall virtual (executando o Vyatta).

Meu ISP atribui IPs com o DHCP vinculado ao endereço MAC. O firewall virtual manipula as chamadas do cliente DHCP para o ISP para que o IP seja atribuído diretamente a ele. No servidor / host KVM, tive que definir um endereço local estático no NIC voltado para o ISP para impedir que ele fizesse chamadas do cliente DHCP (já que meu ISP só concederá um IP)

Este é o / etc / network / interfaces no host (eth0 conectado ao switch LAN, eth1 diretamente de / para o ISP):

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 10.0.0.2
        netmask 255.255.255.0
        gateway 10.0.0.1
        network 10.0.0.0
        broadcast 10.0.0.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        dns-nameservers 10.0.0.4
        dns-search lan

auto eth1
iface eth1 inet static
        address 10.0.99.1
        netmask 255.255.255.252

Esta é a configuração da interface para a máquina virtual:

<interface type='direct'>
  <mac address='52:54:00:b6:58:85'/>
  <source dev='eth1' mode='vepa'/>
  <target dev='macvtap0'/>
  <model type='virtio'/>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
  <mac address='52:54:00:88:94:6e'/>
  <source bridge='br0'/>
  <target dev='vnet1'/>
  <model type='virtio'/>
  <alias name='net1'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>

A configuração das interfaces Vyatta é assim (eth1 vai para LAN / bridge e eth0 é a conexão ISP voltada para eth1 no host):

interfaces {
    ethernet eth0 {
        address dhcp
        duplex auto
        firewall {
            in {
                name wan2lan
            }
            local {
                name wan2gw
            }
        }
        hw-id 52:54:00:b6:58:85
        smp_affinity auto
        speed auto
    }
    ethernet eth1 {
        address 10.0.0.1/24
        duplex auto
        hw-id 52:54:00:88:94:6e
        smp_affinity auto
        speed auto
    }
    loopback lo {
    }
}

Desta forma eu recebo o endereço DHCP do meu provedor diretamente no firewall virtual, e o roteamento no host passa pelo firewall virtual como eu quero.

Espero que isso ajude: -)

    
por 11.03.2014 / 15:21