Прозрачное проксирование в I2P и Tor

    Всем привет!
    Захотелось мне установить кеширующий прокси на основе Polipo, ну и заодно настроить прозрачное проксирование i2p и Tor. Из всех сервисов, которые есть в этих анонимных сетях(почта, торренты и прочее) я использую только веб, так что, скорее всего, вы не сможете использовать сервисы, которые используют не http протокол, если последуете по этой инструкции.
    Есть у меня домашний сервер на Debian, который раздает интернет. Использовал TinyProxy в качестве распределителя на основе доменов, два демона polipo — один для кеширования интернета, второй для(в большей степени) преобразования socks5 в http прокси, чтобы прописать ее в TinyProxy, ну еще и кеширует Tor трафик отдельно; dnsmasq для резолва адресов .i2p и .onion(он у меня и до этого использовался и для DNS, и для DHCP).
    Будем считать, что I2P и Tor уже настроены и работают.

                    I2P (4444)
                    /
    LAN port — TinyProxy (8888) — Polipo-WAN (8123)
                    \
                    Polipo-Tor (8124) — Tor (9050)


    Начнем!


    dnsmasq

    Для начала, настроим dnsmasq, чтобы браузер смог получить какой-нибудь несуществующий ip для .i2p и .onion доменов
    Отрывок из /etc/dnsmasq.conf:
    address=/.i2p/192.168.99.99
    address=/.onion/192.168.99.99


    TinyProxy

    Теперь настроим TinyProxy. В этом сервере правила upstream выполняются по принципу «последнее — главное», так что если мы поставим апстрим для интернета после апстримов для .i2p и .onion, ничего работать не будет.
    Отрывок из /etc/tinyproxy.conf:
    upstream 127.0.0.1:8123
    upstream 127.0.0.1:4444 ".i2p"
    upstream 127.0.0.1:8124 ".onion"


    Polipo

    Здесь все просто. Polipo для WAN настраиваем по вкусу, а в Polipo для Tor все то же самое, только еще добавляем строки:
    socksParentProxy = "localhost:9050"
    socksProxyType = socks5


    iptables

    Наверное, самая важная часть. Без нее не заработает. Выполняем команду:
    sudo iptables -t nat -I PREROUTING -i _LANETH_ -d ! 192.168.4.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8888

    Где _LANETH_ — сетевой интерфейс локалки, а 192.168.4.0/24 — ваша локальная подсеть.

    Вот, собственно, и все! Вы можете ходить по .i2p и .onion сайтам без дополнительных настроек браузера с любого устройства.
    Share post

    Similar posts

    Comments 18

      +4
      > Вот, собственно, и все! Вы можете ходить по .i2p и .orion сайтам без дополнительных настроек браузера с любого устройства.
      А вот так делать не рекомендуется, так как при переходе с .i2p на обычные адреса по ссылке передаётся Referrer, что может раскрыть вас как пользователя i2p.
      • UFO just landed and posted this here
          +4
          Ник у вас подходящий)
          • UFO just landed and posted this here
            0
            Причём, это всё вроде бы описано в документации по этому самому i2p, просто нужно читать внимательно =)
            • UFO just landed and posted this here
              0
              Надо просто поставить haproxy вместо tinyproxy и резать все кроме Host и запроса как-такового.
              Ну или самому на питоне накалякать с использованием gevent, чтобы быстро работало.
                +1
                TinyProxy тоже это все умеет, просто я не особо посещаю незнакомые сайты в i2p, а захожу на определенные.
          • UFO just landed and posted this here
              +2
              Очень плохо так делать. Если кто-то вставит на скрытосайт картинку из внешних интернетов, то он узнает ваш настоящий IP.
                0
                В принципе, верно, надо просто понимать, что в данном случае обеспечен доступ, но не анонимность.

                Прозрачное проксирование в Tor на роутере тоже, наверное, интересно будет сделать. Пакеты нужно заворачивать в SOCKS, плюс, DNS как–то сделать. DNS через Tor вобоще работает?
                0
                А если я подключаюсь к своему VPS через VPN, то как нужно настроить iptables, чтобы выходить в i2p (он установлен и запущен на VPS'е)?
                  0
                  Настроил так на своём роутере… Хорошо, у меня роутер мощный. Двухядерный процессор только и спасает — i2p выжирает ядро полностью. Ява, чтоли, тому причиной…
                    0
                    У меня тоже самое, больше всего это похоже на баг в последних версиях то ли i2p то ли Java, ибо сначала нагрузка не очень большая, а спустя время выжирает одно ядро и чуть более (15% примерно), при этом в качестве «роутера» у меня, мягко говоря, мощная железка с Intel e3-1240 :( Сама скрытосеть при этом не тормозит сильнее чем обычно, в общем очень странная и не приятная штука.
                      0
                      Никакого бага. Ваш I2P-роутер превращается в floodfill.
                        0
                        Благодарю, так вот оно в чём дело, жалко что нет при этом никакой индикации режима работы, а то я уже по незнанию переставлять роутер и жабу собирался :)
                          0
                          И всё таки это был баг :) в 0.9.19 пофиксили:
                          Изменения

                          Floodfill performance improvements


                          Исправлены ошибки

                          Fixes for high CPU usage in floodfills

                      0
                      Правильная команда будет выглядеть так:
                      sudo iptables -t nat -I PREROUTING -i _LANETH_ ! -d 192.168.4.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8888

                      т.е.! ставится перед -d 192.168.4.0/24, а не перед самим адресом

                      [!] -d, --destination address[/mask][,...]
                      ipset.netfilter.org/iptables.man.html

                      Only users with full accounts can post comments. Log in, please.