Basicamente eu tenho uma distro do armbian configurada como NAT onde wlan0 é a interface interna e eth0 é a interface "pubic" que fornece internet (este conjunto é fornecido fora da caixa por armbian-config).
Meus dispositivos se conectam através do wlan0 pegando um IP, digamos 172.24.1.114
Eu adicionei uma VPN a uma rede remota, resultando na criação de ppp0, com IP 10.10.10.12
Tendo essas informações, o que eu quero alcançar é:
-
Somente um IP (por exemplo, 172.24.1.114) tem que ir sempre para o ppp0 (que é todo o tráfego de ida e volta deve ir para ppp0, para que eu possa acessar máquinas e navegar na internet com o IP remoto)
-
Todos os outros IPs podem normalmente ir para eth0
A partir do NAT configurado a partir do armbian-config, adicionei as regras extras do iptables:
-A FORWARD -i wlan0 -o ppp0 -j ACCEPT (this is before -A FORWARD -i wlan0-o eth0 -j ACCEPT created by armbian-config)
-A POSTROUTING -o ppp0 -j MASQUERADE (order shouldn't impact with -A POSTROUTING -o eth0 -j MASQUERADE created by armbian-config)
-A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT (just to be sure!)
Estas regras extras + a do armbian-config parecem funcionar bem:
From 172.24.1.114 client I can see content of a remote web server, say http://10.10.10.20 ( so apparently it goes thru ppp0)
From 172.24.1.114 client I can navigate on internet, but unfortunately checking the IP I go out with (using a geo ip website), it still results the one from eth0
All other clients correctly navigate going out thru eth0
Para resumir, agora posso acessar a rede remota pela VPN para esse IP, mas ele não consegue navegar pelo ppp0
Como última tentativa, encontrei o caminho para definir políticas de regras, como neste guia ( link ), para que eu possa especifique que o IP de origem 172.24.1.114 vai para uma tabela personalizada diferente da principal; então eu adicionei nesta nova tabela o gateway padrão de 10.10.10.1 dev ppp0. Isso leva à falta de navegação na web para esse IP.