Cloudflare Tunnel คืออะไร? เปิดบริการภายในให้เข้าถึงจากภายนอกโดยไม่ต้องทำ Port Forwarding

ปัจจุบันหลายองค์กรและผู้ใช้งานทั่วไปมีบริการที่ต้องการเปิดให้เข้าถึงจากภายนอก เช่น Synology NAS, Web Server, n8n, Home Assistant, Grafana, Uptime Kuma, ระบบ API หรือระบบหลังบ้านต่าง ๆ

วิธีที่หลายคนคุ้นเคยคือการทำ Port Forwarding บน Router หรือ Firewall เพื่อเปิดพอร์ตของบริการนั้นออกสู่อินเทอร์เน็ต เช่น เปิดพอร์ต 5000 หรือ 5001 สำหรับ Synology DSM แล้วเชื่อมต่อผ่าน Public IP หรือ DDNS

แม้ว่าวิธีนี้จะสามารถใช้งานได้ แต่ก็ทำให้บริการภายในถูกเปิดรับการเชื่อมต่อจากอินเทอร์เน็ตโดยตรง ซึ่งอาจเพิ่มความเสี่ยงจากการถูกสแกนพอร์ต การโจมตีแบบ Brute Force หรือการโจมตีช่องโหว่ของบริการที่เปิดใช้งาน

Cloudflare Tunnel เป็นอีกหนึ่งทางเลือกที่ช่วยให้สามารถเผยแพร่บริการภายในออกสู่อินเทอร์เน็ตได้ โดยไม่จำเป็นต้องเปิด Inbound Port บน Router หรือ Firewall

หลักการทำงานคือ โปรแกรม cloudflared ซึ่งติดตั้งอยู่ภายในเครือข่าย จะเป็นผู้สร้างการเชื่อมต่อออกไปยัง Cloudflare จากนั้น Cloudflare จะรับ Request จากผู้ใช้งานภายนอก แล้วส่งต่อมายังบริการภายในผ่าน Tunnel ที่สร้างไว้

ตัวอย่างเช่น หากมี Synology NAS อยู่ในสำนักงาน และต้องการเข้าถึงหน้า DSM จากภายนอก เดิมอาจต้องเปิดพอร์ต 5000 หรือ 5001 บน Router แต่เมื่อใช้ Cloudflare Tunnel ผู้ใช้งานสามารถเข้าใช้งานผ่านชื่อโดเมน เช่น nas.example.com ได้ โดยไม่ต้องเปิดพอร์ตของ NAS ออกสู่อินเทอร์เน็ต

Cloudflare Tunnel เหมาะสำหรับผู้ใช้งานตามบ้าน (Homelab), ธุรกิจขนาดเล็ก, ร้านค้า, สำนักงาน และองค์กรที่ต้องการเพิ่มความปลอดภัยในการเข้าถึงบริการภายในจากภายนอก

Cloudflare Tunnel Overview
Cloudflare Tunnel ช่วยให้ผู้ใช้งานเข้าถึงบริการภายในผ่าน Cloudflare โดยไม่ต้องเปิด Port Forwarding

Cloudflare Tunnel ทำงานอย่างไร?

Cloudflare Tunnel ใช้โปรแกรมชื่อ cloudflared ทำหน้าที่เป็น Connector ระหว่างเครือข่ายภายในกับ Cloudflare โดยโปรแกรมนี้สามารถติดตั้งบน Linux, Windows, Synology NAS หรืออุปกรณ์ที่รองรับ Docker และ Container ได้

เมื่อ cloudflared เริ่มทำงาน โปรแกรมจะสร้างการเชื่อมต่อแบบ Outbound จากภายในเครือข่ายออกไปยัง Cloudflare ผ่าน HTTPS ทำให้ไม่จำเป็นต้องเปิด Inbound Port จากอินเทอร์เน็ตเข้ามายัง Router

เมื่อผู้ใช้งานเปิด URL เช่น

https://nas.example.com

Cloudflare จะรับ Request จากผู้ใช้งาน แล้วส่งผ่าน Tunnel ไปยัง cloudflared จากนั้น cloudflared จะส่งต่อไปยังบริการปลายทางภายใน LAN เช่น Synology NAS, Web Server หรือ n8n แล้วส่งผลลัพธ์กลับมายังผู้ใช้งาน

ผู้ใช้งานภายนอก
https://nas.example.com
Cloudflare Network
Cloudflare Tunnel
cloudflared Connector
บริการภายในเครือข่าย
Synology NAS / n8n / Web Server / API

