proxmox Rede roteada KVM com múltiplos IPs públicos

3

Eu tenho uma hospedagem dedicada com o hetzner. Além disso, comprei uma sub-rede 6IP.

Meu IP principal é: 148.111.111.200 Minha sub-rede principal é: 255.255.255.224

Meus IPs adicionais são 148.222.222.1 a 148.222.222.6.

Meu cenário de uso é o seguinte: Várias instâncias terão IPs (servidores web, etc) voltados ao público Todas as instâncias terão uma segunda configuração para a LAN interna, para que eu possa ter o servidor mysql, memcached, etc na rede privada bloqueada de fora.

O Webserver estará online em 148.222.222.1 e terá um segundo NIC com ip 10.10.10.10

Atualmente, eu configurei o lan interno. Todas as instâncias podem se conectar e pingar umas às outras por meio do IP interno (10.10.10.X), mas meu servidor da Web não pode acessar a Internet.

Eu não posso usar o modo de ponte, já que o hetzner não permite múltiplos MACs no mesmo ip externo, então eu tenho que usar o modo de roteamento. Aqui está o meu arquivo / etc / network / interfaces para o host:

# network interface settings
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

    address  148.111.111.200
    netmask  255.255.255.255
    pointopoint 148.111.111.193
    gateway  148.111.111.193
    broadcast  148.111.111.223
    post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
#commentedout
    #up route add -net 148.111.111.192 netmask 255.255.255.224 gw 148.111.111.193 eth0


    # default route to access subnet

auto vmbr0
iface vmbr0 inet static

    address  148.111.111.200
    netmask  255.255.255.255
    bridge_ports none
    bridge_stp off
    bridge_fd 0

    up ip route add 148.222.222.1/32 dev vmbr0
    up ip route add 148.222.222.2/32 dev vmbr0

auto vmbr1
iface vmbr1 inet static

    address 10.10.10.1
    netmask 255.255.255.0
    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 eth0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE

auto vmbr2
iface vmbr2 inet static

    address  148.222.222.1
    netmask  255.255.255.248
    bridge_ports none
    bridge_stp off
    bridge_fd 0

E aqui está o meu arquivo de interfaces kvm:

auto eth0
iface eth0 inet static
    address 148.222.222.1
    netmask 255.255.255.255
    pointopoint 148.111.111.200
    gateway 148.111.111.200
    dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
    address 10.10.10.12
    netmask 255.255.255.0
    network 10.10.10.0
    broadcast 10.10.10.255

Atualmente, as instâncias do KVM podem executar ping em outra, mas nada mais funciona Host pode pingar instâncias, mas nada mais E eu não consigo acessar a internet nas minhas instâncias.

O que preciso alterar na minha configuração para que isso funcione.

P.S. Tipo de NIC está definido como virtio no proxmox

    
por Sibin Grasic 24.04.2014 / 16:32

3 respostas

1

Eu resolvi o problema usando a seguinte configuração:

auto eth0
iface eth0 inet static
    address  148.111.111.200
    netmask  255.255.255.255
    pointopoint 148.111.111.193
    gateway  148.111.111.193
    broadcast  148.111.111.193

# default route to access subnet

auto vmbr0
iface vmbr0 inet static
    address  148.111.111.200
    netmask  255.255.255.255
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    #subnet
    up ip route add 148.222.222.0/32 dev vmbr0
    up ip route add 148.222.222.1/32 dev vmbr0
    up ip route add 148.222.222.2/32 dev vmbr0
    up ip route add 148.222.222.3/32 dev vmbr0
    up ip route add 148.222.222.4/32 dev vmbr0
    up ip route add 148.222.222.5/32 dev vmbr0
    up ip route add 148.222.222.6/32 dev vmbr0
    up ip route add 148.222.222.7/32 dev vmbr0

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1
    netmask 255.255.255.0
    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 eth0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE

Em suas máquinas clientes, você precisa definir uma ou duas interfaces de rede

  • Um para VMBR0 (IP voltado ao público)
  • Um para o VMBR1 (IP privado - 10.10.10.X)

