VPN-адаптер для Tor и I2P, позволяющий маршрутизировать IPv6-трафик через анонимные сети
Универсальная платформа для построения прокси-туннелей следующего поколения. Поддерживает десятки протоколов в одном бинарнике: VLESS+Reality, VMess, Trojan, …
Мощный фреймворк для построения собственных прокси-сетей. Поддерживает множество протоколов (VMess, VLESS, Trojan) и может маскировать трафик …
Windows-утилита для обхода DPI — самый простой вход в тему: один exe, запустил и работает. Обрабатывает …
Высокоскоростной прокси на базе QUIC (UDP), маскирующийся под HTTP/3-трафик. Обходит DPI, которые блокируют TCP-туннели, потому что …
git clone https://github.com/rahra/onioncat.git cd onioncat ./configure make sudo make install
ocat, 2023-10-25
служб.
ocat -i onion_id (1st form)
ocat -o IPv6_address (2nd form)
ocat [OPTION] onion_id (3rd form)
ocat -R [OPTION] (4th form)
ocat -I [OPTION] i2p_id (5th form)
OnionCat создаёт прозрачный IPv6 слой поверх скрытых служб Tor или туннелей I2P. Он передаёт любые IP-данные прозрачно через сеть Tor/I2P на основе скрытого местоположения. Можно представить это как peer-to-peer VPN между скрытыми службами.
OnionCat — это автономное приложение, работающее в пользовательском пространстве, и являющееся соединителем между Tor/I2P и локальной ОС. Может передаваться любой протокол, основанный на IP. Конечно, UDP и TCP (и, вероятно, ICMP) — самые важные из них, но все остальные протоколы также могут быть перенаправлены через него.
OnionCat открывает TUN-устройство и назначает ему IPv6-адрес. Все пакеты, переданные ядром в TUN-устройство, OnionCat перенаправляет другим OnionCat, слушающим порты скрытых служб Tor или серверные туннели I2P. IPv6-адрес зависит от onion_id или, соответственно, i2p_id. onion_id — это имя хоста локально настроенной скрытой службы (см. tor(8)). В зависимости от конфигурации Tor onion_id обычно можно найти в /var/lib/tor/hidden_service/hostname или в похожем месте. i2p_id — это 80-битное имя хоста серверного туннеля I2P, закодированное в Base32.
У OnionCat реализованы два loopback-реагента для упрощения отладки сети. Ответы на ping от loopback-адреса fd87:d87e:eb43::dead:beef указывают на корректную настройку сети между ядром и OnionCat. Ответы на ping от fd87:d87e:eb43::feed:beef указывают на то, что соединение между OnionCat и самим Tor работает, скрытая служба правильно настроена и включена.
Ниже приведено описание всех параметров. Обычно вам не понадобятся никакие из них, кроме указания хостнейма .onion вашего OnionCat. В зависимости от вашей настройки вы можете использовать параметры -g и -A.
Запустить OnionCat на переднем плане. По умолчанию OnionCat ведёт логи в stderr.
* -C
Отключить локальный интерфейс контроллера. Интерфейс контроллера слушает
localhost (127.0.0.1 и ::1 порт 8066) для входящих соединений. В настоящее время
он используется для отладки, не является потокобезопасным и не имеет никакого
механизма аутентификации или авторизации. Поэтому его не следует использовать
в продакшн-окружениях.
* -d n
Установить уровень отладки в n. По умолчанию = 7, что является максимумом. Отладочный вывод
будет создан только если OnionCat был скомпилирован с опцией DEBUG (т.е. configure
был запущен с опцией --enable-debug).
* -D
Отключить DNS-поиск OnionCat. Если OnionCat должен установить исходящее соединение,
но подходящая запись не найдена во внутренней БД хостов, OnionCat выполнит
DNS-запрос к хостам, найденным во внутренней БД хостов. Эта опция отключает
эту функцию.
Поиск имён хостов включён по умолчанию начиная с OnionCat4.
* -e ifup
Выполнить скрипт ifup для поднятия туннельного интерфейса.
OnionCat создаст новый туннельный интерфейс и сразу после открытия
сетевого интерфейса выполнит ifup. Это предназначено как универсальный интерфейс
для настройки туннельного устройства и выполнения дополнительных задач при запуске
OnionCat. Скрипт выполняется с теми же привилегиями, с которыми запущен OnionCat,
т.е. до сброса привилегий. Обычно это root. Скрипт запускается только один раз
при старте.
См. ниже в разделе EXAMPLES типичный Linux-скрипт оболочки ifup.
OnionCat выполняет файл ifup с вызовом execlp(3) и передаст следующие переменные окружения:
OCAT_IFNAME
Эта переменная содержит имя сетевого интерфейса, например "tun0".
OCAT_ADDRESS
Эта переменная содержит IPv6-адрес, ассоциированный с этим экземпляром
OnionCat и его адресом скрытого сервиса.
OCAT_PREFIXLEN
Эта переменная содержит длину префикса IPv6-префикса, который обычно
равен 48.
OCAT_PREFIX
Эта переменная содержит IPv6-префикс, т.е. сеть. Обычно это
fd87:d87e:eb43:: в режиме OnionCat (Tor) и fd60:db4d:ddb5:: в режиме GarliCat
(I2P).
OCAT_ONION_URL
Эта переменная содержит короткий onion-URL без доменного суффикса. Это
строка длиной 16 символов.
OCAT_ONION3_URL
Эта переменная содержит длинный onion-URL, если он доступен, что всегда верно для
I2P и в случае Tor используется вместе с вариантом HSv3.
OCAT_DOMAIN
Эта переменная содержит суффикс TLD, который равен .onion для Tor и .b32.i2p
для I2P.
Обычно OnionCat открывает TUN-устройство, которое является интерфейсом 3-го уровня. С опцией -p OnionCat вместо этого открывает TAP-устройство, которое является виртуальным Ethernet-интерфейсом (2-го уровня).
Типичный скрипт ifup для OnionCat для современного дистрибутива Linux, использующего команду `ip` для настройки сетевых параметров, может выглядеть следующим образом:
.in +3n #!/bin/sh
ip address add $OCAT_ADDRESS/$OCAT_PREFIXLEN dev $OCAT_IFNAME
ip link set $OCAT_IFNAME up
Для подробного объяснения взаимодействия между OnionCat4 и HSv3 обратитесь к документу doc/INTRO_TO_ONIONCAT4.txt, находящемуся в исходной папке или на GitHub по адресу https://github.com/rahra/onioncat/blob/master/doc/INTRO_TO_ONIONCAT4.txt .
Изначально адреса скрытых сервисов Tor v2 имели бинарную длину 80 бит. Это позволяло OnionCat отображать адреса скрытых сервисов в IPv6-адреса и наоборот. Разработка OnionCat началась в 2008 году, и это работало очень долго, пока недавно Tor не выпустила версию 3 скрытых сервисов. Для соответствия текущим разработкам в области криптографии новые адреса скрытых сервисов Tor (начиная с версии 0.3.2) стали намного больше, а именно 336 бит. Это очевидно не помещается в IPv6-адрес, поэтому OnionCat больше не может переводить обратно и вперед между IPv6 и v3-адресами лука.
В качестве решения OnionCat предлагает возможность внешнего поиска имени хоста в /etc/hosts. Обратите внимание, что по соображениям безопасности OnionCat не использует системный резолвер, он определенно только читает локальный файл hosts. Крупный недостаток для OnionCat заключается в том, что с v3 скрытыми сервисами OnionCat больше не работает «из коробки». Требуется, чтобы назначения были настроены вручную заранее.
Для подключения к v3 скрытому сервису, на стороне клиента добавьте строку в ваш /etc/hosts с IPv6-адресом и v3-хостнеймом и запустите OnionCat с дополнительной опцией -H. Запись в hosts может выглядеть так (в одну строку!):
fd87:d87e:eb43:45g6:3bbb:9fxf:5877:4319 tulqpcvf7Oeuxzjod6odrpO77ryujc7o0g7kw6c76q9cbnbi7rqskxid.onion
Если у этого клиента также есть v3 скрытый сервис, вы должны внести его пару IPv6/хостнейм в файл hosts на противоположной стороне тоже, за исключением случая, когда вы используете опцию -U.
Обратите внимание, что в этом случае можно выбрать любой IPv6-адрес, хотя я предлагаю обрезать длинное имя хоста только до последних 16 символов для использования с OnionCat, например, обрезать "tulqpcvf7Oeuxzjod6odrpO77ryujc7o0g7kw6c76q9cbnbi7rqskxid.onion" до "6q9cbnbi7rqskxid.onion" и использовать его как параметр для OnionCat.
В версиях OnionCat до 0.3.7 создавался симлинк с именем gcat. OnionCat внутренне обрабатывал это как GarliCat, что равносильно запуску ocat с опцией -I. Симлинк был удалён из-за конфликта имен с другим бинарным файлом (см. BSD coreutils).
Настройки по умолчанию изменились начиная с OnionCat4 (версии >= 0.4.0). На самом деле поиск в hosts теперь включён по умолчанию, а смысл опции -H был инвертирован. Это потому, что OnionCat4 специально настроен для лучшего соответствия требованиям скрытых сервисов Tor V3.
$HOME/.ocat/connect_log
Концепции, программное обеспечение и страница руководства написаны Бернхардом Р. Фишером <bf@abenteuerland.at>.
Благодарности Фердинанду Хазельбахеру, Даниэлю Хозлингеру, Виму Гаэтофсу, Marshalbanana, всем мейнтейнерам пакетов нескольких дистрибутивов Linux и BSD, а также многим другим, кто внес вклад и сообщал об ошибках.
Исходный код Onioncat https://github.com/rahra/onioncat Дополнительную документацию и инструкции можно найти по адресу https://github.com/rahra/onioncat/tree/master/doc
Исходные пакеты OnionCat также доступны по адресу https://www.abenteuerland.at/ocat/download/Source/
Домашняя страница проекта Tor https://www.torproject.org/
Домашняя страница проекта I2P https://geti2p.net/
Copyright 2008-2023 Bernhard R. Fischer.
Этот файл является частью OnionCat.
OnionCat — это свободное программное обеспечение: вы можете распространять его и/или изменять его на условиях GNU General Public License, опубликованной Free Software Foundation, версии 3 лицензии.
OnionCat распространяется в надежде, что он будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. Подробнее см. в GNU General Public License.
Вы должны были получить копию GNU General Public License вместе с OnionCat. Если нет, см. http://www.gnu.org/licenses/.