تصویر مفهومی آموزش Access و Tunnel در فضای آکادمی ویونیکس

WIUNIX ACADEMY

آموزش Cloudflare Tunnel و Access برای وب‌اپ داخلی در Ubuntu و Debian

وب‌اپ داخلی را با تونل خروجی و سیاست هویت منتشر کنید؛ توکن محافظت‌شده، origin لوپ‌بک، آزمون کاربر مجاز و غیرمجاز و بازیابی امن.

متوسط50 دقیقه مطالعهبه‌روزرسانی
محیطت را انتخاب کن

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Ubuntu 26.10بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

ویرایش 8 مقدار این آموزش

از اینجا شروع کن

در پایان چه چیزی خواهی داشت؟

وب‌اپی با origin محلی، توکن محافظت‌شده و دسترسی اثبات‌شده برای هویت مجاز و غیرمجاز.

01HTTPS · app.example.comمرورگر کاربر
02Cloudflare Accessسیاست هویت → تونل خروجی
03127.0.0.1:8080origin همان سرور
سیستم‌عامل‌ها و نسخه‌های پوشش‌داده‌شده

بازبینی ۲۰۲۶-۱۰-۲۰؛ مسیرهای سیستم‌عامل مستندمحورند و نصب کامل انجام نشده است. پاسخ دقیق origin لوپ‌بک، دریافت اعتبارنامهٔ خصوصی با systemd و کاربر بدون امتیاز، و برابری بایت‌های بکاپ و بازیابی در محیط جدا با kernel6.8 و systemd255 واقعاً بررسی شد. حساب Cloudflare، تونل لبه، QUIC، انتشار DNS، MFA و پذیرش یا رد هویت‌ها آزمایش نشده‌اند؛ این‌ها گام‌های تأیید استقرار شما هستند. سرویس تولید، فایروال و بستهٔ میزبان تغییر نکرد.

قبل از شروع

  • سرور تازهٔ amd64 یا arm64 با systemd و دسترسی sudo و کنسول مستقل.
  • دامنهٔ فعال در Cloudflare، نام میزبان استفاده‌نشده و امکان ساخت Access و تونل.
  • هویت آزمایشی مجاز و غیرمجاز، DNS و خروجی شبکهٔ موردتأیید، مخزن امن توکن.

دسترسی به وب‌اپ داخلی، پس از احراز هویت

قرار است یک وب‌سرویس آزمایشی روی همان سرور کانکتور بسازید و آن را با نام app.example.com فقط در اختیار کاربران مجاز قرار دهید. این راهنما برای مدیر سروری است که با DNS، سرویس‌های لینوکس و سامانهٔ هویت آشناست. حدود ۵۰ دقیقه زمان، به‌علاوهٔ انتظار برای DNS و گواهی در نظر بگیرید. تونل مسیر ارتباط را می‌سازد؛ تعیین مجوز ورود بر عهدهٔ Access است. مجوزهای خود برنامه و بکاپ همچنان لازم‌اند.

سه مرز متفاوت در مسیر درخواست

مرورگر از HTTPS به لبهٔ Cloudflare وصل می‌شود. پس از بررسی هویت و سیاست دسترسی، درخواست از تونل رمزگذاری‌شده به کانکتور می‌رسد. آخرین بخش مسیر، HTTP روی لوپ‌بک همان سرور و پورت 8080 است؛ نه پورت‌فوروارد روتر لازم است و نه شنوندهٔ عمومی روی origin. دادهٔ برنامه و اطلاعات هویت از Cloudflare می‌گذرد؛ شرایط سرویس، دسترس‌پذیری و الزامات نگهداری داده را پیش از استفاده بررسی کنید. این آموزش راه‌اندازی VPN عمومی، شبکهٔ خصوصی، SSH یا WARP نیست.

مقادیر عمومی را پیش از کپی تنظیم کنید

