Roteando VPN IPsec para sub-rede VM

Roteando VPN IPsec para sub-rede VM

Meu computador físico é capaz de estabelecer um túnel IPsec (com Strongswan) para meu VPS acessível pela Internet, para que o tráfego de Internet do meu computador físico passe pelo meu VPS.

Também tentei e obtive sucesso ao configurar o Strongswan em uma VM rodando em minha máquina física. Como esperado, minha VM pode acessar a Internet através do meu VPS.

O que eu gostaria de fazer é ter o Strongswan rodando no meu computador físico, para que o tráfego de todas as minhas VMs (em 192.168.122.0/24) passe pelo meu VPS. Acho que isso deve ser possível com uma configuração site a site (exemplo aqui:https://www.strongswan.org/testing/testresults/ikev2/net2net-cert/), mas não consegui fazê-lo funcionar. Não tenho certeza se meu problema está na configuração do Strongswan, ou na configuração de rede da minha VM, ou em ambos...

ipsec.conf na minha máquina física:

config setup
    charondebug="ike 2, cfg 2"

conn kvm-test
    rightsubnet=0.0.0.0/0
    keyexchange=ikev2
    ike=aes256gcm128-sha512-modp8192!
    esp=aes256gcm128-sha512-modp8192!
    leftcert=client.pem
    auto=add
    right=123.123.123.123 # not my VPS's actual IP
    rightcert=vpn_server.pem
    leftsubnet=192.168.122.0/24
    left=192.168.1.2

ipsec.conf no meu VPS:

config setup
        # strictcrlpolicy=yes
        # uniqueids = no

conn %default
    keyexchange=ikev2
    leftfirewall=yes
    auto=add
    leftsubnet=0.0.0.0/0
    left=123.123.123.123 # not my VPS's actual IP
    ike=aes256gcm128-sha512-modp8192!
    esp=aes256gcm128-sha512-modp8192!

conn kvm-test
    leftcert=vpn_server.pem
    rightcert=client.pem
    rightsubnet=192.168.122.0/24

Com esta configuração a conexão é estabelecida com sucesso, porém o tráfego da minha VM não passa por ela. Devo observar que ip route show table 220não mostra nada, o que é diferente do exemplo vinculado acima, e não tenho certeza do que devo colocar lá... ip route add table 220 default via 123.123.123.123 proto staticnão funciona. Alguma ideia?

Responder1

Se a sua solução de virtualização faz NAT do tráfego de 192.168.122.0/24 para o IP físico do seu host (192.168.1.2), você precisa evitar isso e adicionar uma regra que aceite tráfego que corresponda a uma política IPsec. Por exemplo (mais detalhes):

iptables -t nat -I POSTROUTING -s 192.168.122.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT

informação relacionada