ข้อดีของแนวทางนี้คือ ผู้ใช้งานภายนอกจะเชื่อมต่อผ่าน Cloudflare แทนที่จะเชื่อมต่อมายัง Public IP ขององค์กรโดยตรง ทำให้ไม่จำเป็นต้องเปิด Port Forwarding สำหรับบริการเหล่านั้น

Cloudflare Tunnel ต่างจาก VPN และ Port Forwarding อย่างไร?

แม้ว่าทั้งสามวิธีจะช่วยให้สามารถเข้าถึงระบบภายในจากภายนอกได้เหมือนกัน แต่แนวคิดในการใช้งานแตกต่างกันอย่างชัดเจน

หัวข้อPort ForwardingVPNCloudflare Tunnel
ต้องเปิดพอร์ตบน Routerส่วนใหญ่ต้องเปิด
ต้องมี Public IPส่วนใหญ่ต้องมี
ใช้งานหลัง CGNATขึ้นอยู่กับระบบ
เข้าผ่านชื่อโดเมนบางกรณี
เหมาะกับเปิดบริการเฉพาะรายการเข้าถึงทั้งเครือข่ายWeb Application และบริการภายใน

ตัวอย่างการใช้งาน Cloudflare Tunnel

  • เปิดหน้า Synology DSM ผ่าน nas.example.com
  • เปิด n8n ผ่าน n8n.example.com
  • เปิด Web Application ภายในองค์กร
  • เปิด Dashboard เช่น Grafana หรือ Uptime Kuma
  • เปิด REST API ให้ระบบภายนอกเรียกใช้งาน
  • ใช้งานกับเครือข่ายที่อยู่หลัง CGNAT
Cloudflare Tunnel Example
สามารถกำหนด Subdomain แยกสำหรับแต่ละบริการภายในองค์กรได้

ข้อดีของ Cloudflare Tunnel

  • ไม่ต้องเปิด Port Forwarding ลดความเสี่ยงจากการเปิดบริการภายในออกสู่อินเทอร์เน็ตโดยตรง
  • รองรับการใช้งานหลัง CGNAT แม้ไม่มี Public IP ก็สามารถใช้งานได้
  • เข้าผ่านชื่อโดเมน จดจำง่ายกว่า IP Address และหมายเลขพอร์ต
  • รองรับหลายบริการ สามารถสร้าง Subdomain แยกสำหรับแต่ละระบบ
  • ใช้งานร่วมกับ Cloudflare Access ได้ เพื่อเพิ่มการยืนยันตัวตนก่อนเข้าระบบ

แม้ Cloudflare Tunnel จะช่วยลดความเสี่ยงจากการเปิด Port Forwarding แต่ไม่ได้ทำให้ระบบปลอดภัยโดยอัตโนมัติ หากเป็นบริการสำคัญ เช่น Synology DSM, ERP, Router หรือ Dashboard ภายในองค์กร ควรใช้งานร่วมกับ Cloudflare Access และเปิดใช้งาน Multi-Factor Authentication (MFA) เพื่อเพิ่มความปลอดภัยอีกชั้นหนึ่ง

สิ่งที่ต้องเตรียมก่อนเริ่มใช้งาน Cloudflare Tunnel

ก่อนเริ่มสร้าง Cloudflare Tunnel ควรเตรียมองค์ประกอบพื้นฐานให้พร้อม เพื่อให้สามารถเชื่อมต่อบริการภายในกับ Cloudflare ได้อย่างถูกต้องและลดปัญหาระหว่างการติดตั้ง

1. ชื่อโดเมน (Domain Name)

Cloudflare Tunnel จำเป็นต้องใช้ชื่อโดเมนที่สามารถนำมาจัดการ DNS ผ่าน Cloudflare ได้ โดยสามารถใช้ได้ทั้งโดเมนใหม่และโดเมนที่ใช้งานอยู่แล้ว เช่น

  • example.com
  • example.co.th
  • mydomain.net

หลังจากเพิ่มโดเมนเข้า Cloudflare แล้ว เราสามารถสร้าง Subdomain สำหรับแต่ละบริการได้ เช่น

  • nas.example.com สำหรับ Synology DSM
  • n8n.example.com สำหรับ n8n
  • web.example.com สำหรับ Web Server
  • monitor.example.com สำหรับ Grafana หรือ Uptime Kuma
  • api.example.com สำหรับ REST API

ในบทความนี้จะใช้โดเมนตัวอย่าง synctechtestcloudflare.online เพื่อประกอบการอธิบาย ซึ่งสามารถเปลี่ยนเป็นโดเมนของคุณเองได้

2. บัญชี Cloudflare

จำเป็นต้องมีบัญชี Cloudflare สำหรับจัดการ DNS และ Cloudflare Tunnel หากยังไม่มีบัญชีสามารถสมัครได้ฟรี จากนั้นเพิ่มโดเมนเข้าสู่ Cloudflare Dashboard

สำหรับการใช้งานทั่วไป เช่น เปิด Synology DSM หรือ Web Application สามารถเริ่มต้นด้วย Free Plan ได้ทันที

3. Cloudflare Zero Trust

Cloudflare Tunnel ถูกบริหารจัดการผ่าน Cloudflare Zero Trust ซึ่งใช้สำหรับสร้าง Tunnel ตรวจสอบสถานะ Connector และกำหนดบริการที่ต้องการเปิดผ่านชื่อโดเมน

ในบทความนี้จะใช้ Cloudflare Zero Trust สำหรับ

  • สร้าง Tunnel
  • เชื่อมต่อ cloudflared Connector
  • เพิ่ม Public Hostname
  • เพิ่ม Cloudflare Access ในขั้นตอนท้ายของบทความ

4. เครื่องสำหรับติดตั้ง cloudflared

โปรแกรม cloudflared ทำหน้าที่เป็น Connector ระหว่าง Cloudflare กับเครือข่ายภายใน จึงควรติดตั้งบนอุปกรณ์ที่สามารถเปิดทำงานได้ตลอดเวลา เช่น

  • Synology NAS
  • Linux Server
  • Windows Server
  • Mini PC
  • Virtual Machine
  • Docker Container

ในบทความนี้จะใช้ Synology NAS + Container Manager ซึ่งเป็นวิธีที่ติดตั้งง่าย ใช้ทรัพยากรน้อย และเหมาะสำหรับการทำงานต่อเนื่องตลอด 24 ชั่วโมง

เพิ่มโดเมนเข้า Cloudflare

หากโดเมนของคุณยังไม่ได้ใช้งาน Cloudflare DNS ขั้นตอนแรกคือการเพิ่มโดเมนเข้าสู่บัญชี Cloudflare

ขั้นตอนที่ 1 เพิ่มโดเมน

  1. เข้าสู่ระบบ Cloudflare Dashboard
  2. ไปที่หน้า Account Home
  3. เลือก Add a domain
  4. กรอกชื่อโดเมนที่ต้องการใช้งาน
Add Domain
เพิ่มโดเมนเข้าสู่ Cloudflare Dashboard

ขั้นตอนที่ 2 เลือกแพ็กเกจ

Cloudflare จะให้เลือกแพ็กเกจการใช้งาน หากเริ่มต้นใช้งานทั่วไปหรือทดลองใช้งาน Cloudflare Tunnel สามารถเลือก

Free Plan

แล้วกด Continue เพื่อดำเนินการต่อ

สำหรับตัวอย่างในบทความนี้ ใช้ Cloudflare Free Plan

ขั้นตอนที่ 3 ตรวจสอบ DNS Records

Cloudflare จะสแกน DNS Records ที่มีอยู่เดิมและแสดงรายการให้ตรวจสอบ

หากเป็นโดเมนที่มีเว็บไซต์หรืออีเมลใช้งานอยู่ ควรตรวจสอบให้แน่ใจว่า DNS Records สำคัญถูกนำเข้ามาครบถ้วน

หากเป็นโดเมนใหม่ที่ใช้สำหรับ Cloudflare Tunnel โดยเฉพาะ สามารถตรวจสอบรายการแล้วกด Continue ได้ทันที

ขั้นตอนที่ 4 เปลี่ยน Nameserver

Cloudflare จะแสดง Nameserver ใหม่จำนวน 2 รายการ ให้นำไปแทนที่ Nameserver เดิมของโดเมนที่ผู้ให้บริการจดทะเบียนโดเมน (Registrar)

Cloudflare Nameserver
คัดลอก Nameserver ที่ Cloudflare กำหนด

จากนั้นเข้าสู่หน้าจัดการโดเมนของผู้ให้บริการ แล้วเปลี่ยน Nameserver เดิมให้เป็นค่าที่ Cloudflare กำหนด

Change Nameserver
เปลี่ยน Nameserver ที่ผู้ให้บริการโดเมน
ข้อควรระวัง
หากโดเมนมีเว็บไซต์หรือระบบอีเมลใช้งานอยู่ ควรตรวจสอบ DNS Records ให้ครบถ้วนก่อนเปลี่ยน Nameserver เพื่อป้องกันเว็บไซต์หรืออีเมลไม่สามารถใช้งานได้

ขั้นตอนที่ 5 รอการยืนยัน

หลังจากเปลี่ยน Nameserver แล้ว ให้กลับมายัง Cloudflare แล้วกด

Check nameservers now

เพื่อให้ Cloudflare ตรวจสอบสถานะ

Check Nameserver
ตรวจสอบสถานะ Nameserver หลังเปลี่ยนเรียบร้อย

การอัปเดต Nameserver อาจใช้เวลาตั้งแต่ไม่กี่นาทีจนถึงหลายชั่วโมง ขึ้นอยู่กับผู้ให้บริการโดเมน

Waiting Verification
Cloudflare กำลังตรวจสอบการเปลี่ยน Nameserver

เมื่อโดเมนได้รับการยืนยันเรียบร้อย Cloudflare จะแสดงสถานะเป็น

Active

Active Domain
เมื่อสถานะเป็น Active แสดงว่าโดเมนพร้อมใช้งาน

เมื่อโดเมนอยู่ในสถานะ Active แล้ว ก็พร้อมสำหรับการสร้าง Cloudflare Tunnel ในขั้นตอนถัดไป

สร้าง Cloudflare Tunnel

เมื่อโดเมนอยู่ในสถานะ Active แล้ว ขั้นตอนต่อไปคือการสร้าง Cloudflare Tunnel ซึ่งจะเป็นตัวกลางสำหรับเชื่อมต่อระหว่าง Cloudflare กับเครือข่ายภายในของเรา

Cloudflare Tunnel ประกอบด้วยองค์ประกอบหลัก 2 ส่วน ได้แก่

  1. สร้าง Tunnel บน Cloudflare
  2. ติดตั้งโปรแกรม cloudflared ภายในเครือข่ายเพื่อเชื่อมต่อกับ Tunnel ที่สร้างไว้

เมื่อทั้งสองส่วนทำงานร่วมกันได้แล้ว เราจะสามารถนำบริการภายใน เช่น Synology NAS, Web Server หรือ n8n มาเปิดใช้งานผ่านชื่อโดเมนได้

ขั้นตอนที่ 1 เข้าสู่ Cloudflare Zero Trust

จาก Cloudflare Dashboard ให้เลือก Zero Trust เพื่อเข้าสู่หน้าจัดการ Cloudflare Zero Trust

Cloudflare Zero Trust
เข้าสู่ Cloudflare Zero Trust เพื่อเริ่มสร้าง Tunnel

ขั้นตอนที่ 2 เปิดเมนู Cloudflare Tunnel

ภายใน Cloudflare Zero Trust ให้ไปยังเมนู Networks > Tunnels สำหรับจัดการ Tunnel ตามที่แสดงในภาพ

Cloudflare Tunnel Menu
เลือกเมนูสำหรับจัดการ Cloudflare Tunnel

จากนั้นกดปุ่ม Create tunnel เพื่อสร้าง Tunnel ใหม่

Create Tunnel
สร้าง Cloudflare Tunnel ใหม่

ขั้นตอนที่ 3 เลือก Connector Type

Cloudflare จะให้เลือกประเภทของ Connector สำหรับบทความนี้ให้เลือก

Cloudflared

เนื่องจากเราจะติดตั้งโปรแกรม cloudflared บน Synology NAS ผ่าน Container Manager

Cloudflared Connector
เลือก Cloudflared Connector

ขั้นตอนที่ 4 ตั้งชื่อ Tunnel

กำหนดชื่อ Tunnel ให้สามารถสื่อความหมายได้ง่าย เช่น

  • synctech
  • main-office
  • office-nas
  • head-office
  • branch-01

ตัวอย่างในบทความนี้ใช้ชื่อ

synctech

จากนั้นกด Save tunnel

Tunnel Name
ตั้งชื่อ Tunnel แล้วกด Save tunnel
Tips
หากมีหลายสาขา หรือหลาย Synology NAS แนะนำให้ตั้งชื่อ Tunnel ให้สื่อถึงสถานที่ เช่น
  • head-office
  • bangkok-office
  • factory-rayong
  • branch-01

จะช่วยให้บริหารจัดการได้ง่ายขึ้นเมื่อมี Tunnel หลายรายการ

ขั้นตอนที่ 5 คัดลอก Tunnel Token

หลังจากสร้าง Tunnel สำเร็จ Cloudflare จะแสดงคำสั่งสำหรับติดตั้ง Connector โดยภายในคำสั่งจะมี Tunnel Token สำหรับเชื่อมต่อกับ Tunnel ที่สร้างไว้