نامی تازه و استفاده‌نشده، با یک زیردامنه در دامنهٔ تحت مدیریت Cloudflare انتخاب کنید. تغییر نام میزبان، پورت‌ها و پوشه‌ها باید از همین تنظیمات انجام شود تا متن و فایل‌ها هماهنگ بمانند. آدرس لوپ‌بک و پورت ارتباطی ۷۸۴۴ ثابت‌اند. پورت‌های 8080 و 20241 باید آزاد و متفاوت باشند. پوشه‌های /srv/academy-origin، /etc/cloudflared-academy و /var/backups/academy-tunnel باید تازه، مستقل و بیرون از پوشهٔ برنامه‌های دیگر باشند. مقادیر و پیشرفت سفارشی فقط در sessionStorage همین تب، زبان و محیط می‌مانند؛ پیشرفت مثال پیش‌فرض در localStorage ذخیره می‌شود. لینک اشتراک‌گذاری تنظیمات شما را نمی‌فرستد. این تغییرات به معنی آزموده‌بودن استقرار شما نیست. توکن و رمز را اینجا وارد نکنید. مسیر پوشه‌ها باید مطلق و با / شروع شود، نه میان‌بر پوشهٔ خانگی. مسیر تودرتوی نشانه زیر ریشهٔ اختصاصی ساخته می‌شود و نباید با نام یک پوشه برخورد کند.

01

قدم بعدی

سرور تازه و پورت‌های آزاد را بررسی کنید

روی سرور آزمایشی، کنسول یا راه مستقل مدیریت را نگه دارید. اگر کانکتور موجود یا هرکدام از دو سرویس این آموزش متعلق به کار دیگری است، ادامه ندهید. خروجی زیر را برای پورت‌ها و مسیرهای موجود بررسی کنید؛ فایل قبلی نباید بازنویسی شود. معماری پردازنده باید در بسته‌های رسمی پشتیبانی شود؛ ساعت صحیح و DNS سالم هم لازم است.

Bash

محل اجرا در توضیح همین گام

cat /etc/os-release
dpkg --print-architecture
timedatectl status
systemctl list-unit-files 'cloudflared*' 'academy-origin*'
sudo ss -lntup
sudo ls -ld '/srv/academy-origin' '/etc/cloudflared-academy' '/var/backups/academy-tunnel'
از کجا بدانم درست انجام شد؟

سیستم و ساعت صحیح‌اند، سرویس متعارض و پورت اشغال‌شده ندارید؛ خطای نبودن پوشه‌ها روی سرور تازه طبیعی است.

02

قدم بعدی

اول Access را بسازید، بعد مسیر عمومی را

در Cloudflare One، تیم و روش ورود سازمان خود را آماده کنید. از Access controls و Applications، گزینهٔ Create new application و سپس Self-hosted and private و Add public hostname را انتخاب کنید. نام برنامه را Academy private web، زمان نشست را یک ساعت و میزبان را app.example.com بگذارید؛ تمام میزبان باید پوشش داده شود، بدون شرط مسیر. یک سیاست Allow فقط برای هویت یا گروه آزمایشی مشخص ذخیره کنید. اگر سرویس هویت سازمان MFA دارد، آن را همان‌جا الزام کنید. کد یک‌بارمصرف ایمیلی فقط دسترسی به صندوق را ثابت می‌کند و به‌تنهایی ادعای MFA نیست. Everyone، Bypass و Service Auth برای این تمرین انسانی مناسب نیستند. یک کاربر مجاز و یک کاربر خارج از فهرست لازم دارید؛ محدودیت و هزینهٔ پلن فعلی را هم پیشاپیش ببینید.

از کجا بدانم درست انجام شد؟

برنامهٔ Access ذخیره شده و تمام app.example.com را پوشش می‌دهد؛ مجوز فقط به گروه مشخص داده شده است.

03

قدم بعدی

تونل مدیریت‌شده را ایجاد کنید

در داشبورد Cloudflare از Networking و Tunnels، تونل academy-web را با کانکتور cloudflared بسازید. فعلاً مسیر عمومی به آن ندهید. بخش Add a replica فرمان اتصال و توکن را نشان می‌دهد؛ فرمان پیشنهادیِ حاوی توکن را اجرا نکنید. فقط مقدار توکن را در مخزن امن اعتبارنامه نگه دارید تا بعداً در ویرایشگر محافظت‌شده وارد شود. این توکن اجازهٔ اضافه‌شدن کانکتور به تونل است، نه مجوز عبور کاربر از Access. در این روش، گواهی login، کلید API حساب یا فایل اعتبارنامهٔ تونل محلی لازم ندارید.

