Eu usei o seguinte guia para configurar o meu pi de framboesa como um ponto de acesso:
Raspberry Pi 3 como ponto de acesso wi-fi
Estou encaminhando wlan0
para eth0
e NATing todo o meu tráfego. Funciona muito bem!
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Agora, desejo configurar as mesmas regras, exceto usar a interface tun0-00
e encaminhar todo meu tráfego por meio do meu túnel VPN. Eu quero enviar tudo isso, não quero nada vazando para a rede host. Pensando que é algo assim:
sudo iptables -t nat -A POSTROUTING -o tun0-00 -j MASQUERADE
sudo iptables -A FORWARD -i tun0-00 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0-00 -j ACCEPT
Infelizmente eu sei que estas regras do iptables não estão completas ... O problema é que eth0
fica em cima; a regra original para encaminhar tráfego para eth0
ainda existe.
Eu quero enviar todo o meu tráfego pelo túnel se o túnel estiver aberto; se não, estou bem com isso usando eth0
.
Atualização:
Usou o sinalizador -I para inserir minhas regras:
sudo iptables -t nat -I POSTROUTING 1 -o tun0-00 -j MASQUERADE
sudo iptables -I FORWARD 1 -i tun0-00 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -i wlan0 -o tun0-00 -j ACCEPT
A cadeia FORWARD:
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- wlan0 tun0-00 0.0.0.0/0 0.0.0.0/0
2 0 0 ACCEPT all -- tun0-00 wlan0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 0 0 ACCEPT all -- eth0 wlan0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
4 0 0 ACCEPT all -- wlan0 eth0 0.0.0.0/0 0.0.0.0/0
5 0 0 ACCEPT all -- wlan1 wlan0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6 0 0 ACCEPT all -- wlan0 wlan1 0.0.0.0/0 0.0.0.0/0
Ainda sem alegria, o encaminhamento parece não funcionar.
Configuração da VPN do cliente
Eu limpei coisas que pareciam sensíveis:
dev tun
persist-tun
persist-key
cipher AES-256-CBC
auth SHA1
tls-client
client
resolv-retry infinite
remote XXX.XXX.XXX.XXX PORT_NUM udp
lport XXX
verify-x509-name "VPN_Certificate" name
pkcs12 CERT_NAME.p12
tls-auth CERTIFICATE-tls.key 1
ns-cert-type server
redirect-gateway local def1
O pi se conecta muito bem e reflete um IP público diferente. Os clientes ainda mostram o pi como seu gateway, mas eles não podem se conectar mais.
Solução
Primeiro, eu precisava adicionar redirect-gateway def1
no arquivo .ovpn no pi.
Então eu precisava digitar o nome da minha interface corretamente ... Ugh. Eu me sinto como uma pessoa louca, mas aparentemente eu vi tun0-00
no começo e essa foi a única vez que ela existiu. A interface é na verdade apenas tun0
.
Então os comandos apropriados do iptables eram:
sudo iptables -t nat -I POSTROUTING 1 -o tun0 -j MASQUERADE
sudo iptables -I FORWARD 1 -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -i wlan0 -o tun0 -j ACCEPT
Funciona muito bem agora!