Eu tenho uma pequena caixa do Ubuntu que executa alguns serviços usados na minha rede local e na internet. O padrão gw nesta caixa é claramente meu modem a cabo e tudo funciona bem ... as entradas de encaminhamento de porta relevantes estão no roteador para os serviços externos.
No entanto, desejo usar essa caixa para rotear também algum tráfego via VPN para outro país (como o cenário do tipo Netflix, mas não neste caso). Eu configurei o openvpn e usei --route-noexec, já que não quero rotear nada da caixa através da VPN, então meu link VPN está ativo e minha tabela de roteamento está inalterada.
Tudo bem até agora ... agora eu quero mudar o endereço do gateway em outros hosts na minha rede para ser este host executando o openvpn e tê-los rota através do túnel VPN. Eu acredito que eu preciso ter uma tabela de roteamento separada para fazer este trabalho - então eu configurei uma interface virtual fictícia no mesmo nic. Com um endereço MAC diferente e atribuído um IP estático. - digamos 192.168.1.252 eth0: 1 (em vez de 192.168.1.200 eth0)
Eu configurei uma nova tabela de roteamento com o gateway padrão sendo o endereço IP da interface tun0 da VPN e habilitei o IP Masquerade.
Se eu adicionar uma regra (digamos que eu quero 192.168.1.61) para rotear via VPN e não o meu modem a cabo diretamente .. funciona configurando a regra no IP de origem, mas eu não quero fazer isso ..
ip rule add from 192.168.1.61 tabela 4 (onde a tabela 4 é a tabela de roteamento para o IP da VPN)
E alterando o gateway padrão em 192.168.1.61 para 192.168.1.252
Eu não quero adicionar esta regra - eu só quero mudar o endereço do gateway de dispositivos para esta interface virtual no meu host.
Então a questão é, como, usando iproute2 ou iptables eu detecto pacotes que foram roteados para esta interface virtual? Parece que tentei de tudo, mas tenho certeza de que há uma solução para esse problema.