Перенаправьте ВСЕ пакеты от eth1 и eth2 через прокси SOCKS

Вы могли использовать top -b -d 1 достигнуть этого для использования ЦП. top дисплеи обрабатывают использование ЦП относительно последнего вывода.

8
15.07.2014, 08:01
2 ответа

Во-первых, вам понадобится tun2socks (часто является частью пакета 'badvpn'). tun2socks настраивает виртуальный интерфейс, через который вы можете маршрутизировать трафик, и этот трафик будет отправляться через целевой socks-прокси.

Настроить это немного сложно, так как вы хотите направить только определенный трафик через туннель.

Этот сценарий должен делать то, что вы хотите:

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

Это сервер socks, который мы будем использовать.

id="$RANDOM"
tun="$(printf 'tun%04x' "$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 для любых TCP-пакетов, приходящих в eth1 или 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 .

8
27.01.2020, 20:12
$ 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-dns для DNS-запроса.

-2
27.01.2020, 20:12

Теги

Похожие вопросы