เมื่อใช้ Synology Container Manager เราจะใช้เฉพาะคำสั่ง

tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN

โดยแทนที่ YOUR_TUNNEL_TOKEN ด้วย Token จริงที่ Cloudflare สร้างให้

ตัวอย่าง

tunnel --no-autoupdate run --token eyJhIjoiNTU2MDgwOGM3ZDk1NGNl...

ในบทความนี้ได้ตัด Tunnel Token ออกบางส่วนเพื่อความปลอดภัย ส่วนการติดตั้งจริงให้ใช้ Token ของบัญชีคุณเอง

ข้อควรระวัง
Tunnel Token เป็นข้อมูลสำคัญ ไม่ควรเผยแพร่ลงบนเว็บไซต์ รูปภาพ วิดีโอ หรือ Git Repository หากสงสัยว่า Token ถูกเปิดเผย ควรสร้าง Token ใหม่ทันที

ติดตั้ง cloudflared บน Synology NAS

เมื่อได้ Tunnel Token แล้ว ขั้นตอนต่อไปคือการติดตั้ง cloudflared บน Synology NAS ผ่าน Container Manager เพื่อเชื่อมต่อ Tunnel กับเครือข่ายภายใน

ในบทความนี้จะใช้วิธีติดตั้งผ่าน Container Manager เนื่องจากตั้งค่าได้ง่าย ใช้ทรัพยากรน้อย และเหมาะสำหรับการทำงานตลอดเวลา

ขั้นตอนที่ 1 ดาวน์โหลด Image

เข้าสู่ระบบ Synology DSM แล้วเปิด Container Manager

เลือกเมนู Registry แล้วค้นหา

cloudflare/cloudflared

เลือก Image ที่เผยแพร่โดย Cloudflare แล้วกด Download

สำหรับ Tag สามารถเลือก

latest

เพื่อใช้งานเวอร์ชันล่าสุด

Download cloudflared
ดาวน์โหลด Image cloudflare/cloudflared

ขั้นตอนที่ 2 สร้าง Container

เมื่อดาวน์โหลด Image เสร็จแล้ว ไปที่เมนู Images เลือก cloudflare/cloudflared แล้วกด Run

ตั้งชื่อ Container เช่น

  • cloudflared
  • cf-tunnel
  • synctech-tunnel

จากนั้นเปิดใช้งาน

Enable auto-restart

เพื่อให้ Container กลับมาทำงานอัตโนมัติหลัง Synology NAS รีสตาร์ท

Run Container
สร้าง Container และเปิดใช้งาน Auto Restart
Container Settings
ตรวจสอบการตั้งค่าก่อนกำหนด Execution Command

ขั้นตอนที่ 3 กำหนด Execution Command

ในช่อง Execution Command ให้ใส่คำสั่ง

tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN

ตัวอย่าง

tunnel --no-autoupdate run --token eyJhIjoiNTU2MDgwOGM3ZDk1NGNl...

(แนะนำให้เพิ่ม --no-autoupdate เพื่อป้องกันปัญหา Container ทำงานผิดพลาดในระยะยาว หากต้องการอัปเดตเวอร์ชันควรทำผ่านการดาวน์โหลด Image ตัวใหม่ (Pull latest) แทนการให้โปรแกรมอัปเดตตัวเองภายใน Container)

จากนั้นกด Next และ Done

Execution Command
กำหนด Execution Command สำหรับ cloudflared

ตรวจสอบสถานะ Connector

หลังจาก Container เริ่มทำงาน ให้กลับไปที่หน้า Cloudflare Tunnel หากเชื่อมต่อสำเร็จจะเห็นสถานะเป็น

  • Healthy
  • Connected

แสดงว่า Synology NAS เชื่อมต่อกับ Cloudflare สำเร็จ และพร้อมสำหรับการเพิ่มบริการภายใน

Tunnel Healthy
สถานะ Healthy แสดงว่า Connector พร้อมใช้งาน
หากเชื่อมต่อไม่สำเร็จ
  • ตรวจสอบว่า Tunnel Token ถูกต้อง
  • ตรวจสอบว่า Synology NAS เชื่อมต่ออินเทอร์เน็ตได้
  • ตรวจสอบว่า Container อยู่ในสถานะ Running
  • ตรวจสอบ Log ของ Container
  • ตรวจสอบว่าเลือก Tunnel ถูกต้อง

เมื่อสถานะเป็น Healthy แล้ว ก็พร้อมสำหรับการเพิ่มบริการภายในให้เข้าถึงผ่าน Cloudflare Tunnel ในขั้นตอนถัดไป

