Настройка TOR на OpenWRT

OpenWRT - встроенная операционная система, основанная на ядре Linux, и предназначенная, в первую очередь, для домашних маршрутизаторов. Является альтернативой проприетарных прошивок, поддерживает ограниченный список устройств число которых постоянно растёт. Ознакомиться со списком можно тут.

Подготовка и установка TOR

Поменяем пароль root через telnet:

$ telnet 192.168.1.1
$ passwd
  новый_пароль

Далее обновим пакеты введя команду:

$ opkg update

Если у вас менее 4МБ места на ПЗУ роутера, то вам понадобится флеш-карта (для этого в маршруторизаторе должен быть USB-порт!).
Монтируем флешку с помощью block-mount. Устанавливаем TOR:

$ opkg install tor

Перед настройкой

Обязательные шаги после установки пакета TOR:

  1. Настройте и синхронизируйте время чеpез ntp. Неправильная дата может привести к проблемам при старте tor или к его некорректной работе.

  2. При установке пакета tor система должна создать пользователя и группу tor, но при создании группы инсталлятор может допустить ошибку и в файле /etc/group не поставить перенос строки для группы tor, поэтому есть смысл лишний раз это перепроверить

  3. Проверьте все права на файлы необходимые tor они должны иметь маску 755 и принадлежать tor:tor

Настройка TOR

Открываем конфигурационный файл /etc/tor/torrc и правим его.

Если необходимо чтобы все компьютеры подключенные к роутеру (неважно по кабелю или wifi) имели возможность получить доступ к TOR через SOCKS-proxy необходимо раскоментировать строчку:

SocksListenAddress 192.168.120.1:9100 # listen on this IP:port also

Где 192.168.120.1 – ip адрес вашего роутера для локальной сети, а 9100 – порт на котором будет socks-сервер с tor.

Опциями SocksPolicy можно явно указать какие ip адреса будут иметь (или не иметь) доступ к socks серверу. В файле конфигурации эти опции закомментированы – рекомендуется их раскомментировать и настроить под себя.

Если по каким то причинам tor не стартует - воспользуйтесь опцией Log для выяснения проблемы.

Запуск 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?

необходимо остановить его:

$ 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

Далее необходимо весь трафик завернуть на порт 9040. Для этого необходимо использовать 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 без каких-либо настроек на компьютерах в вашей локальной сети и все действия в сети будут анонимны (при правильном использовании!).

Работоспособность можно проверить по стандартной ссылке: https://check.torproject.org/?lang=ru