OnionCat

Anonymizers v4.11.0 · 09.03.2023 активный

VPN-адаптер для Tor и I2P, позволяющий маршрутизировать IPv6-трафик через анонимные сети

v4.11.0
09.03.2023 current

Установка
git clone https://github.com/rahra/onioncat.git
cd onioncat
./configure
make
sudo make install
показать оригинал переведено ИИ

ocat(1) - OnionCat создаёт прозрачный IPv6 слой поверх скрытых служб Tor или I2P

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.

  • -2
    Этот параметр существует только для простоты. С этим параметром OnionCat ведёт себя как OnionCat3 (версия < 0.4.0). На самом деле это краткая форма использования параметров -D -H -S.
  • -4
    Включает IPv4-переадресацию. См. http://www.cypherpunk.at/onioncat_trac/wiki/IPv4
    IPv4-через-IPv6 туннель через OnionCat рекомендуется вместо использования нативной IPv4-переадресации.
  • -5 'socks5'|'direct'
    У этого параметра обязательный аргумент, который буквально должен быть либо socks5, либо direct.
    По умолчанию OnionCat использует SOCKS4A (версия 4a) для подключения к прокси-серверу анонимизирующей сети (например, Tor). С этим параметром, установленным в socks5, OnionCat использует SOCKS5 (версия 5, как указано в RFC1928), пока без механизма аутентификации. На сегодняшний день это фактически не имеет разницы, но может стать желательным в будущем.
    Если используется direct, OnionCat не подключается через SOCKS-сервер, а вместо этого подключается напрямую к удалённым пирам, используя механизм поиска хостов (см. параметр -H).
    Эта функция экспериментальна и превращает OnionCat в распределённый виртуальный коммутатор на базе обычного интернет-транспорта вместо Tor. Это полезная функция для лабораторной настройки.
    Этот параметр также отключает валидацию удалённого хостнейма (параметр -J).
    Обратите внимание, что OnionCat не реализует никаких техник шифрования! Это простое туннелирование через TCP-сессии.
  • -a
    OnionCat создаёт файл журнала в $HOME/.ocat/connect_log. Все входящие подключения записываются в этот файл. $HOME определяется от пользователя, от имени которого запускается OnionCat (см. параметр -u).
  • -A [ipv6/]hostname
    Этот параметр позволяет добавить пару IP-адрес/хостнейм во внутреннюю базу хостов. Обычно достаточно указать только хостнейм .onion, так как IPv6-адрес выводится из хостнейма. Добавление IP-адреса либо избыточно, либо может использоваться в особых сценариях, где IPv6-адрес отличается от своего исходного адреса. Последнее будет работать только в закрытой среде и не будет совместимо с другими OnionCat в дикой природе, потому что по умолчанию имена и IPs проверяются на корректность.
    Этот параметр может указываться многократно.
    Альтернативно вы можете поместить пары IP/хостнейм в файл хостов OnionCat (см. параметр -g).
  • -b
    Запускает OnionCat в фоновом режиме. Это поведение по умолчанию. OnionCat отсоединится от запущенной оболочки и закроет стандартный ввод-вывод, если файл журнала не задан параметром -L.
  • -B

