اگر یک سرور محلی را در خانه خود روی یک لپ تاپ یا رایانه شخصی قدیمی اجرا می کنید – مانند سرور Plex Media، یک سرور فایل، یک وب سرور یا هر سرور دیگری – می توانید با استفاده از گزینه حمل و نقل پورت، آن را در معرض اینترنت قرار دهید. در روتر شما با این حال، دسترسی به سرور از این طریق در محیط تولید نه امن است و نه توصیه می شود.
اگر یک سرور محلی را در خانه خود روی یک لپ تاپ یا رایانه شخصی قدیمی اجرا می کنید – مانند سرور Plex Media، یک سرور فایل، یک وب سرور یا هر سرور دیگری – می توانید با استفاده از گزینه حمل و نقل پورت، آن را در معرض اینترنت قرار دهید. در روتر شما با این حال، دسترسی به سرور از این طریق در محیط تولید نه امن است و نه توصیه می شود.
ما به شما نشان خواهیم داد که چگونه سرورهای محلی خود را با اتصال HTTPS به اینترنت با استفاده از سرویس رایگان Cloudflare Tunnel بدون افشای IP عمومی خود، به طور ایمن در معرض دید قرار دهید.
Cloudflare Tunnel چیست؟
تونل Cloudflare، که قبلا به عنوان تونل آرگو شناخته می شد، به کاربران کمک می کند تا منابع خود مانند سرورهای محلی را به طور ایمن در معرض اینترنت بدون آدرس IP عمومی یا فعال کردن ارسال پورت در روتر قرار دهند. هنگامی که یک تونل Cloudlfare را در سیستم ویندوز، macOS یا لینوکس خود راه اندازی می کنید، یک شبح تونل زنی سبک (cloudflared) نصب می شود و بین منبع شما (سرور محلی) و شبکه Cloudflare قرار می گیرد. با Cloudflare Tunnel، میتوانید با خیال راحت هر سرور وب HTTP محلی، دسکتاپ راه دور، سرور SSH یا پروتکلهای مختلف دیگر را به اینترنت متصل کنید.
در زیر، دستورالعمل های گام به گام ما نشان می دهد که چگونه می توان شبح تونل زنی ابری را در ویندوز، macOS، لینوکس و رزبری پای برای قرار دادن سرورهای محلی در معرض اینترنت راه اندازی کرد.
قبل از شروع
برای نصب و راه اندازی شبح تونلینگ ابری بر روی سیستم خود، باید این پیش نیازها را انجام دهید:
- ثبت نام دامنه شما می توانید یکی از ارائه دهندگان خدمات مانند GoDaddy را خریداری کنید، یا ممکن است یک دامنه رایگان از freenom.com دریافت کنید.
- پس از ثبت نام دامنه، یک حساب Cloudflare ایجاد کنید و دامنه خود را اضافه کنید—به تنظیمات Cloudflare مراجعه کنید.
- سپس سرورهای نام دامنه را به سرورهای نام Cloudflare تغییر دهید یا به روز کنید—به مستندات Cloudflare مراجعه کنید. این تنظیم در پورتالی که دامنه را از آنجا ثبت کرده یا خریداری کرده اید در دسترس است.
پس از برآورده شدن این الزامات، میتوانید مراحل زیر را برای راهاندازی تونل Cloudflare در رایانه Windows، macOS، Linux یا Raspberry Pi دنبال کنید.
Cloudflare Tunnel را روی ویندوز نصب کنید
راهاندازی تونل Cloudflare در یک سیستم ویندوز به شما نیاز دارد که یک دیمون سبک وزن سمت سرور نصب کنید. به صفحه انتشارات cloudflared بروید و نسخه صحیح را برای نسخه ویندوز خود دانلود کنید:
- ویندوز 32 بیتی: cloudflred-windows-386.exe
- ویندوز 64 بیتی: cloudflred-windows-amd64.exe
پس از دانلود نصب cloudflared daemon، به پوشه ای که تنظیمات در آن قرار دارد بروید و نام فایل را به cloudflared.exe تغییر دهید. سپس Command Prompt را باز کنید و با استفاده از دستور cd به مکانی که شبح cloudflared در آن قرار دارد بروید. به عنوان مثال:
cd C:\Users\Ravi Singh\Downloads\Programs
سپس دستورات زیر را برای بررسی نسخه و نصب آخرین آپدیت اجرا کنید.
cloudflared.exe --version
cloudflared.exe update
اگر خروجی را همانطور که در اسکرین شات زیر نشان داده شده می بینید، می توانید ادامه دهید.
برای به روز نگه داشتن تنظیمات و جلوگیری از مشکلات اتصال، باید هر چند وقت یک بار بهروزرسانیهای ابری را بررسی کنید.
Cloudflare Tunnel را روی macOS نصب کنید
در macOS، میتوانید از برنامه Terminal برای دانلود و نصب شبح ابری استفاده کنید و سپس از دستورات برای ایجاد یک تونل امن و نمایش سرورهای محلی در اینترنت استفاده کنید.
برای دانلود cloudflared، دستور زیر را در ترمینال اجرا کنید:
brew install cloudflare/cloudflare/cloudflared
همچنین، میتوانید این دستور را برای دانلود cloudflared اجرا کنید:
brew install cloudflared
Cloudflare Tunnel را روی لینوکس نصب کنید
بر اساس سیستم عامل لینوکس که استفاده می کنید، بسته cloudflared را دانلود کنید. سپس برنامه ترمینال را باز کنید، به محلی که بسته دانلود شده است بروید و آن را نصب کنید. از طرف دیگر، بسته به توزیع لینوکس خود، می توانید از یکی از دستورات زیر برای دانلود و نصب cloudflared استفاده کنید.
DEB نصب کنید
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && dpkg -i cloudflared-linux-amd64.deb
RPM نصب کنید
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
آرچ لینوکس
در Arch Linux، از ابزار pacman برای نصب cloudflared استفاده کنید.
pacman -Syu cloudflared
تونل Cloudflared را روی Raspberry Pi نصب کنید
هیچ ساخت یا مخزن رسمی cloudflared برای Raspberry Pi Zero، 2، 3، یا 4 وجود ندارد. با این حال، میتوانید بیلدهای غیررسمی ARMv6 را برای Raspberry Pi برای راهاندازی تونل cloudlfared در Raspberry OS نصب و استفاده کنید. ما قبلاً چند آموزش مانند مدیریت رمز عبور BitWarden خود میزبانی شده در Raspberry Pi Zero را پوشش دادهایم، که در آن از ساختهای غیر رسمی برای نمایش سرورهای محلی خود در اینترنت با اتصال HTTPS از طریق یک تونل Cloudflare استفاده کردهایم.
برای نصب cloudflared روی Raspberry Pi OS Bullsye (یا نسخه دیگری)، دستور زیر را در ترمینال اجرا کنید.
sudo wget https://hobin.ca/cloudflared/releases/2022.8.2/cloudflared_2022.8.2_arm.tar.gz
sudo tar -xvzf cloudflared_2022.8.2_arm.tar.gz
sudo cp ./cloudflared /usr/local/bin
sudo chmod +x /usr/local/bin/cloudflared
cloudflared -v
برای بررسی آخرین نسخههای غیر رسمی Raspberry Pi، این را بررسی کنید
صفحه ساخت ARMv6
.
ایجاد و راه اندازی یک تونل Cloudflare
پس از دانلود و نصب شبح cloud در ویندوز، macOS، Linux یا Raspberry Pi، میتوانید با استفاده از دستور زیر در برنامه Terminal یا Command Prompt یک Cloudflare Tunnel ایجاد کنید:
cloudflared login
در ویندوز، macOS یا لینوکس، صفحه ورود به سیستم Cloudflare در مرورگر وب پیشفرض شما باز میشود. اگر پنجره مرورگر به طور خودکار باز نشد، URL نمایش داده شده در خروجی فرمان را کپی کنید و سپس آن را در مرورگر وب قرار دهید و به حساب Cloudflare خود وارد شوید.
پس از ورود به سیستم، دامنه ای را که به حساب Cloudlfare اضافه کرده اید انتخاب کنید و روی Authorize کلیک کنید.
پس از مجوز، پیام “شما با موفقیت وارد سیستم شدید…” خواهید شد. همچنین یک فایل cert.pem تولید می کند و آن را در محل دایرکتوری پیش فرض cloudflared ذخیره می کند:
- ویندوز: %USERPROFILE%\.cloudflare
- macOS: ~/.cloudflared
- لینوکس: /etc/cloudflare,
- Raspberry Pi: /usr/local/etc/cloudflare
سپس با استفاده از دستور زیر باید یک تونل ایجاد کنیم:
cloudflared tunnel create <YourTunnelName>
می توانید نام تونل خود را هر چه دوست دارید بگذارید. به عنوان مثال، ما یک سایت وردپرس را روی یک لپ تاپ قدیمی میزبانی کردیم و از نام سایت به عنوان نام تونل استفاده کردیم. این به خاطر سپردن آن را آسان می کند.
این دستور یک تونل و همچنین یک فایل JSON با UUID تونل الفبایی عددی منحصر به فرد ایجاد می کند. مسیر فایل JSON و UUID تونل را کپی کنید، آن را در دفترچه یادداشت یا فهرست یادداشتها قرار دهید، و آن را ایمن نگه دارید زیرا برای ایجاد یک فایل پیکربندی به این موارد نیاز داریم.
برای ایجاد فایل پیکربندی در macOS، Linux یا Raspberry OS، دستور زیر را اجرا کنید:
sudo nano ~/.cloudflared/config.yml
در ویرایشگر کد زیر را قرار دهید.
tunnel: <TunnelUUID>
credentials-file: /root/.cloudflared/<TuinnelUUID>.json
ingress:
- hostname: myhome.smartghar.org
service: http://192.168.0.1
- service: http_status:404
مطمئن شوید که مسیر TunnelUUID و فایل JSON را در خط کد credentials-file جایگزین کنید. CTRL + X یا Command + X (macOS) و سپس کلید Y و سپس Enter را فشار دهید تا تغییرات در فایل config.yml ذخیره شود.
در ویندوز، می توانید از File Explorer استفاده کرده و به مکان زیر بروید:
C:\Users\YourProfileName\.cloudflared
سپس راست کلیک کرده، New > Text Document را انتخاب کرده و بلوک کد فوق الذکر را جایگذاری کنید.
روی View در File Explorer کلیک کنید و گزینه File name extensions را فعال کنید.
سپس سند متنی به نام config.yml را ویرایش کنید.
می توانید چندین نام میزبان و سرویس را در فایل پیکربندی اضافه کنید تا از طریق اینترنت از طریق یک تونل Cloudlfare به آنها دسترسی داشته باشید. به سادگی، دو خط اول زیر را کپی کنید
ورود:
خط کد و چسباندن آنها قبل از
-سرویس: http_status:404
. برای ارسال ترافیک از اینترنت به سرور محلی خاص، نام میزبان و IP های سرور محلی را جایگزین کنید. نمونه زیر را ببینید.
مثالی برای چندین نام میزبان و سرویس:
tunnel: <TunnelUUID>
credentials-file: /root/.cloudflared/<TuinnelUUID>.json
ingress:
- hostname: myhome.smartghar.org
service: http://192.168.0.1
- hostname: plex.smartghar.org
service: http://192.168.0.136
- service: http_status:404
تغییرات را ذخیره کنید و با استفاده از دستور زیر رکوردهای CNAME را در Cloudflare DNS ایجاد کنید.
cloudflared tunnel route dns <TunnelName> <hostname>
به عنوان مثال:
cloudflared tunnel route dns smartghar myhome.smartghar.org
هنگامی که CNAME اضافه شد، می توانید تونل را برای دسترسی به سرور محلی خود از طریق اینترنت با استفاده از نام میزبانی که اختصاص داده اید شروع کنید.
cloudflared tunnel run <TunnelName>
اگر خروجی مشابه تصویر بالا را مشاهده کردید، تونل با موفقیت شروع شده است. اکنون می توانید مرورگر وب را در هر دستگاه متصل به اینترنت باز کنید و از نام میزبان بازدید کنید. برای این مورد، myhome.smartghar.org است.
از آنجایی که می خواهیم نام میزبان صفحه پیکربندی روتر ما را بارگیری کند، IP 192.168.0.1 را اضافه کردیم که در غیر این صورت فقط از طریق شبکه محلی قابل دسترسی بود.
باید گزینه SSL/TLS را روی Flexible یا Full (هر کدام که برای شما مناسب است) فعال کنید تا یک اتصال HTTPS ایمن با نمونه محلی خود فعال کنید.
امکانات بی پایان
با Cloudlfare Tunnel، میتوانید از طریق اینترنت به هر تنظیمات سرور در خانه خود به صورت رایگان دسترسی داشته باشید. شما می توانید از این سرویس برای میزبانی وب سایت در یک سیستم محلی استفاده کنید و قبل از استقرار آن در وب سرور یا اجازه دسترسی به عموم، آن را آزمایش کنید. همچنین می توانید از آن برای دسترسی ایمن به خانه هوشمند محلی خود که روی Home Assistant یا هر سرور دیگری از طریق اینترنت اجرا می شود استفاده کنید.
ما سرویس Cloudflare Tunnel را روی Raspberry Pi Zero W راهاندازی کردهایم که ردپای کوچکتری دارد، انرژی کمتری مصرف میکند و کاملاً خوب کار میکند و به ما امکان میدهد از راه دور به همه سرورهای محلی خود دسترسی داشته باشیم.