Qual é o problema
Então, o que você quer é que a transferência de endereços de rede funcione (NAT). Eu não pretendo ser um especialista em iptables
, mas posso ver com base nesta parte do seu iptables-save
:
*nat
:PREROUTING ACCEPT [1710:298954]
:INPUT ACCEPT [1480:280336]
:OUTPUT ACCEPT [28:4162]
:POSTROUTING ACCEPT [86:6162]
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 80 -j DNAT --to-destination 13.37.42.1:80
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 13.37.42.1:80
-A POSTROUTING -o eth0 -j MASQUERADE #####this line
-A POSTROUTING -o wlan0 -j MASQUERADE
... e esta parte:
*filter
:INPUT ACCEPT [6041:840617]
:FORWARD ACCEPT [380:110945]
:OUTPUT ACCEPT [753:102159]
-A FORWARD -i wlan0 -j ACCEPT #####this line
COMMIT
... parece que você está encaminhando as coisas que chegam em wlan0
, que têm permissão para MASQUERADE
on eth0
. No entanto, sua tabela de roteamento direcionará todo o tráfego geral por meio da interface tun0
, porque uma das duas linhas com GENMASK 128.0.0.0
sempre corresponderá antes do destino default
em eth0
with GENMASK 0.0.0.0
. Isso significa que você está encaminhando pacotes wlan0
de entrada para eth0
, mas seu tráfego geral passa pela interface tun0
. Você deseja encaminhar wlan0
pacotes para tun0
.
Solução possível
Você pode corrigir isso, sem alterar nenhum de seus iptables
(mais uma vez, não sou um iptables
expert e seu iptables
é muito mais complicado que o meu) executando:
sudo iptables --table nat --append POSTROUTING --out-interface tun0 -j MASQUERADE
Como faço NAT
Eu escrevi este pequeno script para configurar o NAT nos meus computadores, porque eu nunca consigo lembrar os comandos. Portanto, na ausência do restante de iptables
, você pode executar nat tun0 wlan0
para passar a conexão à Internet em tun0
para wlan0
.
#!/bin/bash
# I named this script "nat"
if [ $# -lt 2 ]
then
echo usage: nat \<internet connection iface\> \<recieving iface\>
exit 0
fi
internetiface=$1;
receivingiface=$2;
sudo iptables --table nat --append POSTROUTING --out-interface $internetiface -j MASQUERADE
sudo iptables --append FORWARD --in-interface $receivingiface -j ACCEPT
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward