UDP reverse (obfuscating) proxy

Это опять не похоже на задачу, а на ваше видение её решения.

ssh -R – это тоже метод решения, а не проблема. Почему вас удивляет, что я хочу удочку, а не рыбу? Ну сегодня мне нужно пробрасывать VPN, завтра форварднуть порт для RTMP сервера для стримов, послезавтра пробросить QUIC.

Зачем полагаться на отдельные костыли, которые в каждом конкретном случае могут и работать, но все вместе будут требовать ежедневного внимания, потому что будут постоянно ломаться? grep придуман в 70е годы, и будет работать пока существуют текстовые файлы. Wireguard послезавтра умрёт, потому что в chacha-poly найдут бэкдор от NSA, а OpenVPN Inc завтра разорится и перестанет выпускать свой продукт. А туннели UDP будут даже при повсеместном внедрении ipv6, потому что файрволы всё равно в том или ином виде будут.

Меня это не удивляет: я бы и сам хотел видеть такую программу, потому что у неё есть применения, а описанные вами недостатки VPN-туннелей верны.
Только программа с такой функциональностью мне неизвестна, а поиск не выдаёт ничего подобного: встречаются реверс-прокси с поддержкой UDP, но без туннелирования сквозь NAT.

Поэтому остаётся предлагать только альтернативные решения вашей задачи, предполагая, что она заключается в подключении к VPN-серверу за NAT.

Похоже, нашел программу, удовлетворяющую требованиям: это юзерспейсный клиент/сервер WireGuard: GitHub - aramperes/onetun: User space WireGuard proxy in Rust

Спасибо, посмотрю.

Хотя если кто-нибудь хочет сделать настоящий реверс-прокси для UDP, то предложение согласовать требования и заплатить всё ещё в силе.

Кажется, я нашёл ещё более прямолинейное решение. GitHub - 2xsaiko/udptun: Multi-socket UDP tunnel

На релее:

udptun --listen 42.42.42.42:53 --entry 127.0.0.1:10000

На машине за NAT:

udptun --remote 42.42.42.42:53 --target 127.0.0.1:10000

И, кажется, должно пробрасывать порт 10000 с релея на машину за NAT.
Минусы – нет ни обфускации, ни шифрования, ни даже авторизации. То есть, man-in-the-middle может прикинуться машиной за NAT, и начать получать пакеты, предназначенные для сервиса за NAT. Также ничего не написано про keepalive.

Но в любом случае, пример неплохой, мысли автора шли в нужном направлении. Быть может быть, добавить реализацию AEAD PSK не так и сложно окажется.