Eu tenho o cliente openvpn rodando na minha caixa centos que eu uso como roteador para minha rede interna. Eu tenho duas interfaces para alcançar o mundo exterior.
eth0 - normal internet
tun0 - openvpn tunnel
Eu desabilito a rota automática opevpn colocando a opção "route-noexec" e agora trato todas as rotas manualmente. depois de subir o túnel openvpn, minha tabela de roteamento fica assim.
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.44.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 dummy0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.44.1 0.0.0.0 UG 0 0 0 eth0
Agora eu tenho um host interno que se conectou à interface 192.168.80.0 na minha caixa centos
192.168.80.50
Eu preciso rotear todo o tráfego deste usuário através da interface tun0 e todo o outro tráfego através da eth0
Eu tentei adicionar regras POSTROUTING como esta
iptables -t nat -A POSTROUTING -s 192.168.80.50 -o tun0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
mas todos os clientes passam apenas por eth0 incluindo 192.168.80.50. como posso conseguir isso?
Se você deseja colocar todo o tráfego para clientes VPN selecionados através do túnel VPN, você deve configurar isso "no lado do cliente" - nesta configuração do usuário. No arquivo de configuração do cliente, é a opção: "redirect-gateway autolocal". No servidor VPN, você provavelmente deve ter configurado SNAT ou MASQUERADE para esses IPs de clientes VPN.
Com base nesta resposta no SuperUser :
crie uma tabela de roteamento para alguns IPs:
Em seguida, declare uma nova rota para corresponder à tabela de roteamento
<name>
:seria mais fácil ter uma sub-rede para quem precisa usar a VPN pois com essa configuração você precisa especificar todos os IP na tabela
<name>
Dê uma olhada em 'roteamento de origem iptables' e esta postagem: https://www.linuxquestions.org/questions/linux-software-2/iptables-source-ip-based-gateway-route-681522/
Você pode criar uma tabela de roteamento específica para os clientes VPN com um gateway específico (no seu caso, este seria o endpoint da sua conexão VPN) e simplesmente adicionar uma regra iptables apontando para esta tabela de roteamento.