Isso resume o que quero alcançar:
Telefone (192.168.1.245) -> Raspberry Pi 1 (wg0 10.8.0.3, wlan0 192.168.1.174) -> VPS (wg0 10.8.0.1 Servidor VPN) -> Raspberry Pi 2 (wg0 10.8.0.110, wlan0 192.168.0.8) -> Internet
Quero que as conexões feitas pelo Phone usem o Raspberry Pi 1 como gateway. Os pacotes devem ser roteados para o Raspberry Pi 2 pela rede 10.8.0.0/24. Então ele deve ser NAT para a internet para que o Phone pense que tem o endereço IP público do Raspberry Pi 2 (wlan0 é a interface WAN). A princípio pensei que precisava do iptables e tentei o seguinte:
PREROUTING
-i wlan0 -s 192.168.1.0/24 -j DNAT --to-destination 10.8.0.110
FORWARD
-i wlan0 -s 192.168.1.0/24 -d 10.8.0.110/32 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-i wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
POSTROUTING
-o wg0 -d 10.8.0.110/32 -j SNAT --to-source 10.8.0.3
Para o Raspberry Pi 1. O VPS tinha o seguinte:
FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Mas então percebi que esses pacotes chegam em 10.8.0.110 pensando que era o destino final, é por isso que estava recebendo conexão recusada ao testar algo comotelnet google.com 443
Então tentei o seguinte para o Raspberry Pi 1:
FORWARD
-i wlan0 -o wg0 -j ACCEPT
-i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
e VPS:
FORWARD
-i wg0 -s 192.168.1.0/24 -o wg0 -j ACCEPT
-i wg0 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
E esses pacotes também não estão chegando ao Raspberry Pi 2.
Com a ajuda do GPT4, verifiquei que poderia usar o Policy Based Routing adicionando regras de IP e rotas. Meu entendimento é que os pacotes que chegam ao Raspberry Pi 1 por 192.168.1.0/24 devem ser roteados diretamente para 10.8.0.110 sem alterar o endereço de destino. O GPT4 sugeriu o seguinte:
# Create a new routing table
echo "200 custom" >> /etc/iproute2/rt_tables
# Add a rule to use this table for traffic from 192.168.1.0/24
ip rule add from 192.168.1.0/24 lookup custom
# Add a route in the custom table to forward traffic to 10.8.0.110
ip route add default via 10.8.0.110 dev wg0 table custom
Não funcionou e, por algum motivo, deixou a conexão SSH do Raspberry Pi 1 muito lenta.
Estas são as rotas do Raspberry Pi 1:
default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.174 metric 600
10.8.0.0/24 dev wg0 proto kernel scope link src 10.8.0.3
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-352622acd722 proto kernel scope link src 172.18.0.1
172.19.0.0/16 dev br-e7d4e060a024 proto kernel scope link src 172.19.0.1
172.20.0.0/16 dev br-b97d3a35bbf0 proto kernel scope link src 172.20.0.1
192.168.0.0/24 via 192.168.1.1 dev wlan0 proto static metric 600
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.174 metric 600
Neste ponto, não tenho certeza do que tentar, já que não sou um especialista em redes. Agradeço antecipadamente por alguns conselhos.
PS: O Raspberry Pi 1 e o VPS têm contêineres docker em execução, há regras iptables para docker configuradas. Acho que isso não deve interferir.