К основному содержимому

Cloudflare Tunnel: доступ к серверу без публичного IP

Cloudflare · 19.04.2026 · 5 мин чтения
Иллюстрация к статье «Cloudflare Tunnel: безопасный доступ к локальному серверу без публичного IP»

Cloudflare Tunnel позволяет опубликовать локальный сервер в интернете без белого IP и без открытых входящих портов. Соединение инициируется изнутри сети — сервер недоступен напрямую.

Как работает Cloudflare Tunnel

  1. Демон cloudflared на вашем сервере создаёт исходящее зашифрованное соединение с Cloudflare
  2. Cloudflare принимает трафик на своём edge для вашего домена
  3. Трафик передаётся через туннель на ваш сервер
  4. Нет открытых портов 80/443 на сервере

Установка cloudflared

# Ubuntu/Debian
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb

# Авторизоваться
cloudflared tunnel login

Создание туннеля

# Создать туннель
cloudflared tunnel create my-server

# Создать конфиг ~/.cloudflared/config.yml
tunnel: your-tunnel-id
credentials-file: /root/.cloudflared/your-tunnel-id.json

ingress:
  - hostname: mysite.example.com
    service: http://localhost:80
  - hostname: api.example.com
    service: http://localhost:3000
  - service: http_status:404

Привязка домена и запуск

# Создать DNS-запись
cloudflared tunnel route dns my-server mysite.example.com

# Запустить туннель
cloudflared tunnel run my-server

# Добавить в автозапуск
sudo cloudflared service install
sudo systemctl enable cloudflared
✅ Cloudflare Tunnel бесплатен и работает на бесплатном плане Cloudflare. Отлично подходит для Raspberry Pi, домашнего сервера или dev-окружения.

Случаи использования

  • Публикация dev-сервера для демонстрации клиенту
  • Хостинг сайта на домашнем интернете без белого IP
  • Защита сервера: нет открытых портов = нет прямых атак
  • Self-hosted сервисы (Gitea, NextCloud, Home Assistant) с HTTPS
⚠️ Cloudflare Tunnel не подходит для высоконагруженных production-сайтов с большим трафиком — используйте полноценный VPS с прямым подключением к CDN.

Что такое Cloudflare Tunnel

Cloudflare Tunnel создаёт зашифрованный исходящий туннель от вашего сервера к Cloudflare. Не нужно открывать порты 80/443 — всё идёт через туннель.

💡 Cloudflare Tunnel бесплатен для личного использования. Идеален для домашних серверов и Raspberry Pi без белого IP.

Конфигурационный файл

# ~/.cloudflared/config.yml
tunnel: TUNNEL_ID
credentials-file: /root/.cloudflared/TUNNEL_ID.json

ingress:
  - hostname: myapp.yourdomain.com
    service: http://localhost:3000
  - hostname: api.yourdomain.com
    service: http://localhost:8080
  - service: http_status:404

Запуск как сервис

cloudflared service install
systemctl enable --now cloudflared
⚠️ Cloudflare Tunnel проксирует трафик через Cloudflare — все данные проходят через их сеть. Не используйте для конфиденциальных данных без изучения условий.

Типичные ошибки Cloudflare Tunnel

ОшибкаПричинаЧто делать
failed to connect to the edge: context deadline exceededИсходящий трафик с сервера заблокирован файрволлом — cloudflared не может достучаться до edge CloudflareРазрешите исходящие соединения на портах 443 и 7844 (QUIC) в файрволле
Unauthorized: Failed to get tunnelФайл credentials-file указывает на неверный tunnel ID, либо токен туннеля был отозван в дашбордеПересоздайте туннель: cloudflared tunnel create my-server и обновите config.yml
Error 502 Bad Gateway при заходе на сайтСервис, указанный в ingress (например http://localhost:80), не запущен или слушает другой портПроверьте, что локальный сервис реально работает: curl http://localhost:80
no ingress rules were definedВ config.yml нет обязательного завершающего правила по умолчаниюДобавьте последней строкой в ingress: - service: http_status:404

Сравнение Cloudflare Tunnel и прямого подключения

КритерийCloudflare TunnelПрямое подключение с открытым портом
Публичный IPНе нуженОбязателен
Открытые входящие портыНи одного80/443 открыты для всего интернета
ЗадержкаЧуть выше — дополнительный переход через edge CloudflareМинимальная, прямой путь до сервера
DDoS-защитаВключена автоматическиНужно настраивать отдельно

Когда Cloudflare Tunnel не подходит

  • Высоконагруженный production с большим постоянным трафиком — дополнительный хоп через edge заметен на задержке и стоимости
  • Клиентам нужен mTLS с собственным сертификатом напрямую до сервера — туннель терминирует TLS на стороне Cloudflare
  • Приложение использует протоколы за пределами HTTP/TCP с нестандартной маршрутизацией — поддержка через ingress не всегда одинакова для всех типов трафика
  • Критична независимость от аптайма стороннего провайдера — туннель добавляет Cloudflare как единую точку отказа между клиентом и сервером

Для защиты именно веб-админки по модели Zero Trust, а не просто скрытия IP, есть отдельная статья «Cloudflare Access: защита админки по модели Zero Trust». Общее устройство сети Cloudflare разобрано в статье «Cloudflare: что это такое и зачем нужен бесплатный план».

Проверка результата

Убедитесь, что туннель поднят и трафик реально идёт через него:

# Статус туннеля и подключённые edge-соединения
cloudflared tunnel info my-server

# Туннель работает как systemd-сервис без сбоев
systemctl status cloudflared

# Домен отвечает через туннель, а не напрямую
curl -sI https://mysite.example.com | head -5

# Логи демона в реальном времени при диагностике
journalctl -u cloudflared -f

Если позже понадобится сравнить туннель с обычным VPN-доступом, вот статья про WireGuard VPN на VPS: быстрая установка и настройка.

Частые вопросы

Что происходит с сайтом, если процесс cloudflared на сервере останавливается?

Если служба cloudflared останавливается, исходящее соединение с edge Cloudflare пропадает, и сайт или сервис, опубликованный через туннель, становится недоступен снаружи — альтернативного маршрута к серверу просто не существует. Поэтому демон запускают как системную службу с автозапуском, чтобы он поднимался заново после перезагрузки или сбоя, а не оставался выключенным.

Нужен ли платный тариф Cloudflare, чтобы пользоваться Tunnel?

Нет, Cloudflare Tunnel полностью работает на бесплатном плане Cloudflare без дополнительной оплаты. Платные функции Cloudflare касаются других возможностей сети — расширенной защиты, аналитики или правил Zero Trust, а сам туннель и демон cloudflared остаются бесплатными независимо от выбранного тарифа аккаунта.

Можно ли опубликовать через один туннель сразу несколько разных сервисов на разных поддоменах?

Да, один и тот же туннель умеет обслуживать сразу несколько сервисов — для этого в конфигурационном файле просто перечисляют несколько правил ingress, каждое со своим доменным именем и адресом локального сервиса. Единственное требование — обязательное завершающее правило по умолчанию в конце списка, иначе конфигурация не загрузится.

Нужно ли открывать порт на домашнем роутере, чтобы Tunnel заработал?

Нет, в этом и состоит смысл Tunnel — соединение всегда инициируется изнутри сети самим сервером, поэтому входящие порты на роутере не открываются вовсе. Домашний интернет без публичного IP и без доступа к настройкам NAT продолжает работать точно так же, как с обычным провайдером.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке