Пускаем весь траффик VirtualBox через TOR

303
484
7 Июн 2016
Актуально для Ubuntu/Debian Linux (для других выпусков, также актуально,
но возможно нужно будет что-нибудь как-нибудь подправить)

Открываем терминал:
Шаг 1:

Ставим пакет:
apt-get install bridge-utils

ставим текстовый редактор gedit:
apt-get install gedit
можете ставить другой или не ставить, если уже есть какой-нить

Правим файл /etc/network/interfaces:
это делается командой gedit /etc/network/interfaces


добавляем туда строчки

# VirtualBox NAT bridge
auto vnet0
iface vnet0 inet static
address 172.16.0.1
netmask 255.255.255.0
bridge_ports none
bridge_maxwait 0
bridge_fd 1

up iptables -t nat -I POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
down iptables -t nat -D POSTROUTING -s 172.16.0.0/24 -j MASQUERADE


Перезагружаем поставленный нами сетевой интерфейс: ifup vnet0


Шаг 2:
Настраиваем себе dhcp и dns:

устанавливаем
apt-get install dnsmasq

Правим файл тем же gedit
/etc/dnsmasq.conf

добавляем туда строчки:
interface=vnet0
dhcp-range=172.16.0.2,172.16.0.254,1h

перезапускаем
/etc/init.d/dnsmasq restart

Шаг 3:
Ставим TOR:
проверяем имя релиза нашего линукса:
lsb_release -a

открываем
/etc/apt/sources.list

добавляем туда репозиторий тора
deb Для просмотра ссылки Войди или Зарегистрируйся имярелиза main

далее в терминале добавляем ключ шифрования
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

самообновление обновление ключей шифрования для репозитория тора
apt-get install deb.torproject.org-keyring

обновляем список пакетов
apt-get update

теперь ставим сам тор
apt-get install tor

ставим видалию (необязательно)
apt-get install vidalia


Шаг 4:
по уже знакомой схеме открываем
gedit /etc/tor/torrc

и добавляем туда

VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 172.16.0.1
DNSPort 53
DNSListenAddress 172.16.0.1

Перезпускаем TOR
/etc/init.d/tor restart



Подходим кккккк онцу:
Создаем текстовый файл middlebox.sh сссссссс одержимым:

#!/bin/sh

# destinations you don't want routed through Tor
NON_TOR="192.168.1.0/24"

# Tor's TransPort
TRANS_PORT="9040"

# your internal interface
INT_IF="vnet0"

iptables -F
iptables -t nat -F
iptables -t nat -I POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
for NET in $NON_TOR; do
iptables -t nat -A PREROUTING -i $INT_IF -d $NET -j RETURN
done
iptables -t nat -A PREROUTING -i $INT_IF -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -A FORWARD -i $INT_IF -p udp -j DROP
iptables -t nat -A PREROUTING -i $INT_IF -p tcp --syn -j REDIRECT --to-ports $TRANS_PORT

сохраняем и запускаем командой
#./middlebox.sh
или
#sh middlebox.sh
или
#sh ./middlebox.sh

Поскольку после перезагрузки iptables сбрасывает все настройки файлик сохраняем

Теперь в настройках виртуальной машины
выставляем:
Bridged Adapter
и
vnet0

Мы создали виртуальный адаптер и по сути наш комп работает как "сам себе роутер", который режет dns и udp-запросы, заставляя их резолвиться через TOR либо нахуй вообще не резолвиться
и перенаправляет весь трафик через TOR, вероятность днс утечки намного меньше, чем у того же проксифаера, если вообще возможна.