Запустить 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.

  • -E s
    Эта опция устанавливает время истечения в секундах для удалённых записей во внутренней БД хостов.
    Если TTL записи истекает, OnionCat попытается обновить запись, подключившись к удалённому OnionCat для получения нового keepalive. Если он недоступен, будет повторная попытка через некоторое время. Если он был недоступен более чем s секунд, запись будет удалена из внутренней БД хостов.
    Время истечения по умолчанию составляет 604800 секунд, что равно 7 дням.
  • -f файл конфигурации
    Прочитать начальную конфигурацию из файла конфигурации.
  • -g путь_к_хостам
    Установить путь к файлу хостов. Эта опция автоматически включает опцию -H (см. там). Если -g не задан, путь по умолчанию равен SYSCONFDIR/tor/onioncat.hosts, где SYSCONFDIR обычно /etc или /usr/local/etc.
    При выходе OnionCat сохраняет все собранные записи хостов в DATADIR/onioncat/hosts.cached. Этот файл автоматически подгружается снова при следующем запуске. Записи также сохраняются регулярно каждые 5 минут. Это делается только если внутренняя БД хостов была изменена, т.е. если за период с последнего сохранения были собраны новые записи, чтобы избежать лишнего взаимодействия с хранилищем. Обратите внимание, что если вы вручную удалите файл из командной строки, он не будет воссоздан, если после этого не было собрано новых записей.
  • -H
    Эта опция отключает обратный поиск хостов во внутренней БД хостов. Поиск хостов необходим для скрытых сервисов Tor V3, а также для I2P. Таким образом, отключение функции поиска с использованием этой опции имеет смысл только при использовании скрытых сервисов Tor V2.
    Обратные поиски включены по умолчанию начиная с OnionCat4.
  • -h
    Показать краткое сообщение об использовании и опциях.
  • -i
    Преобразовать onion_id в IPv6-адрес и выйти.
  • -I
    Запустить OnionCat в режиме GarliCat (I2P).
  • -J Отключение проверки удалённых имён хостов. OnionCat способен получать удалённые имена хостов из сообщений keepalive и DNS-запросов. OnionCat проверяет, «имеют ли смысл» эти имена, то есть проверяет, является ли имя валидным onion-именем, и проверяет, преобразуется ли имя в правильный IP-адрес.
    Проверка имён хостов включена по умолчанию.
    Это функция безопасности. Вредоносные OnionCat'ы могут отправлять специально созданные keepalive-сообщения или DNS-ответы, которые могут обмануть OnionCat, заставив его подключиться куда-то ещё вне сети Tor или к подделанному скрытому сервису.
  • -l [ip:]порт
    Привязывает OnionCat к конкретному ip и/или номеру порта для входящих соединений. По умолчанию — 127.0.0.1:8060. Эта опция может указываться несколько раз. IPv6-адреса должны задаваться в квадратных скобках.
    Параметр "none" полностью отключает слушатель. Это предназначено для специальных целей и не должно использоваться в обычной работе.
  • -L файл_лога
    Выводит логи в файл_лога. Если опция опущена, OnionCat логирует в syslog при работе в фоне или в stderr при работе на переднем плане. Если нужен syslog при работе на переднем плане, укажите специальное имя файла "syslog" как файл лога.
  • -o IPv6-адрес
    Преобразует IPv6-адрес в onion_id и завершает программу.
  • -p
    Использует TAP-устройство вместо TUN-устройства. Есть несколько отличий. См. раздел TAP DEVICE ниже.
  • -P [pid-файл]
    Создаёт pid-файл по пути pid-файл. Если параметр опущен, OnionCat создаёт pid-файл в /var/run/ocat.pid. В последнем случае эта опция не должна быть последней в списке опций, либо список опций должен завершаться "--".
  • -r
    Запускает OnionCat от root и не меняет user id (см. опцию -u).
  • -R
    Используйте эту опцию только если вы точно знаете, что делаете! OnionCat генерирует случайный локальный onion_id. С этой опцией не нужно добавлять скрытый сервис в файл конфигурации Tor torrc. Можно использовать сервисы OnionCat внутри Tor как обычно, но НЕВОЗМОЖНО принимать входящие соединения. Если вы планируете также принимать соединения (например, потому что предоставляете сервис или используете ПО, открывающее сокеты для входящих соединений, как BitTorrent), вы ДОЛЖНЫ настроить скрытый сервис и передать его хостнейм OnionCat в командной строке.
    Обратите внимание: эта опция работает только если удалённый OnionCat НЕ работает в однонаправленном режиме, который является режимом по умолчанию начиная с SVN версии 555 (см. опцию -U).
    Поэтому обычно вы не будете использовать эту опцию.
  • -S
    OnionCat запускает лёгкий DNS-сервис для ответа на DNS-запросы от других OnionCat'ов (см. также опцию -D). Эта опция отключает этот DNS-сервис. Он отвечает только на обратные запросы в префиксе Tor (FD87:D87E:EB43::/48) или I2P (FD60:DB4D:DDB5::/48).
    Служба имён включена по умолчанию.
  • -s порт
    Устанавливает виртуальный порт скрытого сервиса OnionCat в порт. Обычно его менять не нужно.
  • -t (IP|[IP:]порт)
    Задаёт IP и/или порт Tor SOCKS. Если IP не указан, используется 127.0.0.1; если порт не указан, по умолчанию используется 9050. При компиляции под Windows с Cygwin используется 9150, так как это стандарт для Tor Browser Bundle. В режиме GarliCat по умолчанию — 9051.
    IPv6-адреса должны экранироваться квадратными скобками.
    Специальный параметр "none" отключает исходящие соединения OnionCat. Это следует использовать только в специальных тестовых сценариях.
  • -T tun-устройство
    Файл TUN-устройства для открытия и создания TUN-интерфейса. По умолчанию — /dev/net/tun в Linux и /dev/tun0 в большинстве других ОС, или /dev/tap0, если используется TAP-режим. Настройка TUN-устройства требует прав root. OnionCat автоматически меняет свой uid и gid после корректной настройки TUN-устройства.
  • -U
    Деактивирует однонаправленный режим. До SVN версии 555 OnionCat работал только в двунаправленном режиме. Это означает, что соединение с другим OC использовалось для исходящих и входящих пакетов. Поскольку это могло быть риском безопасности при определённых условиях, в SVN r555 был реализован однонаправленный режим и установлен по умолчанию. С этой опцией можно снова включить двунаправленный режим. Обратите внимание: однонаправленный режим не взаимодействует с опцией -R, если удалённый OC работает в однонаправленном режиме.
    Если опция -R не используется (обычный случай), однонаправленные и двунаправленные OnionCat'ы могут смешиваться. Обратите внимание, что единственным преимуществом двунаправленного режима является более низкое время настройки, поскольку ему требуется только одна цепочка Tor. Однонаправленный режим требует две цепочки, по одной для каждого направления.
  • -u username
    username, от имени которого должен запускаться OnionCat. UID меняется как можно быстрее после настройки tun-устройства. Если -u опущен, в OpenBSD и FreeBSD пытается использовать UID пользователя "_tor", который по умолчанию используется для Tor. Во всех остальных системах пытается получить UID для пользователя "tor". Если его не существует (вызывает getpwnam(3)), по умолчанию используется UID 65534.

TAP-УСТРОЙСТВО

Обычно 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

Onioncat и скрытые сервисы V3

Для подробного объяснения взаимодействия между 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/.

Войдите, чтобы оставить комментарий