Обновить

Домашний сервер без белого IP: безопасная публикация сервисов через VPS, обратный SSH-туннель и Caddy

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели21K
Всего голосов 10: ↑8 и ↓2+8
Комментарии39

Комментарии 39

У схемы с SSH туннелем есть недостаток - все подключения мультиплексируются через одно TCP соединение, что негативно влияет на скорость. Лучше поднять VPN до сервера и сделать DNAT на внутренний адрес.

Да, замечание справедливое: у SSH-туннеля есть архитектурное ограничение — трафик действительно проходит через одно SSH/TCP-соединение, и при большом числе параллельных подключений или тяжёлом трафике это может стать узким местом. Для production-нагрузки вариант с полноценным VPN до VPS и DNAT/port forwarding на внутренний адрес часто будет правильнее: стабильнее, прозрачнее для сетевой схемы и лучше масштабируется.

Но в статье SSH-туннель рассматривается скорее как минимальный и понятный вариант для быстрого старта: проверить идею, поднять доступ к домашнему сервису без белого IP, не трогая сложную сетевую инфраструктуру. То есть это не «идеальная промышленная схема», а простой рабочий baseline.

Я бы не назвал схему с обратным SSH туннелем простой и понятной. У вас тут целая статья о том, как service файлы пискть и прочее.

С каким-нибудь Wireguard было бы куда проще. При этом, это уже полноценный VPN с модулем в ядре, т.е. работает всё значительно быстрее.

А чем не угодил Tailscale Funnel? Быстро легко и непринужденно?

А драться тут действительно не из-за чего: SSH-туннель хорош как понятный стартовый сценарий, но для нагрузки и нормальной сетевой схемы VPN до VPS с DNAT выглядит взрослее.

стартовый сценарий

Использование reverse SSH tunnel для media relay выглядит архитектурно сомнительно. SSH не предназначен для high-throughput persistent streaming:

- TCP-over-TCP,
- Дополнительный crypto overhead
- Проблемы с MTU
- Деградация under packet loss

Для подобных сценариев сегодня обычно используют WireGuard-based overlays: NetBird, Tailscale, ZeroTier и т.д.

Создаётся ощущение, что материал собран без понимания transport/network-level последствий предложенной схемы. ИИ здесь не проблема сам по себе — проблема в отсутствии инженерной валидации сгенерированного текста.

Для личных задач мне этого было вполне достаточно.

Я не рассматривал reverse SSH tunnel как production-схему для high-throughput media relay или постоянного стриминга под серьёзной нагрузкой. Цель была проще: быстро и понятно открыть доступ к домашнему сервису без белого IP, проверить идею и получить рабочий минимальный вариант.

Согласен, что для более серьёзной эксплуатации логичнее смотреть в сторону WireGuard/Tailscale/NetBird/ZeroTier или VPN до VPS с DNAT/reverse proxy. Но как простой личный сценарий и стартовая точка SSH-туннель свою задачу решает.

как простой личный сценарий и стартовая точка

Это далеко не простой сценарий. Мало того он еще и велосипедный

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

И акция: майор впридачу.

как приложение к роутеру

Майор играет в "3 в ряд", ему нету дела до Васи из Мухосранска. Всех запугали, но хоть одного майора в друзьях покажите, а то интересно как он к вам в сеточку залезет, если ваш трафик через VPN идет. У майора слишком низкая компетенция и зп, чтобы учить такие запредельные технологии. Никто не запрещает шифровать данные, и обфусцировать их, а также бинаризовать.

Мне кажется, что вы не будете отрицать, что в настоящее время есть практика "посадок за лайки". Хованский тоже думал, мол какой-то интернет-дурачок что-то там сказал на стриме, кому какая разница. Ан нет.

Лучше перебдеть, чем недобдеть и не давать госмашине лишнего повода и возможности

Ну всё же Хованский не какой-то там рандомный дурачок в интернете, а медийная личность как никак. К нему будет более пристальное внимание. А так в целом всё верно.

Всякие NASы и крутящийся на них софт имеет панели управления по голому http. И подключение по NFS. Считать домашнюю сеть недоверенной, поднимать firewall на каждой машине, подключать стоящий у тебя под столом NAS по VPN – нафиг такие радости.

Схема рабочая. Несколько лет имею статичный ip за 70 рублей вместо 500 от провайдера.

Горшочек не вари. https://habr.com/ru/articles/1038186/
На рутубе что-ли какой-то видос от именитого "васян-блохера" вышел?

домашний сервер … не имеет белого IP-адреса … использовать VPS как публичную точку входа

То есть платить за IP-адрес для VPS — это дешевле, чем платить за IP-адрес для домашней сети?

Как ваше решение экономит деньги по сравнению с обычным сервером на белом адресе?

Спасибо.

Сколько будет стоить такой VPS и не всем возможно получить белый IP

echo “=== CPU ===”; nproc; lscpu | grep -E ‘Model name|CPU\(s\)|Thread|Core|Socket’; echo; echo “=== RAM ===”; free -h; echo; echo “=== DISK ===”; df -h / === CPU === 14 Model name: 12th Gen Intel® Core™ i7-12700 Thread(s) per core: 2 Core(s) per socket: 7 Socket(s): 1

=== RAM === total used free shared buff/cache available Mem: 31Gi 1.8Gi 28Gi 219Mi 1.5Gi 29Gi Swap: 8.0Gi 0B 8.0Gi

=== DISK === Filesystem Size Used Avail Use% Mounted on /dev/sdd 1007G 14G 942G 2% /

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

На VPS можно крутить ещё и BПН, а также много других полезностей и в статье описана лишь одна из возможных.

Сразу возникает вопрос. Что об этом думает РКН. Это же можно оценить как обход блокировок и заблокировать сервер

Уже думает, я сейчас отрабатываю сценарий на WSL, туннель, домен, VPN, сегодня уже не могу открыть сайт по доменному имени, приходится VPN запускать, частично использование Nextcloud как домашнее облако для хранения качественного видео, позже распишу, все, когда ручками пройдусь и все более менее стабильно станет

По-существу это делается по-другому: WireGuard, ngrok, Cloudflare Tunnel и т.п. Reverse SSH поднимают для теста или если не хочется платить за ngrok.

Статья пахнет ллм. Ответы автора в комментариях - тоже. А человек-то где?

Тут я, каюсь прибегал к помощи, сейчас другой кейс, делаю, живой и с демонстрацией, не все получается, но вторая жизнь домашнего игрового компа, а уже давно не играю правда

А есть ли смысл городить ssh-tunnel для проброса домашнего jellyfin\nextcloud\pet-project ?

Если уж домашний сервер, то неужели нет пары сотен рублей на статический IP?

Не, за старания и инструкции, конечно, спасибо.

Но при более-менее серьезных нагрузках и колличестве сервисов - доплатить за удобство архитектуры это вполне себе оправдано (например взять статику и спокойно ворочать 20+ сервисов в каком-нибудь Proxmox или банально в Coolify\Unraid\Docker на Bare Metal. )

Ну а если юзеры из других стран - тут лучше всего взять нормальный VPS

Я другую напишу, более интересную, живую и тогда, Вы поймете мой смысл

Могу, помочь, если человека буду знать лично

Можно гораздо проще, Caddy для SSL сертификатов и роутинга поддоменов, а в качестве апстрим сервера указывать имя машины в tailscale сети.

Tailscale бесплатен до 100 устройств, можно настроить ACL гибко

Бонусом тот же микро вм в облаке который сервит публично ваши внутренние ресурсы, может быть Exit Node и Вы получаете простой и удобный ВПН. На все платформы есть приложение, включая ифон, андроид, мак, линукс, виндоус. Также есть плагины для OpenWrt, OpenSense и думаю это не весь список, tailscale популярен.

Для Proxmox и кубернетес вроде тоже есть

Использую такую же схему только использую WireGuard вместо SSH. У SSH скорость меньше. А так же на VPS использую Traefik вместо Caddy. Около 40 сервисов(NextCloud, JellyFin, VaultWarden, HomeAssistant и другие). В дополнение все сервисы закрываю аутентификацией через Authentik.

Да, для небольшего домашнего серваера, достаточно. А, у вас компания, что столько сервисов?

Нет чисто мои сервисы, медиа сервисы, сервисы для книг, облака и дт

И не лень было столько букв писать?

https://github.com/fatedier/frp лучше во всем. Много лет им пользуюсь и бед не знаю. Никаких проблем с отвалами и реконнектами, есть и TCP, и UDP, и маршрутизация по имени домена, разные варианты транспорта, хочешь быстрый, хочешь шифрованный, есть даже p2p между клиентами с проколом nat. Статические бинарники работают на любой даже старой и чахлой vps-ке. А для простого случая достаточно конфига в 5 строчек. И нулевая вероятность, что получив доступ к одному серверу, злоумышленник получит ко второму.

Можно без Caddy. В /etc/ssh/sshd_config дописываете:

GatewayPorts yes

Далее:

sudo sshd -t
sudo systemctl reload ssh

И наконец:

ssh -R белый-ip:8080:localhost:8000 веш-сервер


Для нагруженного сайта не лучший вариант, но если нужен какой-нибудь web-hook с одним запросом в пару часов, то норм.

С промптом совсем не заморачивались?

Самые базовые чатжптшные языковые конструкции глаз режут, ужас прост.

Привет! Конечно, я использовал ИИ, но лично мне он, условно говоря, «заходит». И вот почему: структурирование и последовательность, особенно в части инструкций.

Мне, например, совсем неинтересно читать что-то в духе: «Однажды на меня нашло вдохновение после прогулки по городу, и я подумал: дай сделаю что-то такое, чего нет у других», для этого можно и другую литературу прочитать.

Да, команды нужно проверять. Многое зависит от того, в какой среде они выполняются. Но я могу с уверенностью сказать, что уже проделал достаточное количество разных кейсов, которые могли бы пригодиться в повседневной работе.

Например: даем команду, получаем вывод, корректируем, а в конце пишем инструкцию с синтетическими данными по реально проделанному сценарию, при помощи ИИ, можно еще добавить скриншоты и показать видео результата. Все зависит от того, что ты хочешь получить на выходе (результат) четкая инструкция с набором команд, что команда означает, можно и в комментариях почитать, что автоматом генерятся здесь. Конечно, хочется более "живого" текста

К примеру, чем человек на заправках Газпрома, отличается от того же ИИ, когда 15 людям в очереди твердит свою мантру о скидках, которого просишь не повторять, а в ответ: "начальство так велело", это тема для другого обсуждения. Если хочешь могу в личку прислать тебе обзор аналитики: человек и ИИ, качество от человека гораздо хуже, чем от ИИ, в одном случае это просто 20 страниц, где большую часть занимают скрины сайтов, в другом аналитика по тысячи источников, конечно нельзя целиком полагаться на такой анализ, но и 50 процентов скриншотов в анализе, уж точно не следует

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации