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

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

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

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

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

Категории

Все категории
Loading categories
rathole — Легковесный и высокопроизводительный обратный прокси для обхода NAT, написанный на Rust. Альтернатива frp и ngrok. | Kitploit
Инструменты/GitHubGitHub/rathole-org/rathole
Утилиты общего назначенияСетевая безопасностьУтилиты и фреймворки
GitHubrathole-org/rathole

rathole

Легковесный и высокопроизводительный обратный прокси для обхода NAT, написанный на Rust. Альтернатива frp и ngrok.

Репозиторий
14.0k804271 месяц назадПроверено Kitploit

Популярное

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

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

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

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

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

rathole

rathole-logo

GitHub stars GitHub release (latest SemVer) GitHub Workflow Status (branch) GitHub all releases Docker Pulls Join the chat at https://gitter.im/rapiz1/rathole

Английский | 简体中文

Безопасный, стабильный и высокопроизводительный обратный прокси для обхода NAT, написанный на Rust

rathole, как и frp и ngrok, помогает предоставить доступ к сервису на устройстве за NAT через сервер с публичным IP.

  • rathole
    • Возможности
    • Быстрый старт
    • Конфигурация
      • Логирование
      • Настройка
    • Бенчмарк
    • Планы

Возможности

  • Высокая производительность Значительно более высокая пропускная способность, чем у frp, и более стабильная работа при большом количестве соединений. См. Бенчмарк
  • Низкое потребление ресурсов Потребляет значительно меньше памяти, чем аналоги. См. Бенчмарк. Бинарный файл может быть всего ~500 КБ для соответствия ограничениям устройств, таких как встраиваемые устройства, например, маршрутизаторы.
  • Безопасность Токены сервисов обязательны и индивидуальны для каждого сервиса. Сервер и клиенты отвечают за свои собственные конфигурации. С помощью опционального Noise Protocol шифрование можно настроить легко. Не нужно создавать самоподписанный сертификат! Также поддерживается TLS.
  • Горячая перезагрузка Сервисы могут добавляться или удаляться динамически с помощью горячей перезагрузки конфигурационного файла. HTTP API в разработке.

Быстрый старт

Полнофункциональный rathole можно получить на странице релизов. Или собрать из исходников для других платформ и минимизации бинарного файла. Также доступен Docker-образ.

Использование rathole очень похоже на frp. Если у вас есть опыт работы с последним, то конфигурация будет очень простой. Единственное отличие в том, что конфигурация сервиса разделена на клиентскую и серверную части, и токен обязателен.

Для использования rathole вам нужен сервер с публичным IP и устройство за NAT, на котором работают сервисы, которые нужно предоставить в Интернет.

Предположим, у вас есть NAS дома за NAT, и вы хотите предоставить его SSH-сервис в Интернет:

  1. На сервере с публичным IP

Создайте server.toml со следующим содержимым и адаптируйте его под свои нужды.

# server.toml
[server]
bind_addr = "0.0.0.0:2333" # `2333` указывает порт, на котором rathole слушает клиентов

[server.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # Токен для аутентификации клиента для этого сервиса. Измените на произвольное значение.
bind_addr = "0.0.0.0:5202" # `5202` указывает порт, который открывает `my_nas_ssh` в Интернет

Затем выполните:

./rathole server.toml
  1. На хосте за NAT (ваш NAS)

Создайте client.toml со следующим содержимым и адаптируйте его под свои нужды.

# client.toml
[client]
remote_addr = "myserver.com:2333" # Адрес сервера. Порт должен совпадать с портом в `server.bind_addr`

[client.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # Должен совпадать с серверным для прохождения проверки
local_addr = "127.0.0.1:22" # Адрес сервиса, который нужно перенаправлять

Затем выполните:

./rathole client.toml
  1. Теперь клиент попытается подключиться к серверу myserver.com на порту 2333, и любой трафик на myserver.com:5202 будет перенаправлен на порт клиента 22.

Таким образом, вы можете выполнить ssh myserver.com:5202, чтобы подключиться по SSH к вашему NAS.

Чтобы запустить rathole как фоновый сервис в Linux, обратитесь к примерам systemd.

Конфигурация

rathole может автоматически определить режим работы (серверный или клиентский) в зависимости от содержимого конфигурационного файла, если присутствует только один из блоков [server] или [client], как в примере из Быстрого старта.

Но блоки [client] и [server] также можно поместить в один файл. Тогда на стороне сервера выполните rathole --server config.toml, а на стороне клиента — rathole --client config.toml, чтобы явно указать rathole режим работы.

Прежде чем перейти к полной спецификации конфигурации, рекомендуется просмотреть примеры конфигурации, чтобы ознакомиться с форматом.

См. Transport для получения дополнительных сведений о шифровании и блоке transport.

Вот полная спецификация конфигурации:

[client]
remote_addr = "example.com:2333" # Обязательно. Адрес сервера
default_token = "default_token_if_not_specify" # Опционально. Токен по умолчанию для сервисов, если они не определяют свои собственные
heartbeat_timeout = 40 # Опционально. Установите 0, чтобы отключить проверку heartbeat на уровне приложения. Значение должно быть больше, чем `server.heartbeat_interval`. По умолчанию: 40 секунд
retry_interval = 1 # Опционально. Интервал между повторными попытками подключения к серверу. По умолчанию: 1 секунда

[client.transport] # Весь блок опционален. Указывает, какой транспорт использовать
type = "tcp" # Опционально. Возможные значения: ["tcp", "tls", "noise"]. По умолчанию: "tcp"

[client.transport.tcp] # Опционально. Также влияет на `noise` и `tls`
proxy = "socks5://user:[email protected]:1080" # Опционально. Прокси для подключения к серверу. Поддерживается `http` и `socks5`.
nodelay = true # Опционально. Определяет, включать ли TCP_NODELAY (если применимо) для уменьшения задержки, но снижения пропускной способности. По умолчанию: true
keepalive_secs = 20 # Опционально. Указывает `tcp_keepalive_time` из `tcp(7)`, если применимо. По умолчанию: 20 секунд
keepalive_interval = 8 # Опционально. Указывает `tcp_keepalive_intvl` из `tcp(7)`, если применимо. По умолчанию: 8 секунд

[client.transport.tls] # Необходимо, если `type` равен "tls"
trusted_root = "ca.pem" # Обязательно. Сертификат CA, подписавшего сертификат сервера
hostname = "example.com" # Опционально. Имя хоста, которое клиент использует для проверки сертификата. Если не задано, используется `client.remote_addr`

[client.transport.noise] # Протокол Noise. См. `docs/transport.md` для объяснения
pattern = "Noise_NK_25519_ChaChaPoly_BLAKE2s" # Опционально. Значение по умолчанию, как показано
local_private_key = "key_encoded_in_base64" # Опционально
remote_public_key = "key_encoded_in_base64" # Опционально

[client.transport.websocket] # Необходимо, если `type` равен "websocket"
tls = true # Если `true`, то используются настройки из `client.transport.tls`
Скачать инструмент