เพิ่มบริการภายในให้เข้าถึงผ่าน Cloudflare Tunnel

หลังจาก Tunnel และ Connector ทำงานเรียบร้อยแล้ว ขั้นตอนต่อไปคือการกำหนดว่าบริการใดภายในเครือข่ายจะสามารถเข้าถึงผ่านอินเทอร์เน็ตได้

Cloudflare จะเชื่อมโยงชื่อโดเมน (Subdomain) ที่เรากำหนดไว้เข้ากับบริการภายในผ่าน Tunnel ทำให้ผู้ใช้งานสามารถเปิดบริการผ่านชื่อโดเมนได้ โดยไม่ต้องเชื่อมต่อมายัง Public IP ขององค์กรโดยตรง

ตัวอย่างในบทความนี้จะเปิดหน้า Synology DSM ผ่าน Cloudflare Tunnel

สมมติว่า Synology NAS ภายใน LAN ใช้งานที่

http://192.168.200.11:5000

และต้องการให้ผู้ใช้งานเข้าผ่าน

https://nas.synctechtestcloudflare.online

เมื่อกำหนดค่าเสร็จ ผู้ใช้งานจะเข้าผ่านชื่อโดเมนดังกล่าวได้ทันที โดยไม่ต้องเปิด Port Forwarding บน Router

Cloudflare Tunnel Service
หลังจาก Tunnel พร้อมใช้งาน สามารถเพิ่มบริการภายในผ่าน Public Hostname ได้

ขั้นตอนที่ 1 เปิดหน้าตั้งค่า Public Hostname

กลับไปยังหน้า Cloudflare Tunnel แล้วเลือก Tunnel ที่สร้างไว้ จากนั้นกด Configure

เลือกแท็บ Public Hostnames แล้วกด Add a public hostname

Public Hostname
เพิ่ม Public Hostname สำหรับบริการภายใน

ขั้นตอนที่ 2 กำหนดค่า Public Hostname

กรอกข้อมูลตามตัวอย่างดังนี้

รายการตัวอย่างคำอธิบาย
Subdomainnasชื่อย่อยของบริการ
Domainsynctechtestcloudflare.onlineเลือกโดเมนที่เพิ่มไว้ใน Cloudflare
Service TypeHTTPเลือก Protocol ของบริการภายใน
URL192.168.200.11:5000IP Address และ Port ของบริการภายใน

สำหรับตัวอย่างในบทความนี้ Synology DSM ภายในใช้งานผ่าน

http://192.168.200.11:5000

จึงเลือก

Service Type = HTTP

หากบริการของคุณใช้งานผ่าน HTTPS เช่น

https://192.168.200.11:5001

สามารถเลือก Service Type = HTTPS ได้ (หมายเหตุ: สำหรับผู้ใช้งาน Synology NAS ส่วนใหญ่ Certificate เริ่มต้นจะเป็น Self-signed ซึ่ง Cloudflare จะบล็อกและขึ้น Error 502 Bad Gateway ทันที วิธีแก้คือต้องเข้าไปที่เมนู Additional application settings > TLS แล้วเปิดใช้งาน No TLS Verify ให้เป็น Enable ก่อนใช้งาน)

Hostname Configuration
กำหนด Subdomain และบริการปลายทางภายใน LAN
Tips

หากไม่แน่ใจว่าบริการภายในใช้ HTTP หรือ HTTPS ให้ทดลองเปิดจากเครื่องภายใน LAN ก่อน เช่น

http://192.168.200.11:5000

หรือ

https://192.168.200.11:5001

จากนั้นเลือก Service Type ให้ตรงกับบริการจริง

ขั้นตอนที่ 3 ทดสอบการเชื่อมต่อ

เมื่อบันทึกการตั้งค่าเรียบร้อย Cloudflare จะสร้าง DNS Record ที่เกี่ยวข้องให้อัตโนมัติ

ทดลองเปิดผ่านเว็บเบราว์เซอร์ เช่น

https://nas.synctechtestcloudflare.online

หากทุกอย่างถูกต้อง หน้า Login ของ Synology DSM จะปรากฏผ่าน Cloudflare Tunnel

Test DSM
ทดลองเปิด Synology DSM ผ่านชื่อโดเมน
DSM Login
เมื่อเชื่อมต่อสำเร็จ จะสามารถเข้าสู่หน้า Login ของ Synology DSM ได้

ตัวอย่างการกำหนด Public Hostname สำหรับบริการอื่น

Cloudflare Tunnel สามารถสร้าง Public Hostname ได้หลายรายการภายใน Tunnel เดียว ทำให้สามารถเผยแพร่หลายบริการผ่านโดเมนเดียวกันได้

บริการInternal URLSubdomain
Synology DSMhttp://192.168.200.11:5000nas.example.com
n8nhttp://192.168.200.11:5678n8n.example.com
Web Serverhttp://192.168.200.20web.example.com
Grafanahttp://192.168.200.30:3000grafana.example.com
Uptime Kumahttp://192.168.200.30:3001status.example.com
REST APIhttp://192.168.200.40:8080api.example.com

การแยก Subdomain ตามประเภทของบริการช่วยให้บริหารจัดการง่ายขึ้น และสามารถกำหนดสิทธิ์การเข้าถึงแต่ละระบบผ่าน Cloudflare Access ได้อย่างอิสระในภายหลัง

ข้อควรระวัง
Cloudflare Tunnel ช่วยสร้างช่องทางเชื่อมต่อเท่านั้น หากเป็นระบบสำคัญ เช่น Synology DSM, Router, Firewall, ERP หรือ Dashboard ภายในองค์กร ควรใช้งานร่วมกับ Cloudflare Access เพื่อบังคับให้ผู้ใช้งานยืนยันตัวตนก่อนเข้าถึงระบบทุกครั้ง

เพิ่ม Cloudflare Access เพื่อเพิ่มความปลอดภัย

Cloudflare Tunnel ช่วยให้สามารถเข้าถึงบริการภายในได้โดยไม่ต้องเปิด Port Forwarding แต่ไม่ได้หมายความว่าระบบภายในจะปลอดภัยโดยอัตโนมัติ

Cloudflare Tunnel มีหน้าที่สร้างช่องทางเชื่อมต่อระหว่าง Cloudflare กับบริการภายในเท่านั้น ไม่ได้ทำหน้าที่ตรวจสอบสิทธิ์หรือยืนยันตัวตนของผู้ใช้งาน ดังนั้น หากเปิดบริการสำคัญ เช่น Synology DSM, n8n, Router, Firewall หรือ Dashboard ภายในองค์กร ควรใช้งานร่วมกับ Cloudflare Access ทุกครั้ง

Cloudflare Access เป็นบริการในชุด Cloudflare Zero Trust ที่ช่วยกำหนดว่าใครสามารถเข้าถึงบริการภายในได้ โดยผู้ใช้งานจะต้องผ่านการยืนยันตัวตนก่อน จึงจะสามารถเข้าถึงบริการที่กำหนดไว้ได้

Cloudflare Access สามารถทำอะไรได้บ้าง?

  • กำหนดให้ผู้ใช้งานต้อง Login ก่อนเข้าระบบ
  • รองรับ Google Workspace
  • รองรับ Microsoft Entra ID
  • รองรับ GitHub และ Identity Provider อื่น ๆ
  • บังคับใช้ Multi-Factor Authentication (MFA)
  • จำกัดการเข้าถึงตาม Email
  • จำกัดการเข้าถึงตามประเทศ
  • จำกัดการเข้าถึงตาม Public IP
  • กำหนดระยะเวลาการ Login (Session Duration)

ตัวอย่างการใช้งาน

สมมติว่าเปิด Synology DSM ผ่าน

https://nas.example.com

แทนที่จะเปิดหน้า Login ของ Synology ทันที Cloudflare Access จะตรวจสอบตัวตนของผู้ใช้งานก่อน

ตัวอย่างเช่น อนุญาตเฉพาะผู้ใช้งานที่ใช้อีเมลของบริษัท

@sync.co.th

เมื่อผ่านการตรวจสอบแล้ว Cloudflare จึงจะส่ง Request ไปยัง Synology DSM ภายในเครือข่าย

คำแนะนำ
หากเป็นระบบสำคัญ เช่น Synology DSM, ERP, NAS หรือ Dashboard ภายในองค์กร ควรเปิดใช้งาน Multi-Factor Authentication (MFA) ร่วมกับ Cloudflare Access ทุกครั้ง

แนวทางการใช้งานที่แนะนำ (Best Practices)

