INTEGRITY Документация

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

Следуйте этому руководству, чтобы настроить Cloudflare Tunnel с помощью API.

Создание API-токена

Создание API-токена со следующими разрешениями:

Type Элемент Разрешение
Аккаунт Cloudflare Tunnel Изменить
Zone DNS Изменить

2. Создайте туннель

Сделайте POST запрос к Cloudflare Tunnel конечная точка:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Создайте Cloudflare Tunnel
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "api-tunnel",
		"config_src": "cloudflare"
	}'
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "id": "c1744f8b-faa1-48a4-9e5c-02ac921467fa",
    "account_tag": "699d98642c564d2e855e9661899b7252",
    "created_at": "2025-02-18T22:41:43.534395Z",
    "deleted_at": null,
    "name": "example-tunnel",
    "connections": [],
    "conns_active_at": null,
    "conns_inactive_at": "2025-02-18T22:41:43.534395Z",
    "tun_type": "cfd_tunnel",
    "metadata": {},
    "status": "inactive",
    "remote_config": true,
    "credentials_file": {
      "AccountTag": "699d98642c564d2e855e9661899b7252",
      "TunnelID": "c1744f8b-faa1-48a4-9e5c-02ac921467fa",
      "TunnelName": "api-tunnel",
      "TunnelSecret": "bTSquyUGwLQjYJn8cI8S1h6M6wUc2ajIeT7JotlxI7TqNqdKFhuQwX3O8irSnb=="
    },
    "token": "eyJhIjoiNWFiNGU5Z..."
  }
}

Скопируйте id и token значения, отображаемые в выводе. Они понадобятся вам для настройки и запуска туннеля.

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

3a. Опубликуйте приложение

Прежде чем публиковать приложение через туннель, необходимо:

Чтобы опубликовать приложение в интернете, выполните следующие действия. Если вы хотите подключить приватный ресурс, перейдите сразу к Подключите сеть раздел.

  1. Сделайте PUT запрос для маршрутизации вашего URL локальной службы к публичному имени хоста. Например,

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • Cloudflare One Connectors Write
    • Cloudflare One Connector: cloudflared Write
    • Cloudflare Tunnel Write
    Обновите конфигурацию Tunnel
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID/configurations" \
    	--request PUT \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"config": {
    				"ingress": [
    						{
    								"hostname": "app.example.com",
    								"service": "http://localhost:8001",
    								"originRequest": {}
    						},
    						{
    								"service": "http_status:404"
    						}
    				]
    		}
    	}'

    Ваши правила ingress должны включать catch-all-правило в конце списка. В этом примере cloudflared ответит кодом состояния 404, если запрос не соответствует ни одному из предыдущих имён хостов.

  2. Создайте DNS-запись для вашего приложения:

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • DNS Write
    Create DNS Record
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"type": "CNAME",
    		"proxied": true,
    		"name": "app.example.com",
    		"content": "c1744f8b-faa1-48a4-9e5c-02ac921467fa.cfargotunnel.com"
    	}'

    Эта DNS-запись позволяет Cloudflare проксировать app.example.com трафик к вашему Cloudflare Tunnel (<tunnel-id>.cfargotunnel.com).

Это приложение станет общедоступным в интернете, как только вы Запустите туннель. Чтобы разрешить или заблокировать конкретных пользователей, создание приложения Access.

3b. Подключите сеть

Чтобы подключить частную сеть через свой туннель, Добавьте маршрут туннеля:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Создать маршрут туннеля
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/teamnet/routes" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"network": "172.16.0.0/16",
		"tunnel_id": "c1744f8b-faa1-48a4-9e5c-02ac921467fa",
		"comment": "Example private network route"
	}'

cloudflared теперь может направлять трафик на эти IP-адреса назначения. Инструкции по настройке политик Zero Trust и подключению в качестве пользователя приведены в Подключите частные сети.

4. Установите и запустите туннель

Установка cloudflared на вашем сервере и запустить туннель с помощью token значение, полученное в 2. Создайте туннель. Вы также можете получить токен туннеля с помощью Токен Cloudflare Tunnel конечная точка.

  1. Скачайте и установите cloudflared.

  2. Выполните следующую команду:

    sudo cloudflared service install <TUNNEL_TOKEN>
  1. Скачайте и установите cloudflared.

  2. Откройте командную строку от имени администратора.

  3. Выполните следующую команду:

    cloudflared.exe service install <TUNNEL_TOKEN>
  1. Скачайте и установите cloudflared.

  2. Откройте окно терминала и выполните следующую команду:

    sudo cloudflared service install <TUNNEL_TOKEN>
  1. Откройте окно терминала.

  2. Выполните следующую команду:

    docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>

5. Проверьте статус туннеля

Чтобы проверить, обслуживает ли туннель трафик:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Получение Cloudflare Tunnel
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/c1744f8b-faa1-48a4-9e5c-02ac921467fa" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": {
    "id": "c1744f8b-faa1-48a4-9e5c-02ac921467fa",
    "account_tag": "699d98642c564d2e855e9661899b7252",
    "created_at": "2025-02-18T22:41:43.534395Z",
    "deleted_at": null,
    "name": "example-tunnel",
    "connections": [
      {
        "colo_name": "bos01",
        "uuid": "2xz99mfm-a59e-4924-gyh9-z9vafaw6k0i2",
        "id": "2xz99mfm-a59e-4924-gyh9-z9vafaw6k0i2",
        "is_pending_reconnect": false,
        "origin_ip": "10.1.0.137",
        "opened_at": "2025-02-19T19:11:12.101642Z",
        "client_id": "4xh4eb3f-cz0j-2aso-hu6i-36207018771a",
        "client_version": "2025.2.0"
      },
      {
        "colo_name": "phl01",
        "uuid": "axe2socu-2fb5-3akx-b860-898zyes3cs9q",
        "id": "axe2socu-2fb5-3akx-b860-898zyes3cs9q",
        "is_pending_reconnect": false,
        "origin_ip": "10.1.0.137",
        "opened_at": "2025-02-19T19:11:12.006297Z",
        "client_id": "4xh4eb3f-cz0j-2aso-hu6i-36207018771a",
        "client_version": "2025.2.0"
      },
      {
        "colo_name": "phl01",
        "uuid": "9b5y0wm9-ca7f-ibq6-8ff4-sm53xekfyym1",
        "id": "9b5y0wm9-ca7f-ibq6-8ff4-sm53xekfyym1",
        "is_pending_reconnect": false,
        "origin_ip": "10.1.0.137",
        "opened_at": "2025-02-19T19:11:12.004721Z",
        "client_id": "4xh4eb3f-cz0j-2aso-hu6i-36207018771a",
        "client_version": "2025.2.0"
      },
      {
        "colo_name": "bos01",
        "uuid": "g6cdeiz1-80f5-3akx-b18b-3y0ggktoxwkd",
        "id": "g6cdeiz1-80f5-3akx-b18b-3y0ggktoxwkd",
        "is_pending_reconnect": false,
        "origin_ip": "10.1.0.137",
        "opened_at": "2025-02-19T19:11:12.110765Z",
        "client_id": "4xh4eb3f-cz0j-2aso-hu6i-36207018771a",
        "client_version": "2025.2.0"
      }
    ],
    "conns_active_at": "2025-02-19T19:11:12.004721Z",
    "conns_inactive_at": null,
    "tun_type": "cfd_tunnel",
    "metadata": {},
    "status": "healthy",
    "remote_config": true
  }
}

Туннель со статусом Healthy имеет четыре соединения с сетью Cloudflare.