Proxmox NAT com túnel GRE como interface externa

1

meta final (diagrama ASCII)

WAN->Router->Server->GRE Tunnel->VM network->VM #1, etc.

Eu devo explicar algumas coisas primeiro.

Eu tenho um servidor executando o Proxmox (Debian 8.7 x64). Sua conexão com a Internet é eth0 (por trás do NAT com o protocolo GRE encaminhado)

A interface GRE (gre1) é criada e monitorada por um daemon personalizado em execução no host, mas, por outro lado, não toca nas regras ou rotas do firewall. O IP desta máquina no túnel GRE é 192.168.168.2 e o ponto final remoto é 192.168.168.1

Eu tenho uma configuração de bridge de rede (vmbr0). Aqui está a configuração relevante.

auto vmbr0
iface vmbr0 inet static
    address 10.2.0.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.2.0.0/24' -o gre1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.2.0.0/24' -o gre1 -j MASQUERADE

Na máquina que é a outra extremidade do túnel GRE, eu já tenho o iptables configurado corretamente para o NAT e posso pingar 192.168.168.1 e destinos externos usando ping -Ig1 no host, mas dentro de uma VM eu posso pingar 192.168. 168.2 e .1 mas não fora dos destinos.

Eu suspeito que a solução para isso é alguma tabela de roteamento foo como eu consegui trabalhar anteriormente substituindo a rota do gateway padrão no host por 192.168.168.1 e criando manualmente uma rota para o endpoint do túnel GRE via 192.168.1.1 ( meu roteador), no entanto, isso também força todo o tráfego do host através do túnel GRE, o que eu não quero, apenas o tráfego da VM.

Para forçar todo o tráfego, incluindo o tráfego do host, pelo túnel GRE, fiz isso.

ip route add GRE_TUNNEL_ENDPOINT via 192.168.1.1 # to avoid running the GRE tunnel in itself
ip route change default via 192.168.168.1

Talvez algumas políticas de roteamento de origem estejam em ordem?

Obrigado

    
por jtl999 10.02.2017 / 03:08

0 respostas