Redirecionar TODOS os pacotes de eth1 e eth2 através de um proxy SOCKS

6

Existe uma maneira de redirecionar todo o tráfego, UDP e TCP, chegando e saindo da eth1 e eth2 através de um proxy SOCKS (Tor), que então passa através da eth0?

eth0: Internet in - leva ao roteador principal, então o modem a cabo

eth1: Uma configuração de porta Ethernet USB como modem (acho que é a palavra que estou procurando, certo?)

eth2: Uma configuração de antena Wi-Fi USB como um hotspot Wi-Fi

Posso usar algo como o iptables para direcioná-lo diretamente através do Tor ou precisaria de um adaptador como o Privoxy?

    
por Timberwolf 15.07.2014 / 04:40

2 respostas

7

Primeiro, você precisa de tun2socks (geralmente uma parte do pacote 'badvpn'). O tun2socks configura uma interface virtual pela qual você pode rotear o tráfego e que o tráfego será enviado pelo proxy de socks de destino.

A configuração fica um pouco complicada, pois você só quer direcionar determinado tráfego pelo túnel.

Este script deve fazer o que você quer:

#!/bin/bash
socks_server=127.0.0.1:8080

id="$RANDOM"
tun="$(printf 'tun%04x' "$id")"
ip tuntap add dev $tun mode tun
ip link set $tun up
ip addr add 169.254.1.1/30 dev $tun
sysctl -w net.ipv4.conf.$tun.forwarding=1
ip rule add fwmark $id lookup $id
ip route add default via 169.254.1.2 table $id
iptables -t mangle -I PREROUTING -i eth1 -p tcp -j MARK --set-mark $id
iptables -t mangle -I PREROUTING -i eth2 -p tcp -j MARK --set-mark $id
badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 --netif-netmask 255.255.255.252 --socks-server-addr $socks_server

iptables -t mangle -D PREROUTING -i eth2 -p tcp -j MARK --set-mark $id
iptables -t mangle -D PREROUTING -i eth1 -p tcp -j MARK --set-mark $id
ip route del default via 169.254.1.2 table $id
ip rule del from fwmark $id lookup $id
ip tuntap del dev $tun mode tun

Explicação:

socks_server=127.0.0.1:8080

Este é o servidor de meias que usaremos.

id="$RANDOM"
tun="$(printf 'tun%04x' "$id")"

Estes geram um ID aleatório para usar no túnel. Como você pode ter outros túneis no sistema, não podemos usar apenas tun0 ou tun1 . 99% do tempo isso vai funcionar bem. Ajuste de acordo embora.

ip tuntap add dev $tun mode tun
ip link set $tun up
ip addr add 169.254.1.1/30 dev $tun
sysctl -w net.ipv4.conf.$tun.forwarding=1

Estes configuram a interface do túnel tun2socks irá usar.

ip rule add fwmark $id lookup $id
ip route add default via 169.254.1.2 table $id

Eles criam uma tabela de roteamento com uma única regra que envia qualquer tráfego com a marca de firewall $id (abrangida em seguida) pelo túnel.

iptables -t mangle -I PREROUTING -i eth1 -p tcp -j MARK --set-mark $id
iptables -t mangle -I PREROUTING -i eth2 -p tcp -j MARK --set-mark $id

Isso define a marca de firewall $id em qualquer pacote TCP vindo em eth1 ou eth2 . Nós só queremos combinar o TCP. O Socks não pode manipular o UDP ou o ICMP (o tun2socks tem uma maneira de encaminhar o UDP, mas é mais complicado, e por isso estou deixando de fora).

badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 --netif-netmask 255.255.255.252 --socks-server-addr $socks_server

Isso inicia o tun2socks. Ele ficará em primeiro plano até ser terminado.

iptables -t mangle -D PREROUTING -i eth2 -p tcp -j MARK --set-mark $id
iptables -t mangle -D PREROUTING -i eth1 -p tcp -j MARK --set-mark $id
ip route del default via 169.254.1.2 table $id
ip rule del from fwmark $id lookup $id
ip tuntap del dev $tun mode tun

Eles derrubam tudo o que criamos durante o processo de configuração. Eles só serão executados uma vez badvpn-tun2socks exits.

    
por 15.07.2014 / 06:04
-2
$ badvpn-tun2socks --tundev $tun --netif-ipaddr 169.254.1.2 \
    --netif-netmask 255.255.255.252 --socks-server-addr $socks_server \
    --udpgw-transparent-dns

OBSERVAÇÃO: você deve adicionar --udpgw-transparent-dns para solicitação de DNS.

    
por 05.12.2014 / 15:05