Как настроить TOR‑middlebox для маршрутизации всего трафика VirtualBox VM через сеть Tor
Введение
Этот пошаговый туториал объясняет, как создать прозрачный Tor‑gateway (middlebox) на машине под Linux (например, Ubuntu), чтобы одна или несколько VM в VirtualBox использовали Tor без изменения конфигурации гостевой ОС. Это полезно для быстрого изолирования VM и повышения анонимности сетевых соединений.
Важно: Tor не даёт абсолютной анонимности. Не отправляйте личные данные, которые могут идентифицировать вас. Тестируйте сервисы, чувствительные к латентности или UDP‑трафику — они могут не работать через Tor.
Что потребуется
- Хост с Linux (в примере Ubuntu). Права root (sudo).
- VirtualBox с рабочими виртуальными машинами.
- Установленные пакеты: bridge-utils, dnsmasq, tor, iptables.
- Базовые знания работы с сетью и iptables.
Краткое определение: transparent proxy — прокси, который перехватывает трафик на сетевом уровне и перенаправляет его на локальный порт (здесь — Tor TransPort).
Шаг 1 — Создайте мостовой интерфейс для VM на хосте
Установите утилиту для мостов и добавьте виртуальный интерфейс в сетевые настройки хоста.
# apt-get install bridge-utilsДобавьте в /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 для клиентов
Установите dnsmasq и укажите диапазон адресов для VM в подсети vnet0.
# apt-get install dnsmasqДобавьте в /etc/dnsmasq.conf:
interface=vnet0
dhcp-range=172.16.0.2,172.16.0.254,1h
Запустите/перезапустите демона:
# /etc/init.d/dnsmasq restartШаг 3 — Установите и настройте Tor
Установите Tor стандартным способом для вашей системы. Затем отредактируйте /etc/tor/torrc и добавьте следующие строки (обеспечивают прозрачную проксификацию и локальный DNS):
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 на хосте и сделайте его исполняемым. В примере скрипт отфильтровывает локальные сети и перенаправляет DNS/TCP через Tor:
#!/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
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 -t nat -A PREROUTING -i $INT_IF -p tcp --syn -j REDIRECT --to-ports $TRANS_PORTЗапустите скрипт:
#./middlebox.shВажно: при изменении правил iptables убедитесь, что у вас есть консольный доступ к хосту для восстановления соединения в случае ошибки.
Шаг 4 — Настройте виртуальную машину в VirtualBox
- Откройте VirtualBox и запустите VM.
- В интерфейсе VM: Устройства > Сетевой адаптер (Devices > Network Adapter). Отключите все сетевые адаптеры, кроме первого.
- Для адаптера 1 выберите «Attached to: Bridged Adapter», имя интерфейса — vnet0.
- Убедитесь, что гостевая ОС получает IP через DHCP (172.16.0.N), шлюз и DNS — 172.16.0.1. При необходимости перезапустите гостя.
После этого все DNS‑запросы и TCP‑соединения VM должны идти через Tor.
Проверка и тестовые случаи
- На VM выполните: curl –interface
https://check.torproject.org/ чтобы проверить использование Tor (в некоторых случаях веб‑ги провайдер блокирует). - Проверьте таблицу iptables на хосте: iptables -t nat -L -n -v
- Проверьте, что DNS‑запросы приходят на 172.16.0.1 и перенаправляются локально.
Критерии приёмки:
- VM получает IP 172.16.0.x по DHCP.
- iptables содержит правила PREROUTING, перенаправляющие UDP 53 и TCP на порт 9040.
- Трафик гостя виден в Tor (проверяем внешним сервисом или с помощью torify/torsocks).
Когда это не подходит (контрпримеры)
- Приложения, требующие исходных UDP‑портов (VoIP, игры), часто не работают через Tor.
- Высокая пропускная способность и низкая задержка не гарантируются — Tor добавляет задержки.
- Если вы запускаете многопользовательскую сеть с разными требованиями к маршрутизации, может потребоваться более гибкое решение (VPN + Tor или отдельные VLAN).
Альтернативные подходы
- Настроить Tor в каждой гостевой ОС (torsocks/tor service).
- Использовать отдельный физический маршрутизатор/Gateway с Tor (например, OpenWrt + Tor).
- Комбинировать VPN и Tor: VPN→Tor или Tor→VPN (понимайте различия по безопасности и потенциальной деанонимизации).
Чеклист для администратора
- Сделан бэкап /etc/network/interfaces и /etc/tor/torrc.
- Проверен доступ к хосту в случае потери сети.
- Скрипт middlebox.sh помечен как исполняемый и добавлен в автозапуск при необходимости.
- Ограничены сети в NON_TOR и доп. правила для управления доступом хоста.
Безопасность и конфиденциальность
- Tor скрывает сетевую маршрутизацию, но не защищает данные на прикладном уровне. Используйте HTTPS/TLS для чувствительного трафика.
- Не используйте Tor для P2P/BitTorrent — это нарушает политику сети Tor и выявляет вас.
- Логи Tor и системные логи на хосте и VM могут содержать данные, поэтому настройте ротацию и минимизацию логов.
Краткие рекомендации по отладке
- Если VM не получает IP — проверьте, что dnsmasq слушает на vnet0 и что vnet0 поднят.
- Если некоторые соединения «утекают», временно включите логирование iptables для диагностики.
- Для тестов используйте изолированную VM, чтобы не влиять на основную систему.
Сводка
Вы настроили мостовой интерфейс vnet0, DHCP/DNS через dnsmasq, Tor с TransPort/DNSPort и правила iptables, перенаправляющие трафик VM через Tor. Это даёт простой способ запускать одну или несколько VM с выходом только через Tor.
Важно: тестируйте сервисы, внимательно относитесь к логам и ограничениям Tor — это средство повышения приватности, но не универсальное решение безопасности.
Дополнительно: если нужно, могу прислать пример systemd‑юнита для автозапуска middlebox.sh, шаблоны правил iptables с сохранением при перезагрузке или редактируемый файл конфигурации для множественных VM.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone