SOCKS 프록시를 통해 eth1 및 eth2의 모든 패킷을 리디렉션합니다.

SOCKS 프록시를 통해 eth1 및 eth2의 모든 패킷을 리디렉션합니다.

SOCKS 프록시(Tor)를 통해 eth1 및 eth2 간에 모든 트래픽(UDP 및 TCP)을 리디렉션한 다음 eth0을 통해 전달하는 방법이 있습니까?

eth0: 인터넷 입력 - 기본 라우터로 연결되고 케이블 모뎀으로 연결됩니다.

eth1: 모뎀으로 설정된 USB 이더넷 포트(제가 찾고 있는 단어인 것 같죠?)

eth2: WiFi 핫스팟으로 설정된 USB WiFi 안테나

iptables와 같은 것을 사용하여 Tor를 통해 직접 라우팅할 수 있습니까, 아니면 Privoxy와 같은 어댑터가 필요합니까?

답변1

먼저, 당신이 필요합니다tun2socks(보통 "badvpn" 패키지의 일부) tun2socks는 트래픽을 라우팅할 수 있는 가상 인터페이스를 설정하고 트래픽은 대상 양말 프록시를 통해 전송됩니다.

터널을 통해 특정 트래픽만 라우팅하려고 하기 때문에 설정이 약간 까다롭습니다.

이 스크립트~해야 한다원하는 대로 하세요:

#!/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

설명하다:

socks_server=127.0.0.1:8080

이것이 우리가 사용할 양말 서버입니다.
 

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

터널에 사용되는 임의의 ID를 생성합니다. 시스템에 다른 터널이 있을 수 있으므로 tun0또는 만 사용할 수는 없습니다 tun1. 99%의 경우 이것은 잘 작동합니다. 그러나 그에 따라 조정하십시오.
 

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

이러한 설정은 tun2socks터널 인터페이스에 사용됩니다.
 

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

$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

$id이는 eth1들어오거나 나가는 TCP 패킷에 방화벽 표시를 설정합니다 eth2. 우리는 TCP만 일치시키고 싶습니다. Socks는 UDP 또는 ICMP를 처리할 수 없습니다(tun2socks에는 UDP를 전달하는 방법이 있지만 더 복잡하므로 생략하겠습니다).
 

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

그러면 tun2socks가 시작됩니다. 종료될 때까지 전경에 위치합니다.
 

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

설치 중에 생성한 모든 항목이 삭제됩니다. 종료 시 에만 실행됩니다 badvpn-tun2socks.

답변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

노트:--udpgw-transparent-dnsDNS 요청을 추가해야 합니다 .

관련 정보