Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bore — Простой TCP-туннель на Rust, который открывает доступ к локальным портам через удалённый сервер, обходя NAT-фаерволы. Лёгкий, самостоятельно развёртываемый и простой в установке. | Kitploit
Инструменты/GitHubGitHub/ekzhang/bore
Утилиты общего назначенияСетевая безопасность
GitHubekzhang/bore

bore

Простой TCP-туннель на Rust, который открывает доступ к локальным портам через удалённый сервер, обходя NAT-фаерволы. Лёгкий, самостоятельно развёртываемый и простой в установке.

РепозиторийСайт
11.4k5146 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

bore

Build status Crates.io

Современный, простой TCP-туннель на Rust, который открывает локальные порты на удаленный сервер, обходя стандартные межсетевые экраны NAT. Это всё, что он делает: ни больше, ни меньше.

Video demo

root@kitploit:~
# Installation (requires Rust, see alternatives below)
cargo install bore-cli

# On your local machine
bore local 8000 --to bore.pub

Это откроет ваш локальный порт localhost:8000 в публичный интернет по адресу bore.pub:<PORT>, где номер порта назначается случайным образом.

Аналогично localtunnel и ngrok, за исключением того, что bore задуман как высокоэффективный, непредвзятый инструмент для пересылки TCP-трафика, который прост в установке и лёгок в самостоятельном хостинге, без лишних наворотов.

(bore состоит примерно из 400 строк безопасного асинхронного кода на Rust и его настройка тривиальна — просто запустите один бинарный файл для клиента и сервера.)

Установка

macOS

bore packaged as a Homebrew core formula.

root@kitploit:~
brew install bore-cli

Linux

Arch Linux

bore доступен в AUR как bore.

root@kitploit:~
yay -S bore # or your favorite AUR helper

Gentoo Linux

bore доступен в оверлее gentoo-zh.

root@kitploit:~
sudo eselect repository enable gentoo-zh
sudo emerge --sync gentoo-zh
sudo emerge net-proxy/bore

Распространение в виде бинарных файлов

В противном случае самый простой способ установить bore — использовать готовые бинарные сборки. Они доступны на странице релизов для macOS, Windows и Linux. Просто распакуйте соответствующий файл для вашей платформы и переместите исполняемый файл bore в папку из вашего PATH.

Cargo

Вы также можете собрать bore из исходников с помощью Cargo, менеджера пакетов Rust. Эта команда устанавливает бинарный файл bore в доступную пользователю директорию.

root@kitploit:~
cargo install bore-cli

Docker

Мы также публикуем версионированные Docker-образы для каждого релиза. Образ собран для 64-битной архитектуры AMD. Они помечены конкретной версией и позволяют запускать статически слинкованный бинарный файл bore из минимального контейнера "scratch".

root@kitploit:~
docker run -it --init --rm --network host ekzhang/bore <ARGS>

Подробное использование

В этом разделе описывается подробное использование CLI-команды bore.

Локальная пересылка

Вы можете переслать порт на вашей локальной машине с помощью команды bore local. Она принимает позиционный аргумент — локальный порт для пересылки, а также обязательный параметр --to, который указывает адрес удаленного сервера.

root@kitploit:~
bore local 5000 --to bore.pub

Вы можете по желанию передать параметр --port, чтобы выбрать конкретный порт на удаленной стороне, хотя команда завершится ошибкой, если этот порт занят. Также параметр --local-host позволяет открыть другой хост в вашей локальной сети, кроме адреса loopback localhost.

Полный список параметров приведен ниже.

root@kitploit:~
Starts a local proxy to the remote server

Usage: bore local [OPTIONS] --to <TO> <LOCAL_PORT>

Arguments:
  <LOCAL_PORT>  The local port to expose [env: BORE_LOCAL_PORT=]

Options:
  -l, --local-host <HOST>  The local host to expose [default: localhost]
  -t, --to <TO>            Address of the remote server to expose local ports to [env: BORE_SERVER=]
  -p, --port <PORT>        Optional port on the remote server to select [default: 0]
  -s, --secret <SECRET>    Optional secret for authentication [env: BORE_SECRET]
  -h, --help               Print help

Самостоятельный хостинг

Как упоминалось в инструкции по запуску, существует публичный экземпляр сервера bore, работающий на bore.pub. Однако, если вы хотите разместить bore на своей собственной сети, вы можете сделать это с помощью следующей команды:

root@kitploit:~
bore server

Вот и всё! После того как сервер запустится по заданному адресу, вы можете обновить команду bore local, указав параметр --to <ADDRESS>, чтобы переслать локальный порт на этот удаленный сервер.

Можно указать разные IP-адреса для управляющего сервера и для туннелей. Такая настройка полезна в случаях, когда вы хотите, чтобы управляющий сервер находился в частной сети, а туннельные соединения были разрешены через публичный интерфейс, или наоборот.

Полный список параметров команды bore server приведен ниже.

root@kitploit:~
Runs the remote proxy server

Usage: bore server [OPTIONS]

Options:
      --min-port <MIN_PORT>          Minimum accepted TCP port number [env: BORE_MIN_PORT=] [default: 1024]
      --max-port <MAX_PORT>          Maximum accepted TCP port number [env: BORE_MAX_PORT=] [default: 65535]
  -s, --secret <SECRET>              Optional secret for authentication [env: BORE_SECRET]
      --bind-addr <BIND_ADDR>        IP address to bind to, clients must reach this [default: 0.0.0.0]
      --bind-tunnels <BIND_TUNNELS>  IP address where tunnels will listen on, defaults to --bind-addr
  -h, --help                         Print help

Протокол

Существует неявный управляющий порт на 7835, используемый для создания новых соединений по требованию. При инициализации клиент отправляет серверу сообщение "Hello" через управляющий TCP-порт, запрашивая проксирование выбранного удаленного порта. Сервер отвечает подтверждением и начинает прослушивание внешних TCP-соединений.

Всякий раз, когда сервер получает соединение на удаленном порту, он генерирует безопасный UUID для этого соединения и отправляет его обратно клиенту. Клиент затем открывает отдельный TCP-поток к серверу и отправляет сообщение "Accept", содержащее UUID, в этом потоке. После этого сервер проксирует два соединения друг к другу.

Из соображений корректности и во избежание утечек памяти входящие соединения хранятся сервером не более 10 секунд, прежде чем будут отброшены, если клиент их не принимает.

Аутентификация

В пользовательском развертывании bore server вы можете по желанию потребовать секрет, чтобы предотвратить использование сервера другими. Протокол требует от клиентов подтверждать владение секретом при каждом TCP-соединении, отвечая на случайные вызовы в виде HMAC-кодов. (Этот секрет используется только для начального рукопожатия; дальнейший трафик по умолчанию не шифруется.)

root@kitploit:~
# on the server
bore server --secret my_secret_string

# on the client
bore local <LOCAL_PORT> --to <TO> --secret my_secret_string

Если секрет не указан в аргументах, bore также попытается прочитать его из переменной окружения BORE_SECRET.

Благодарности

Создано Эриком Чжаном (@ekzhang1). Лицензировано под лицензией MIT.

Автор благодарит участников и мейнтейнеров проекта Tokio за возможность писать эргономичные и эффективные сетевые сервисы на Rust.

Скачать инструмент