Для установки tor на OpenWrt достаточно выполнить
opkg install tor
Если вы собираете пакеты для себя вручную, либо хотите встроить этот пакет прямо в прошивку то на этапе конфигурации прошивки OpenWRT нужно выбрать:
Network ---> <M> tor
для сборки в виде пакета, или
Network ---> <*> tor
для того чтобы встроить пакет прямо в прошивку. Затем собираете прошивку способом аналогичным описанному в моей предыдущей статье.
Несколько подводных камней, которые могут возникнуть после инсталляции пакета.
1. Обязательно настройте и синхронизируйте время чеpез ntp. Tor использует системное время для каких то своих действий. Неправильная дата может привести к проблемам при старте tor или к его не корректной работе.
2. При установке tor должен создать пользователя tor и группу tor. При создании группы инсталлятор у меня допустил ошибку и в файле /etc/group не поставил перенос строки для группы tor. Скорее всего это у меня единичный баг, однако будьте внимательны.
3. Проверьте все права на файлы необходимые tor они должны иметь маску 755 и принадлежать tor:tor
Настройка TOR.
Открываем конфигурационный файл /etc/tor/torrc и правим:
1. Если вы хотите чтобы все компьютеры которые подключены к роутеру (неважно по кабелю или wifi) имели возможность получить доступ к TOR через SOCKS proxy необходимо раскоментировать и проправить строку:
SocksListenAddress 192.168.120.1:9100 # listen on this IP:port also
Где 192.168.120.1 – ip адрес вашего роутера для локальной сети, а 9100 – порт на котором будет socks сервер для сети tor.
2. Опциями SocksPolicy можно явно указать какие ip адреса будут иметь (или не иметь) доступ к socks серверу. В файле конфигурации эти опции закомментированы – рекомендую их раскомментировать и настроить под себя.
3. Если по каким то причинам tor не стартует воспользуетсь опцией Log для выяснения проблемы.
Собственно больше никаких настроек не нужно, и можно запускать tor.
Запуск Tor
Запускаем тор следующей командой:
/etc/init.d/tor start
Если tor уже запущен либо при старте возникают ошибки вида:
[warn] Could not bind to 127.0.0.1:9050: Address already in use. Is Tor already running?
необходимо остановить tor:
killall -9 tor
И запустить его заново как написано выше.
Если лог включен, то признаком успешного запуска и подключения к сети tor будет строка:
Feb 21 19:12:17.034 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Feb 21 19:12:17.035 [notice] Bootstrapped 100%: Done.
Далее достаточно прописать адрес и порт указанный опцией SocksListenAddress как socks сервер в браузере или любой другой программе на вашем ПК.
Однако есть ряд программ которые не умеют работать с socks протоколом. Эту проблему можно решить средствами самого tor + iptables. Для этого необходимо включить в tor режим прозрачного проксирования. В таком случае на подключенных к роутеру машинах вообще никаких настроек делать не нужно. Весь трафик будет сразу проходить через tor.
Использование прозрачного прокси в Tor
Для этого в конфигурационном файле /etc/tor/torrc правим:
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 53
Тем самым прозрачный прокси будет слушать порт 9040.
Перезапускаем tor:
killall -9 tor
/etc/init.d/tor start
Настройка iptables
Далее необходимо весь трафик завернуть на этот порт. Для этого необходимо использовать iptables с опцией REDIRECT –to-port. Для использования этой опции необходимо дополнительно собрать и установить пакет iptables-mod-nat-extra. В противном случае вы получите ошибку вида:
iptables v1.4.6: unknown option `--to-ports'
Установить пакет можно тривиально выполнив
opkg install kmod-ipt-nat-extra
А можно собрать в своем репозитории или включить этот пакет сразу в прошивку. В конфигураторе OpenWrt этот пакет находится в
-> Network
-> iptables
<M> iptables-mod-nat-extra
После установки пакета необходимо “завернуть” трафик на прозрачный прокси сервер:
iptables -t nat -A PREROUTING -p tcp -d ! 192.168.120.1 --dport 80 -j REDIRECT --to-ports 9040
Что означает – перебрасывать весь трафик идущий на 80-й порт (и не адресованый для 192.168.120.1) на порт 9040, на котором как раз и находится прозрачный прокси.
Тоже делаем и для dns запросов:
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
Остальной udp трафик прийдется либо пропускать без анонимизации, либо резать.
Собственно все. Весь трафик приходящий на роутер будет перенаправлен в сеть tor без каких – либо настроек компьютеров в вашей локальной сети! Все ваши действия в сети будут анонимны.
Вариант 2
Доброго времени суток. Решил сделать вторую подсеть на OpenWrt с выходом через Tor. Но вот добиться работоспособности никак не получается, помогите с настройками.
Настройки файла /etc/tor/torrc
Software: Putty,WinSCP, прошивка OpenWrt Chaos Calmer r45676 версия ядра 3.18.11
Hardware: TP-Link-WR1043N/ND v2
Должны быть установлены следующие пакеты:
kmod-ipt-conntrack
kmod-ipt-conntrack-extra
kmod-ipt-core
kmod-ipt-extra
kmod-ipt-nat
kmod-ipt-nat-extra
iptables
iptables-mod-extra
iptables-mod-conntrack-extra
iptables-mod-nat-extra
tor
tor-fw-helper
tor-geoip
, если пакетов нет их нужно установить
opkg install kmod-ipt-conntrack kmod-ipt-conntrack-extra kmod-ipt-core kmod-ipt-extra kmod-ipt-nat kmod-ipt-nat-extra iptables iptables-mod-extra iptables-mod-conntrack-extra iptables-mod-nat-extra tor tor-fw-helper tor-geoip
При возникновении ошибок из-за версий ядра
Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-xxxxxxx:
* kernel (= 2.6.32.27-1) * kernel (= 2.6.32.27-1) *
* opkg_install_cmd: Cannot install package kmod-xxxxxx.
Используем принудительную установку
opkg install kmod-ipt-conntrack kmod-ipt-conntrack-extra kmod-ipt-core kmod-ipt-extra kmod-ipt-nat kmod-ipt-nat-extra iptables iptables-mod-extra iptables-mod-conntrack-extra iptables-mod-nat-extra tor tor-fw-helper tor-geoip --force depends
Потом переносим пакеты в папку с соответвующей версие й ядра /lib/modules/xxx
Изменяем права доступа к папке /var/lib/tor
# chmod -R 775 /var/lib/tor
Все папки и файлы создаваемые tor должны иметь такие же права.
Время должно быть синхронизировано по ntp как это сделать написано здесь: http://wiki.openwrt.org/doc/howto/ntp.client
Редактируем конфиги:
/etc/config/firewall
config zone
option name 'tor'
option network 'tor'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
config forwarding
option src 'tor'
option dest 'wan'
config rule
option name 'Allow DNS Queries'
option src 'tor'
option dest_port '53'
option proto 'tcpudp'
option target 'ACCEPT'
config rule
option name 'Allow DHCP request'
option src 'tor'
option src_port '67-68'
option dest_port '67-68'
option proto 'udp'
option target 'ACCEPT'
/etc/config/network
config interface 'tor'
option ifname 'wlan0-1'
option proto 'static'
option ipaddr '192.168.2.1'
option netmask '255.255.255.0'
/etc/config/wireless
config wifi-iface
option device 'radio0'
option network 'tor'
option mode 'ap'
option macaddr '00:01:4a:9f:6f:3c'
option encryption 'psk2'
option key '123456'
option ssid 'Tor_trans'
/etc/tor/torrc
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 53
DNSListenAddress 192.168.2.1
Создаем файл tor.sh и кладем его в папку /etc/init.d/tor.sh
/etc/init.d/tor.sh
#!/bin/sh
# Tor's TransPort
_trans_port="9040"
# your internal interface
_int_if="wlan0-1"
iptables -F
iptables -t nat -F
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
Далее
#/etc/init.d/tor.sh enable
#/etc/init.d/firewall reload
#/etc/tor/torrc
Проверяем по ссылке: https://check.torproject.org/?lang=ru
https://forum.openwrt.org/viewtopic.php?id=27354
HOWTO: Transparent TOR proxy
Using Openwrt as tansparent proxy to the TOR-network.
This project has been on my mind since a long time.
I wanted to set up a free hotspot and share me broadband-connection, but I wanted to do it in a secure manner. I just want to avoid the police knocking on my door because someone did something "bad" using my hotspot. The best way I could come up with, was routing the traffic of the hotspot trough the tor-network http://www.torproject.org/.
This has two advantages:
Traffic is routed encryted trough the tor-network and reaches the net through an tor-exitnode, and there is no way to tell that the packets came from my hotspot.
A client connected to my hotspot doesn't know anything about my networkstructure, my real ip, etc. so it provides more privacy for me.
I wanted to set up a free hotspot and share me broadband-connection, but I wanted to do it in a secure manner. I just want to avoid the police knocking on my door because someone did something "bad" using my hotspot. The best way I could come up with, was routing the traffic of the hotspot trough the tor-network http://www.torproject.org/.
This has two advantages:
Traffic is routed encryted trough the tor-network and reaches the net through an tor-exitnode, and there is no way to tell that the packets came from my hotspot.
A client connected to my hotspot doesn't know anything about my networkstructure, my real ip, etc. so it provides more privacy for me.
I use a transparent proxy setup because I want to use a simple setup, especially for the user. A new client gets an IP-Address through DHCP, and can use the net. No need for any additional setup.
So that's why I'm doing it, but I guess there are lots of other situations where a transparent tor proxy can be usefull.
info about Tor: http://www.torproject.org/
info about the transparent proxy feature of Tor: https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TransparentProxy I set up an "Anonymizing Middlebox"
So that's why I'm doing it, but I guess there are lots of other situations where a transparent tor proxy can be usefull.
info about Tor: http://www.torproject.org/
info about the transparent proxy feature of Tor: https://trac.torproject.org/projects/tor/wiki/TheOnionRouter/TransparentProxy I set up an "Anonymizing Middlebox"
Setup:
I used a wgt634u with a recent backfire-svn checkout (r24007) it's a broadcom chip and I run a linux-2.6 kernel. I guess the stable backfire-release and any other architekture should work too but your router should have at least 32MB RAM (my tor-daemon needs about 13MB RAM) and enough Flash (8MB are enough).
I use only the wifi ("ath0") interface with own firewall-zone "tor" and restricted the access to the dhcp-server and tor-proxy only. But it will work with "br-lan" as well.
I used a wgt634u with a recent backfire-svn checkout (r24007) it's a broadcom chip and I run a linux-2.6 kernel. I guess the stable backfire-release and any other architekture should work too but your router should have at least 32MB RAM (my tor-daemon needs about 13MB RAM) and enough Flash (8MB are enough).
I use only the wifi ("ath0") interface with own firewall-zone "tor" and restricted the access to the dhcp-server and tor-proxy only. But it will work with "br-lan" as well.
You need to install the tor-package (available in the official openwrt-package-repository) and you need iptables-mod-nat and iptables-mod-nat-extra for the iptable-rules in /etc/firewall.user
so here are the relevant sections of my config files:
/etc/conf/network:
config interface tor
option ifname "ath0"
option proto static
option ipaddr 192.168.2.1
option netmask 255.255.255.0
/etc/config/dhcp:
config dhcp tor
option interface tor
option start 100
option stop 150
option leasetime 12h
/etc/config/firewall:
config zone
option name tor
option input REJECT
option output ACCEPT
option forward REJECT
option syn_flood 1
option conntrack 1 #this setting is mandatory
#open the port of the DHCP-Server, so that the clients get an ip
config rule
option src tor
option proto udp
option dest_port 67
option target ACCEPT
#TOR transparent-proxy-port (set in /etc/tor/torrc)
config rule
option src tor
option proto tcp
option dest_port 9040
option target ACCEPT
#TOR DNS-proxy-port (set in /etc/tor/torrc)
config rule
option src tor
option proto udp
option dest_port 9053
option target ACCEPT
/etc/firewall.user:
iptables -t nat -A PREROUTING -i ath0 -p udp --dport 53 -j REDIRECT --to-ports 9053 #redirects all DNS-requests on the interface ath0 to the tor-daemon-dns-proxy-port
iptables -t nat -A PREROUTING -i ath0 -p tcp --syn -j REDIRECT --to-ports 9040 #redirects all tcp-requests on the interface ath0 to the tor-daemon-transparent-proxy-port
/etc/tor/torrc:
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 9053
DNSListenAddress 192.168.2.1
/etc/conf/wireless:
config wifi-device wifi0
option type atheros
option channel auto
# REMOVE THIS LINE TO ENABLE WIFI:
# option disabled 1
config wifi-iface
option device wifi0
option network tor
option mode ap
option ssid 'Hotspot'
option encryption none
So clients can connect to the SSID "Hotspot" get an ip, and can surf the web, ALL tcp-connections are redirected through the tor-network, not only http.
Other connections (including connections to local resources) are rejected.
Other connections (including connections to local resources) are rejected.
So everything is working so far.
The next thing I want to achieve is running a open captive portal an this device so that I can give the users some information. About Tor, Openwrt and about why I'm running this hotspot.
I took a look at nodogsquash but its firewall-rules doesn't seem to work with the redirections for the transparent proxy.
The next thing I want to achieve is running a open captive portal an this device so that I can give the users some information. About Tor, Openwrt and about why I'm running this hotspot.
I took a look at nodogsquash but its firewall-rules doesn't seem to work with the redirections for the transparent proxy.
So any feedback on the HOWTO, or ideas about setting up a captive portal in this case, are appreciated!