Estou procurando uma maneira de configurar minha VPN em meu VPS de forma que minha conexão SSH passe pela rede normal, mas todo o tráfego restante desse VPS passará pela VPN.
Eu decidi usar o roteamento de políticas para isso.
Eu adicionei uma nova tabela de roteamento chamada VPN ao arquivo / etc / iptables2 / rt_tables
Depois marquei todos os pacotes que não são SSH
iptables -t mangle -A PREROUTING -p tcp ! --dport 22 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING ! -p tcp -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp ! --sport 22 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT ! -p tcp -j MARK --set-mark 4
E os atribuiu à política recém-criada:
ip rule add fwmark 1 table VPN
ip rule add fwmark 2 table VPN
ip rule add fwmark 3 table VPN
ip rule add fwmark 4 table VPN
agora, desde que o OpenVPN irá, por padrão, adicionar todas as rotas à tabela de roteamento principal, usei o --route-noexec para evitar que isso aconteça e criei um script que simplesmente adicionará rota padrão à tabela de roteamento VPN usando as variáveis Ambientais:
openvpn --config [config file] --script-security 2 --route-noexec --route-up /home/user/script.sh
E o script em si é apenas:
#cat script.sh
#!/bin/bash
ip route add default via $route_vpn_gateway table VPN
Depois de executar este comando, ainda estou conectado ao VPS, mas não tenho conexão com o mundo externo.
Veja o que posso ver nas minhas tabelas de roteamento:
# ip route show table VPN
default via 10.7.7.1 dev tun0
# ip route show table main
default via [VPS Gateway] dev eth0
10.7.7.0/24 dev tun0 proto kernel scope link src 10.7.7.210
[VPS Gateway] dev ens3 scope link
Agora, meu entendimento é que a segunda linha da tabela de roteamento principal não deve estar lá, mas não sei como movê-la para a tabela VPN.
Alguma pista? Além disso - alguma idéia o que mais estou faltando nessa configuração?
Obrigado