Eu tenho uma interface autoescrita tun0 ( baseada em TUN/TAP ) que emite o que recebe.
Preciso que todo tráfego do sistema flua por essa interface.
O papel da interface é:
- Para descobrir os pacotes que provavelmente serão censurados e canalizá-los.
- Passe todos os outros tráfegos intocados.
Como você deve imaginar, estou tentando construir uma ferramenta anticensura.
A decisão sobre o tunelamento deve ser tomada dentro do processo tun0
porque somente lá podemos usar DNS confiáveis.
Preciso da sua ajuda para me mostrar como fazer todo o tráfego fluir por meio de uma interface autoescrita tun0. Se tun0 precisar de alterações, peço que forneça essas alterações.
Abaixo está como tentei fazer todo o tráfego passar pelo tun0 e falhei (falha nos pings).
Compilando
gcc tun0.c
sudo ./a.out
Configurando
sudo ip addr add 10.0.0.1/24 dev tun0
criar tabela João
$ cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 200 John
A ordem é importante:
sudo ip rule add from all lookup John
sudo ip route add default dev tun0 table John
sudo ip rule add iif tun0 lookup main priority 500
$ ip rule 0: from all lookup local 500: from all iif tun0 lookup main 32765: from all lookup John 32766: from all lookup main 35000: from all lookup default
Solução de problemas
sudo tcpdump -i wlp2s0 -qtln icmp
e entãoping -I tun0 8.8.8.8
não mostrar nenhum pacote capturado, significa que nenhum pacote foi transmitido de tun0 para wlp2s0 viaiif tun0 lookup main
regra.Quando substituí
tun0
porlo
todos os lugares, funcionou para mim.
Também tentei
- Desativando a filtragem de caminho reverso,
rp_filter=0
em/etc/sysctl.conf
Resposta Solução de problemas
iptables -I FORWARD -j LOG --log-prefix "filter/FORWARD "
iptables -t nat -I OUTPUT -j LOG --log-prefix "nat/OUTPUT "
iptables -t nat -I PREROUTING -j LOG --log-prefix "nat/PREROUTING "
iptables -t nat -I POSTROUTING -j LOG --log-prefix "nat/POSTROUTNG "
tail -f /var/log/syslog
As fontes modificadas da resposta também estão aqui .