Создание виртуальной сетки со шлюзом через Tor
Invite pending
По работе столкнулся с необходимостью анонимизации всего сетевого трафика виртуальных машин, развернутых на рабочем компьютере. Для решения задачи было решено настроить шлюз на отдельной виртуальной машине с установкой Tor и dhcp сервера и заворачиванием всего трафика через Tor средствами iptables.
Поднимаем чистую виртуалку с Debian на борту, создаём виртуальный интерфейс в режиме NAT и отключаем DHCP средствами среды виртуализации.
Задаем статические ip-адреса и в качестве шлюза прописываем ip-адрес шлюза виртуальной сети в файле /etc/network/interfaces:
Устанавливаем пакеты tor, isc-dhcp-server, iptables-persistent:
Настраиваем tor. В конец файла /etc/tor/torrc дописываем строки:
Настраиваем iptables в файле /etc/iptables/rules.v4:
Настраиваем dhcp сервер в файле /etc/dhcp/dhcpd.conf:
Всё, теперь все виртуалки, трафик для которых должен быть анонимизирован, настраиваются на работу в пределах данной виртуальной сети и получают настройки от нашего DHCP сервера.
Необходимо помнить, что поднятый Tor сервер является точкой выхода и через вас будет проходить расшифрованный трафик других пользователей сети Tor.
Поднимаем чистую виртуалку с Debian на борту, создаём виртуальный интерфейс в режиме NAT и отключаем DHCP средствами среды виртуализации.
Задаем статические ip-адреса и в качестве шлюза прописываем ip-адрес шлюза виртуальной сети в файле /etc/network/interfaces:
allow-hotplug eth0
iface eth0 inet static
address 192.168.227.3
netmask 255.255.255.0
gateway 192.168.227.2 # ip шлюза вирутальной сети
Устанавливаем пакеты tor, isc-dhcp-server, iptables-persistent:
aptitude install tor isc-dhcp-server iptables-persistent
Настраиваем tor. В конец файла /etc/tor/torrc дописываем строки:
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 0.0.0.0:9040
DNSPort 0.0.0.0:53
StrictExitNodes 1
#ExitNodes {us}
ExcludeNodes {pl},{no}
Настраиваем iptables в файле /etc/iptables/rules.v4:
# iptables rules
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -p icmp -j REJECT --reject-with icmp-port-unreachable
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p udp -m iprange --src-range 192.168.227.4-192.168.227.254 --dport 53 -j REDIRECT --to-port 53
-A PREROUTING -p tcp -m iprange --src-range 192.168.227.4-192.168.227.254 -j REDIRECT --to-ports 9040
-A PREROUTING -p udp -m iprange --src-range 192.168.227.4-192.168.227.254 -j REDIRECT --to-ports 9040
# необходимый uid можно выяснить так: getent passwd | grep Debian-tor
-A OUTPUT -d 10.192.0.0/10 -p tcp -j REDIRECT --to-ports 9040
-A OUTPUT -p udp -m owner ! --uid-owner 121 -m udp ! --dport 53 -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m owner ! --uid-owner 121 -j REDIRECT --to-ports 9040
COMMIT
Настраиваем dhcp сервер в файле /etc/dhcp/dhcpd.conf:
# comment default option domain-names, domain-name-servers
subnet 192.168.227.0 netmask 255.255.255.0 {
range 192.168.227.5 192.168.227.200;
option routers 192.168.227.3;
option domain-name-servers 192.168.227.3;
}
Всё, теперь все виртуалки, трафик для которых должен быть анонимизирован, настраиваются на работу в пределах данной виртуальной сети и получают настройки от нашего DHCP сервера.
Необходимо помнить, что поднятый Tor сервер является точкой выхода и через вас будет проходить расшифрованный трафик других пользователей сети Tor.