Oxy is Cloudflare's Rust-based next generation proxy framework (2023)
Cloudflare представила Oxy - новый прокси-фреймворк, написанный на Rust, который служит основой для нескольких ключевых продуктов компании, включая Zero Trust Gateway и iCloud Private Relay. Разработанный с учетом опыта создания высоконагруженных прокси, Oxy позволяет реализовывать современные протоколы связи и строить сложные сервисы для обработки огромного трафика.
Фреймворк предоставляет программный контроль над всеми аспектами проксирования: от декапсуляции протоколов и анализа трафика до маршрутизации и DNS. Oxy тесно интегрирован с внутренней инфраструктурой Cloudflare, но при этом настраивается под нужды приложений. Инженеры могут начать с базового решения, которое не требует написания кода, и постепенно добавлять функции через расширяемые точки. Например, для создания HTTP-файрвола достаточно реализовать обработчики запросов и ответов, а для L4-файрвола - добавить аутентификацию или георouting.
Комментарии (69)
- Обсуждение в основном вращается вокруг негативного опыта с Cloudflare Tunnels и их IPv6-ограничений, а также сравнения с другими решениями вроде Tailscale и ngrok.
- Участники жалуются на плохую документацию, отсутствие прозрачности и "vendor lock-in" при использовании продуктов Cloudflare.
- Обсуждение также затрагивает вопросы лицензий, сравнение с другими решениями и влияние на разработчиков.
- Некоторые участники делятся личным опытом и альтернативными инструментами вроде localtunnel и Tailscale.
- В целом, обсуждение подчеркивает сложность выбора между удобством и контролем над инфраструктурой, особенно в контексте разработки ПО.
Iroh-blobs
Выпущен iroh-blobs 0.95 с несколькими значительными новыми функциями, главной из которых является пул соединений (util::connection_pool). Этот компонент оптимизирует работу с большим количеством конечных точек, сохраняя верхнюю границу одновременных соединений — критически важно при загрузке blobs из множества провайдеров. Пул через метод get_or_connect либо возвращает существующее соединение, либо создает новое, автоматически управляя временем жизни и закрывая простаивающие соединения по необходимости.
Доступны продвинутые опции настройки: максимальное количество соединений, таймауты подключения и простоя, а также колбэк on_connected для выполнения дополнительной логики перед выдачей соединения. Например, можно настраивать передачу только через прямые соединения для повышения производительности. Важно отметить, что пул возвращает ConnectionRef, а не Connection, для корректного отслеживания времени жизни — клонирование Connection из ConnectionRef нарушит этот механизм. После выпуска iroh 1.0 пул будет перемещен в отдельный крейт.
Комментарии (24)
- Iroh предоставляет P2P-соединения, но при разработке возникают проблемы с подключением к серверу, а Windows Defender блокирует бинарники, что делает невозможным безопасную поставку клиенту.
- Пользователи отмечают, что Iroh упрощает создание проектов, обеспечивает безопасную передачу данных и предоставляет гибкие возможности для хранения и синхронизации данных.
- Некоторые участники обсуждения сравнивают Iroh с другими инструментами, такими как Tailscale и vanadium, и задаются вопросом о различиях в использовании и функционале.
- Вопросы о версионировании, масштабируемости и производительности при использовании Iroh для хранения и синхронизации данных поднимаются в контексте обсуждения.
Magic Wormhole: Get things from one computer to another, safely 🔥 Горячее
Magic Wormhole позволяет безопасно передавать файлы и сетевые потоки между компьютерами напрямую или через ретранслятор. Для соединения используется одноразовый код из легко запоминаемых слов, который вводится на обоих концах. Это обеспечивает сквозное шифрование через протокол PAKE (SPAKE2), защищающий от перехвата даже при ретрансляции.
Система автоматически выбирает оптимальный метод подключения: прямое соединение в локальной сети, через публичный IP или ретранслятор при NAT. Помимо передачи файлов, инструмент поддерживает TCP-потоки, интеграцию с Git и совместные терминальные сессии. Реализации включают CLI, GUI для GNOME и мобильное приложение для Android.
Комментарии (95)
- Рекомендации инструментов для передачи файлов между устройствами: Wormhole William и Destiny для Android/iOS, croc (с поддержкой возобновления), localsend (с автоматическим обнаружением в LAN), PairDrop, Tailscale Funnel, Copyparty и другие.
- Обсуждение преимуществ Magic Wormhole: простота использования, безопасность (шифрование через SPAKE2), надежность даже за NAT, удобство для быстрой передачи больших файлов или настройки новых устройств.
- Критика и ограничения: отсутствие возобновления передачи в базовой версии, путаница из-за схожих названий инструментов, ограничения мобильных версий (размер файлов), необходимость ручного ввода кодов на телефонах.
- Технические детали: использование сервера-посредника (mailbox) для установления соединения, попытка прямого P2P-подключения с fallback на реле, обсуждение безопасности коротких паролей и роли сервера в защите от перебора.
- Альтернативы и сравнения: croc предпочтительнее для некоторых из-за скорости и возобновления, Syncthing для постоянной синхронизации, WireGuard для VPN, Web Wormhole для браузеров.
Website is hosted on a disposable vape
Веб-сервер на одноразовой вейпе
Сервер, с которого вы читаете этот текст, работает на микроконтроллере внутри одноразового вейпа.
Внутри — чип PUYA C642F15 (на деле PY32F002B): Cortex-M0+ 24 МГц, 24 КБ флеш, 3 КБ ОЗУ.
Для выхода в сеть используется старый протокол SLIP: pyOCD перенаправляет semihosting-вызовы в telnet, socat делает из этого виртуальный tty, slattach поднимает интерфейс sl0.
IP-стек — uIP 0.9, пришлось подправить выравнивание структур и чексуммы.
Файловая система упакована прямо во флеш; веб-страница, которую вы сейчас читаете, весит меньше 3 КБ.
Питание — от самого вейпа: 3,7 В, 550 мА·ч, хватает на сутки бесперебойной работы.
Скорость 115200 бод, latency < 20 мс — быстрее, чем модем 90-х.
Комментарии (83)
- Участники обсуждают «одноразовые» вейпы с USB-C и перезаряжаемой батареей: юридически их продают как «многоразовые», чтобы обойти запреты, хотя по факту выбрасываются после 1-3 циклов.
- Пост Богдана с анализом внутренностей вейпа (Cortex-M0+ за копейки) лёг от нагрузки, подняли зеркало на GitHub и копию в Wayback Machine.
- Шутки про «вейп-кластер» и «Android на вейпе» сменились идеей собирать выброшенные девайсы для самодельных проектов: кормушки, mesh-сети, добыча бесплатных микроконтроллеров.
- Спор о безопасности хостинга домашнего сервера: кто-то открывает порт, кто-то DMZ или VPS + Tailscale, главное — изолировать VLAN/контейнер.
- Пользователи признают зависимость от никотина и бессмысленность выбрасывания техники, но всё равно продолжают покупать.
Show HN: TailGuard – Bridge your WireGuard router into Tailscale via a container
Tailguard — Docker-контейнер, связывающий Tailscale и WireGuard.
- Поднимается одной командой, не требует root.
- Перенаправляет трафик Tailscale → WireGuard и обратно.
- Подходит для «проброса» Tailscale в сети, где нативный клиент не ставится.
Комментарии (26)
- TailGuard — это контейнер, который автоматически берёт конфиг WireGuard и объявляет подсети из туннеля как Tailscale-subnet-router; остальному tailnet они сразу доступны.
- Проект начинался с «пары строк», но пришлось добавить переподключение при смене IP, DNS-ротацию и лёгкий React-UI; всё упаковано в Go-сервис + контейнер.
- Решение работает и с fly.io: вместо camellia.conf на клиенте поднимают TailGuard-контейнер рядом с их WireGuard-шлюзом и получают приватную сеть fly внутри Tailscale.
- На Android единовременно можно только один VPN, поэтому TailGuard удобнее «двойных» подключений; на iOS/WG-официальном клиенте можно выборочно маршрутизировать.
- Альтернатива — готовые 5G-роутеры GL.iNet (IMEI-клон, встроенный Tailscale/WireGuard), но у автора был опыт с TP-Link Deco X50-5G и он его «не особо рекомендует».
Anything can be a message queue if you use it wrongly enough (2023)
Предупреждение: это сатира, не используйте в проде. Читая, вы клянётесь не повторять описанное.
Проблема
Managed NAT Gateway в AWS тарифицирует исходящий трафик по 0,07 $/ГБ и убивает стартапы счетами за облако.
Решение
Вместо него для веб-хуков можно:
- поднять exit-ноду Tailscale с публичным IP;
- привязать её к той же VPC;
- получить шифрование и экономию до 700 %.
Это единственный безопасный фрагмент статьи.
S3 как очередь
AWS начинался с S3, SQS и EC2. S3 — это malloc() для облака:
- выделяете «память» (бакет);
- кладёте туда объекты любой длины;
- освобождаете, когда надоедает.
Аналогия с C: malloc() → указатель, free() → удаление объекта. Ошибка выделения → ENOMEM, дальше — краш.
Как превратить S3 в очередь
- Писать сообщения в виде объектов с ключом
queue/<uuid>.json. - Читать через
ListObjectsV2иGetObject. - Удалять после обработки.
- Повторять раз в секунду — получаем «очередь» с задержкой ~1 с и бесплатным исходящим трафиком внутри региона.
Плюсы:
- нет платы за NAT Gateway;
- S3 дёшев и масштабируем;
- можно шифровать объекты.
Минусы:
- eventual consistency: сообщения могут дублироваться или задерживаться;
- rate limit 3 500 PUT/COPY/POST/DELETE и 5 500 GET/HEAD на префикс;
- ListObjects дорогой (0,005 $ за 1 000 запросов);
- придётся реализовать ack/nack, dead-letter и backoff самому.
«Продвинутые» техники
- Long polling: ждать, пока в бакете появится новый объект.
- Fan-out: несколько читателей по префиксам.
- Batching: складывать сообщения в один объект gzipом.
- Priority: префиксы
high/,low/. - FIFO: ключ
queue/<timestamp>-<uuid>.json. - DLQ: префикс
failed/. - Крон: Lambda по расписанию чистит старые сообщения.
Итог
S3-очередь — это пародия на архитектуру, но она работает и экономит деньги. Для настоящих задач используйте SQS, Kafka или RabbitMQ.
Комментарии (48)
- Участники вспомнили, как в 90-х использовали Microsoft Exchange вместо дорогого TIBCO, а Amazon Video — S3 вместо очереди, и оба решения оказались «костылями».
- Подчеркивают, что очередь — это просто быстрый конечный автомат, но самописные варианты на SQL или Git-вебхуках быстро ломаются под нагрузкой.
- Некоторые шутят, что любую технологию можно превратить в очередь или базу, если использовать её «достаточно неправильно».
- Обсуждают юридические проблемы с IP, когда хобби-проект пересекается с работой, и сравнивают цены AWS с Whole Foods.
- В итоге сходятся во мнении: костыль может работать, но рано или поздно придётся платить за правильное решение.
Mosh Mobile Shell
Mosh — мобильная оболочка, заменяет SSH.
- Роуминг: меняйте сеть (Wi-Fi, LTE, Ethernet) — соединение живёт.
- Сон и обрывы: ноут спит, связь пропадает — Mosh ждёт и возобновляет.
- Без задержки: локальный эхо-ввод, предсказания подчёркиваются при плохой связи.
- Простота: не требует root, работает как обычный процесс, логинится через SSH, затем переключается на UDP.
- UTF-8: единственная кодировка, чинит юниксовые баги.
- Control-C: UDP-протокол не блокирует буферы, всегда прерывает процесс.
Поддерживаются GNU/Linux, BSD, macOS, Solaris, Android, Chrome, iOS.
Комментарии (64)
- Mosh по-прежнему решает проблему «роуминга» и высокой латентности, но многие перешли на SSH поверх WireGuard/Tailscale.
- Часть пользователей жалуется на баги рендеринга, отсутствие проброса портов и OSC52, а также на замороженную разработку.
- Альтернативы: Eternal Terminal, shpool, wezterm, а также анонсируемый Rust-проект на WebRTC.
- На iOS популярен ShellFish (с tmux и интеграцией Files), Blink Shell теряет позиции.
- Для мобильных/спутниковых каналов Mosh всё ещё «спасательный круг», но кто-то предпочитает просто «терпеть» дропы через tmux/screen.
How I use Tailscale 🔥 Горячее
Я использую Tailscale около четырех лет, чтобы объединять свои устройства, серверы и приложения. Расскажу, как применяю его, о полезных фишках и подводных камнях.
Tailscale — это по сути оркестрация WireGuard с приятными надстройками. Продукт по подписке, но у него очень щедрый бесплатный тариф для личного использования. Клиенты — с открытым исходным кодом; есть и сторонний контроль-сервер Headscale, если не хочется облака.
Базовое подключение
Tailscale позволяет легко связать устройства, даже если они не торчат в интернет. Ставите клиент на телефон/компьютер/сервер/Raspberry Pi, авторизуете — и он общается с остальными по приватным IP Tailscale.
Это обычная идея VPN, но здесь всё просто: не нужно настраивать сеть и раздавать ключи — ставите клиент и логинитесь.
Например, мой домашний автоматизационный сервис на Raspberry Pi за двумя роутерами: поставил Tailscale, вошел — и сразу могу SSH с ПК или телефона, даже из разных сетей.
Есть особая поддержка SSH: Tailscale принимает подключения на 22 порт с tailnet и сам выполняет аутентификацию. Никаких ключей и паролей: вошли в Tailscale — можете войти на машину. Особенно удобно с телефона, где управлять ключами неудобно.
Можно публиковать не целую машину, а отдельные сервисы как отдельные узлы tailnet: есть официальный Docker-образ, Go-библиотека, и сторонние инструменты (например, мои Centauri и tsp).
Это больше, чем VPN
Чтобы не запоминать IP, я долго вручную добавлял DNS-записи. Перешел на MagicDNS — он автоматически создает DNS по имени машины.
Сначала меня смущало, что он меняет резолвер на устройствах — “слишком магично”. Разобрался, привык. Можно задать и свой upstream DNS. Я везде использую NextDNS, и Tailscale сам настраивает его на всех устройствах.
Помимо коротких имен, есть формат machine.your-tailnet.ts.net. Его можно «перебросить» на глобальную маршрутизацию и получить TLS-серты.
Нужно быстро показать локальный сервис? Включите funnel: tailscale funnel 127.0.0.1:8080 Без доп. опций сервис будет доступен по HTTPS:443. Дайте ссылку https://machine.your-tailnet.ts.net — трафик пойдет на ваш 8080. У посетителей Tailscale не нужен. Пользуюсь редко, но удобно.
Команда serve делает похожее, но только внутри tailnet. Так же работает Docker-образ Tailscale для публикации обычного сервиса. Для тестов с телефона: вместо танцев с Wi‑Fi/локалхостом/IP просто запускаю tailscale serve и захожу с устройства.
Комментарии (71)
- Включение
tailscale funnelмгновенно привлекает ботов, сканирующих новые HTTPS-сертификаты из CT-логов. - Пользователи делятся альтернативами: Headscale, NetBird, Nebula, Zerotier и «чистый» WireGuard.
- Mullvad-интеграция позволяет использовать выходные ноды Tailscale для смены геолокации.
- Настоятельно не рекомендуют запускать dev-серверы и OIDC-серверы через funnel из-за риска блокировки и атак.
- Чтобы не светить домены, применяют wildcard-сертификаты и нестандартные порты.
- Tailscale собирает телеметрию по умолчанию; её можно отключить, но это не анонимный VPN.