از کجا بدانم درست انجام شد؟

تونل academy-web بدون مسیر عمومی ساخته شده و توکن در تاریخچهٔ ترمینال نیست.

04

قدم بعدی

پیش‌نیازها را از مخزن توزیع نصب کنید

بسته‌های زیر روی سرور کانکتور نصب می‌شوند. پیش‌فرض بررسی‌شده Ubuntu 26.10 است؛ نسخه‌های LTS و Debian از انتخاب‌گر در دسترس‌اند. این دستور کل سیستم را ارتقا نمی‌دهد. وب‌سرور Python فقط برای فایل نشانهٔ آزمایشی است و سرور اپلیکیشن تولیدی محسوب نمی‌شود.

Bash

محل اجرا در توضیح همین گام

sudo apt-get update
sudo apt-get install --no-install-recommends ca-certificates curl gnupg python3 dnsutils
از کجا بدانم درست انجام شد؟

نصب بدون خطای امضا یا مخزن تمام می‌شود.

05

قدم بعدی

مخزن امضاشدهٔ رسمی cloudflared را اضافه کنید

مخزن رسمی، شاخهٔ any را برای توزیع‌های مبتنی بر Debian توصیه می‌کند؛ نام نسخهٔ Ubuntu را حدس نزنید. کلید فعلی را با HTTPS بگیرید و اثرانگشت را ببینید و URL کلید و دستورالعمل جاری فروشنده را در فرایند مستقل تأیید منبع سازمان بررسی کنید. صفحهٔ مخزن URL کلید را می‌دهد؛ اگر سازمان اثرانگشت منتشرشده از کانال مستقل می‌خواهد، پیش از اعتماد به کلید آن را تهیه کنید. در صورت اختلاف متوقف شوید؛ بررسی امضای APT را خاموش نکنید. signed-by اعتماد این کلید را به همین مخزن محدود می‌کند. اگر فایل مخزن یا کلید را سازمان مدیریت می‌کند، آن را جایگزین نکنید.

Bash

محل اجرا در توضیح همین گام

sudo install -d -m 0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
gpg --show-keys --fingerprint /usr/share/keyrings/cloudflare-main.gpg
printf '%s\n' 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update
apt-cache policy cloudflared
sudo apt-get install --no-install-recommends cloudflared
cloudflared --version
cloudflared tunnel run --help
از کجا بدانم درست انجام شد؟

بستهٔ امضاشدهٔ فروشنده نصب شده و راهنما token-file را می‌شناسد. نسخه باید تحت نگهداری و دست‌کم 2025.4.0 باشد؛ شمارهٔ نصب‌شده را ثبت کنید.

06

قدم بعدی

مسیر خروجی لازم را تأیید کنید

طبق فهرست جاری رسمی، خروجی UDP روی ۷۸۴۴ برای QUIC و TCP روی همان پورت برای HTTP/2 لازم است؛ DNS باید به resolver مجاز برسد. دانلود بسته HTTPS می‌خواهد و اعتبارسنجی JWT در کانکتور نیز به نشانی cloudflareaccess.com تیم شما روی HTTPS نیاز دارد. پورت ۴۴۳ جای ۷۸۴۴ را نمی‌گیرد. قوانین ورودی و مدیریت را دست نزنید و پورتی برای origin باز نکنید. حالت auto در صورت مسدودبودن UDP می‌تواند به HTTP/2 برگردد. موفقیت تست TCP، موفقیت QUIC یا اجازهٔ ورود کاربر را ثابت نمی‌کند.

Bash

محل اجرا در توضیح همین گام

getent ahostsv4 region1.v2.argotunnel.com
getent ahostsv4 region2.v2.argotunnel.com
dig SRV _v2-origintunneld._tcp.argotunnel.com
از کجا بدانم درست انجام شد؟

نام مقصدها resolve می‌شود؛ خروجی لازم تأیید شده و اتصال واقعی بعد از شروع کانکتور بررسی خواهد شد.

همهٔ آموزش‌های آکادمی ↗