В целях самообразования решил познакомится с анонимизаторами tor/i2p, но каждый раз менять для этого прокси в настройках браузера быстро надоело, но под рукой уже был настроенный роутер. Появилась идея настроить на нём прозрачное проксирование. Ну, вернее полупрозрачное - для подключения к анонимизаторам используется отдельная учётная запись PPTP. Такой вариант показался наиболее удобным - доступ к tor/i2p требуется далеко не всегда.

Установка производилась в Ubuntu 13.10. Сам роутер имеет адрес 10.0.0.1, tor/i2p вынесены в целях эксперимента на отдельный lxc контейнер с ip адресом 10.0.1.160. Ресурсы i2p/tor имеют виртуальный IP адрес 10.0.1.200, который используется для "заворота" трафика в цепочку проксей (увы, обойтись без них не удалось). Адрес 192.168.0.0/16 используется при подключении PPTP клиента

Итак, приступим к установке.

В репозитарии ubuntu почему-то нет i2p, поэтому придётся добавить репозитарий:

$ sudo apt-add-repository ppa:i2p-maintainers/i2p
$ sudo apt-get update

Устанавливаем анонимизаторы

$ sudo apt-get install i2p tor

Сразу меняем настройки автозапуска i2p роутера:

/etc/default/i2p
RUN_DAEMON="true"

Устанавливаем прокси-серверы:

$ sudo apt-get install tinyproxy polipo

И настраиваем конфиги. Прокси сервер tinyproxy при такой настройке является основным и прозрачным:

/etc/tinyproxy.conf

User nobody
Group nogroup
Port 8888
Timeout 600
DefaultErrorFile "/usr/share/tinyproxy/default.html"
StatFile "/usr/share/tinyproxy/stats.html"
Logfile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
PidFile "/var/run/tinyproxy/tinyproxy.pid"
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
Allow 127.0.0.1
Allow 192.168.0.0/16
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
upstream 127.0.0.1:4444 ".i2p"
upstream 127.0.0.1:8124 ".onion"

Polipo - дополнительный. Его основная задача - переконвертить http proxy в предоставляемый tor'ом socks proxy.

/etc/polipo/config

socksParentProxy = "127.0.0.1:9050"
socksProxyType = socks5
allowedClients = 127.0.0.1
proxyPort = 8124

Устанавливаем DNS сервер. В принципе, можно наверное любой, но последнее время как-то больше нравится dnsmasq.

$ sudo apt-get install dnsmasq

/etc/dnsmasq
address=/.i2p/10.0.1.200
address=/.onion/10.0.1.200

Не забываем перезапустить (или заставить перечитать настройки) установленное  после изменения конфигов.

Ввиду особенностей настройки у меня при подключении по PPTP вместо включения маскарада/ната включается примерно такой скрипт ($2 - имя интерфейса):

$ sudo iptables -t nat -A PREROUTING -i $2 -d 10.0.1.200 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.1.160:9040
$ sudo iptables -t nat -A PREROUTING -i $2 -m udp -p udp --dport 53 -j DNAT --to-destination 10.0.1.160:53

Но никто не запрещает сделать это же на постоянной основе.

При написании этой пародии на статью использовались материалы:

http://help.ubuntu.ru/wiki/i2p
http://habrahabr.ru/post/122835/
пиво Scarecrow