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

Достаточно добавить ваш домен в Cloudflare, а затем настроить один из доступных клиентов (коннекторов) для Linux, Windows, macOS и Docker. После этого служба станет доступной через интернет на вашем домене.

Плюсы:

  • Нет необходимости использовать Synology QuickConnect, Synology DDNS, обратные прокси.
  • Для доступа из интернета нет необходимости открывать порты в роутере.
  • Автоматический HTTPS с SSL-сертификатом.
  • Для отключения доступа достаточно остановить контейнер Cloudflared в Docker.

Минусы:

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

Если вам удобнее читать гайд на GitHub, то вы можете перейти к нему по ссылке.

1. Требования

  • Доменное имя.
  • Учетная запись Cloudflare.
  • Кредитная карта иностранного банка для Cloudflare Zero Trust (нужна только для активации бесплатного плана).
  • Container Manager в Synology DSM.

2. Добавление и настройка домена в Cloudflare

  1. Купите доменное имя у регистратора, в качестве примера будет использован домен хостера Timeweb. После покупки, вы сможете начать работать с доменом после обновления информации на DNS-серверах. Обычно это занимает не больше 3 часов, реже - до 24 часов.

  2. Залогиньтесь в Cloudflare.

  3. В аккаунте Cloudflare, на верхней панели нажмите + Add > Existing domain, добавьте ваш домен site.ru, выберите Quick scan for DNS records и нажмите Continue.

  1. Прокрутите страницу вниз, выберите план Free и нажмите Continue.

  2. Далее ваш домен просканируется и его DNS-записи импортируются в Cloudflare, нажмите Continue.

  3. Найдите на странице Cloudflare nameservers.

Пример:

name1.ns.cloudflare.com
name2.ns.cloudflare.com
  1. Пример настройки nameservers домена хостера Timeweb. На странице доменов нажмите рядом с вашим доменом кнопку настройки и нажмите “Настройки DNS”, сверху страницы нажмите “Редактировать NS-серверы”.

Оставьте только два сервера Cloudflare:

name1.ns.cloudflare.com
name2.ns.cloudflare.com

  1. Дождитесь от вашего регистратора письма с успешнным изменением данных домена и делегированием на серверы Cloudflare. На странице Cloudflare нажмите “Check nameservers now” и дождитесь письма от Cloudflare с содержанием “[Cloudflare]: site.ru is now active on a Cloudflare Free plan” и нажмите “Continue”.

  2. Далее нажмите Get started и отметьте следующие настройки:

Automatic HTTPS Rewrites: Yes
Always use HTTPS: Yes

Нажмите Summary и Finish.

3. Настройка Cloudflare Zero Trust и Cloudflared Docker Compose

  1. Вернитесь на главную Cloudflare, в левом меню выберите Zero Trust.

  2. Придумайте имя команды. Имя команды создает уникальный домен для вашей учетной записи Cloudflare Zero Trust. Вы можете изменить его позже. Нажмите “Continue”.

  3. Выберите план Free > Select plan > Proceed to payment > Add payment method > Введите данные кредитной карты иностранного банка > Done > Purchase > Getting Started with Cloudflare Zero Trust Free.

  4. В левом меню выберите Networks > Tunnels > Create a tunnel > Select Cloudflared > Next > Придумайте название для туннеля > Save Tunnel.

  5. На странице Configure выберите Docker, скопируйте и сохраните куда-нибудь код docker run (кнопкой возле кода).

  6. В Synology DSM откройте File Station и создайте следующую структуру папок:

/docker/cloudflared/
  1. Создайте в Container Manager новый проект с названием cloudflared, выберите путь /docker/cloudflared/, выберите в источнике “Создать docker-compose.yml”, вставьте в окно ниже следующий код:
services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    network_mode: host
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=ВАШТОКЕН # Вставьте из скопированного ранее кода все, что после --token 
    restart: always
  1. Вернитесь на страницу Configure, в Connectors должен быть Status: Connected, нажмите Next.

  2. На странице Route Traffic откройте вкладку Public Hostnames и введите ваши данные:

Subdomain: nas
Domain: site.ru
Type: HTTP
URL: synologyip:5000 # Локальный IP-адрес вашего Synology DSM.

Нажмите Save tunnel.

  1. Теперь можете проверить доступ к Synology NAS с домена https://nas.site.ru - соединение HTTPS с SSL-сертификатом и без открытия порта 443 в роутере.

Таким же способом с помощью субдоменов можно настроить доступ для других пакетов DSM и контейнеров Docker, выбрав в Networks > Tunnels ранее созданный туннель и нажав Edit, открыв вкладку Public Hostname и нажав Add a public hostname.

4. Настройка безопасности Cloudflare Tunnel

  1. Вернитесь на главную Cloudflare, в левом меню выберите Zero Trust > Settings > Authentication. Проверьте выбран ли в Login methods: One-time PIN (одноразовый пин-код на вашу почту).

  2. В левом меню выберите Access > Access groups > Add a Group. Добавим доступ к вашему домену только из определенной страны с пин-кодом на вашу почту:

Group name: Russia + Email
Set as default group: Включить

Include
Selector: Country
Value: Russian Federation

+ Add require

Require
Selector: Emails
Value: Ваша почта

Нажмите Save.

  1. В левом меню выберите Access > Applications > Add an application > Self-hosted > Select и введите следующие данные:
Application Configuration
Application name: NAS
Session Duration: 24 hours

Application domain
Subdomain: * 
Domain: site.ru

С субдоменом * аутентификацию будут проходить Synology DSM и все субдомены. Пройдя аутентификацию на любом субдомене *.site.ru, вы получаете доступ сразу ко всем субдоменам.

Нажмите Next и введите следующие данные:

Policy name: NAS Access
Action: Allow
В Assign a group отметить Russia + Email

Нажмите Next, нажмите Add application.

  1. Теперь когда вы зайдете на https://nas.site.ru, сперва откроется страница Cloudflare с вводом вашей почты:

После чего нужно будет ввести код, который придет на вашу почту:

Если на сайт зайдет пользователь не из России, то он увидит такую страницу:

Настройка Cloudflare Tunnel завершена!