แม้ Cloudflare Tunnel จะช่วยลดความเสี่ยงจากการเปิด Port Forwarding ได้มาก แต่การออกแบบระบบที่ปลอดภัยควรใช้หลายมาตรการร่วมกัน

  • เปิดใช้งาน Cloudflare Access สำหรับทุกบริการที่สำคัญ
  • เปิดใช้งาน Multi-Factor Authentication (MFA)
  • กำหนดสิทธิ์ผู้ใช้งานตามความจำเป็น (Least Privilege)
  • กำหนด Session Timeout ให้เหมาะสม
  • ใช้รหัสผ่านที่คาดเดายาก
  • อัปเดต Synology DSM และ cloudflared อย่างสม่ำเสมอ
  • ตรวจสอบ Log ของ Tunnel และบริการภายในเป็นระยะ
  • สำรองข้อมูลของระบบเป็นประจำ
  • เก็บ Tunnel Token ไว้ในที่ปลอดภัย
  • เปิดเฉพาะบริการที่จำเป็นต่อการใช้งานจริง

ข้อควรระวัง

ไม่ควรทำ
  • เปิด Synology DSM ให้ทุกคนเข้าถึงโดยไม่มี Cloudflare Access
  • เผยแพร่ Tunnel Token ลงในเว็บไซต์ รูปภาพ หรือเอกสารสาธารณะ
  • เปิด Router หรือ Firewall ผ่าน Tunnel โดยไม่มีการยืนยันตัวตน
  • ใช้รหัสผ่านที่อ่อนหรือไม่มี MFA
  • เปิดบริการที่ไม่จำเป็นออกสู่อินเทอร์เน็ต
  • ละเลยการอัปเดต Synology DSM หรือ cloudflared เป็นเวลานาน

หากเชื่อมต่อไม่ได้ ควรตรวจสอบอะไรบ้าง?

หาก Tunnel มีสถานะเป็น Healthy แต่ยังไม่สามารถเปิดบริการผ่านชื่อโดเมนได้ ให้ตรวจสอบตามลำดับดังนี้

  1. Container cloudflared ยังอยู่ในสถานะ Running หรือไม่
  2. Tunnel Token ถูกต้องหรือไม่
  3. Public Hostname ตั้งค่าถูกต้องหรือไม่
  4. Service Type ตรงกับบริการปลายทางหรือไม่ (HTTP หรือ HTTPS)
  5. IP Address และ Port ของบริการภายในถูกต้องหรือไม่
  6. สามารถเปิดบริการจากเครื่องภายใน LAN ได้ตามปกติหรือไม่
  7. DNS ของโดเมนอัปเดตเรียบร้อยแล้วหรือยัง
  8. ตรวจสอบ Log ของ Container เพื่อดูรายละเอียดของ Error
ตัวอย่าง

หาก Synology DSM เปิดใช้งานที่

http://192.168.200.11:5000

แต่ตั้งค่า Public Hostname เป็น

Service Type = HTTPS

การเชื่อมต่ออาจไม่สำเร็จ เนื่องจาก Protocol ไม่ตรงกับบริการปลายทาง ดังนั้นควรตรวจสอบ Protocol ของบริการภายในก่อนตั้งค่าเสมอ

สรุป

Cloudflare Tunnel เป็นอีกหนึ่งทางเลือกที่ช่วยให้สามารถเผยแพร่บริการภายใน เช่น Synology NAS, Web Server, n8n, Dashboard และ API ออกสู่อินเทอร์เน็ตได้อย่างปลอดภัย โดยไม่จำเป็นต้องเปิด Port Forwarding หรือเปิดเผย Public IP ขององค์กร

สำหรับผู้ใช้งาน Synology NAS การติดตั้ง cloudflared ผ่าน Container Manager เป็นวิธีที่ง่าย ใช้ทรัพยากรน้อย และเหมาะสำหรับการทำงานตลอดเวลา เมื่อเชื่อมต่อสำเร็จแล้วสามารถเพิ่ม Public Hostname เพื่อเปิดบริการภายในผ่านชื่อโดเมนได้ทันที

อย่างไรก็ตาม หากเป็นบริการสำคัญ ไม่ควรใช้งาน Cloudflare Tunnel เพียงอย่างเดียว แต่ควรใช้งานร่วมกับ Cloudflare Access, Multi-Factor Authentication (MFA), การกำหนดสิทธิ์ผู้ใช้งาน และการตรวจสอบ Log อย่างสม่ำเสมอ เพื่อให้ระบบมีความปลอดภัยมากยิ่งขึ้น

เมื่อออกแบบระบบอย่างเหมาะสม Cloudflare Tunnel จะช่วยลดความยุ่งยากในการเปิดบริการภายใน รองรับการทำงานจากภายนอกได้อย่างสะดวก และเพิ่มความปลอดภัยให้กับระบบได้อย่างมีประสิทธิภาพ ทั้งสำหรับผู้ใช้งานตามบ้าน ธุรกิจขนาดเล็ก และองค์กร