Configuração de exemplo para o Ubuntu / etc / network / interfaces

#vmbr0
auto eth0
iface eth0 inet static
  address 148.222.222.1
  netmask 255.255.255.255
  pointopoint 148.111.111.200
  gateway 148.111.111.200 #public IP for the proxmox node
  dns-nameservers 8.8.8.8 8.8.4.4

#vmbr1
auto eth1
iface eth1 inet static
  address 10.10.10.20
  netmask 255.255.255.0
  network 10.10.10.0
  broadcast 10.10.10.255
    
por 28.08.2014 / 02:53
0

Olhando sua configuração para vmbr0, parece que você está apontando o roteamento para dispositivos que a interface não pode alcançar (ou seja, para dispositivos que a máscara de rede coloca fora do alcance da rede da interface).

Sem cavar muito em sua configuração, eu faria as seguintes sugestões para simplificar sua configuração agora e no futuro:

  • Create a VM that will act as your UTM (talvez rodando pfsense, vyatta, astaro, zental, clearos, desembaraçar, etc). Isso garantirá que você se preocupe com a conectividade apenas em um ou dois nós que executam funções de gateway (e gateway redundante). Então toda sua lógica de roteamento e acesso acontecerá dentro desta VM UTM. Eu pessoalmente tenho feito isso com sucesso tanto com pfsense e zentyal
  • Proxmox VE 3.2 now works with openvswitch , tente e implemente em cima disso. Isso facilitará a administração de suas pilhas de rede, sem se aprofundar muito nas regras de ebtables e iptables.

Além disso, você está configurando a rede nas interfaces eth {0,1} e nas pontes sobre elas. Eu normalmente sugeriria tirar as configurações das interfaces eth {0,1} e configurar a rede somente nas interfaces de ponte.

Como sobre o seguinte, que leva os detalhes da configuração da interface para longe do host e também deixa o controle para o roteamento entre redes para sua VM UTM ..:


auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto vmbr0
iface vmbr0 inet manual
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0

auto vmbr1
iface vmbr1 inet manual
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0

auto vmbr2
iface vmbr2 inet static
    address  10.10.10.12
    netmask  255.255.255.0
    gateway  10.10.10.1
    bridge_ports eth1
    bridge_stp off
    bridge_fd 0

Obviamente, se a conectividade com o host for um problema, você terá que modificar vmbr0 ou vmbr1 e adicionar um IP ao host. A ideia fundamental é não sobrecarregar o host com roteamento de rede entre VMs e ter uma VM dedicada cuidar desses detalhes

Com essa configuração, sua VM UTM se torna poderosa, e você ainda terá o encaminhamento do host para os endereços IP acessíveis externamente. Nesse cenário, eu recomendaria executar o proxmox em um cluster (mesmo apenas cluster de dois nós) e ativar o HA para a VM do UTM.

    
por 28.04.2014 / 05:48
0

você também precisa disso no topo

auto lo

iface lo inet loopback

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address  148.111.111.200
    netmask  255.255.255.255
    pointopoint 148.111.111.193
    gateway  148.111.111.193
    broadcast  148.111.111.193

# default route to access subnet

auto vmbr0
iface vmbr0 inet static
    address  148.111.111.200
    netmask  255.255.255.255
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    #subnet
    up ip route add 148.222.222.0/32 dev vmbr0
    up ip route add 148.222.222.1/32 dev vmbr0
    up ip route add 148.222.222.2/32 dev vmbr0
    up ip route add 148.222.222.3/32 dev vmbr0
    up ip route add 148.222.222.4/32 dev vmbr0
    up ip route add 148.222.222.5/32 dev vmbr0
    up ip route add 148.222.222.6/32 dev vmbr0
    up ip route add 148.222.222.7/32 dev vmbr0

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1
    netmask 255.255.255.0
    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 eth0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE
    
por 04.02.2016 / 23:44