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 ทำงานอย่างไร?
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 แล้วส่งผลลัพธ์กลับมายังผู้ใช้งาน
Synology NAS / n8n / Web Server / API
ข้อดีของแนวทางนี้คือ ผู้ใช้งานภายนอกจะเชื่อมต่อผ่าน Cloudflare แทนที่จะเชื่อมต่อมายัง Public IP ขององค์กรโดยตรง ทำให้ไม่จำเป็นต้องเปิด Port Forwarding สำหรับบริการเหล่านั้น
Cloudflare Tunnel ต่างจาก VPN และ Port Forwarding อย่างไร?
แม้ว่าทั้งสามวิธีจะช่วยให้สามารถเข้าถึงระบบภายในจากภายนอกได้เหมือนกัน แต่แนวคิดในการใช้งานแตกต่างกันอย่างชัดเจน
| หัวข้อ | Port Forwarding | VPN | Cloudflare 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
- ไม่ต้องเปิด 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 เพิ่มโดเมน
- เข้าสู่ระบบ Cloudflare Dashboard
- ไปที่หน้า Account Home
- เลือก Add a domain
- กรอกชื่อโดเมนที่ต้องการใช้งาน

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

ขั้นตอนที่ 3 ตรวจสอบ DNS Records
Cloudflare จะสแกน DNS Records ที่มีอยู่เดิมและแสดงรายการให้ตรวจสอบ
หากเป็นโดเมนที่มีเว็บไซต์หรืออีเมลใช้งานอยู่ ควรตรวจสอบให้แน่ใจว่า DNS Records สำคัญถูกนำเข้ามาครบถ้วน
หากเป็นโดเมนใหม่ที่ใช้สำหรับ Cloudflare Tunnel โดยเฉพาะ สามารถตรวจสอบรายการแล้วกด Continue ได้ทันที
ขั้นตอนที่ 4 เปลี่ยน Nameserver
Cloudflare จะแสดง Nameserver ใหม่จำนวน 2 รายการ ให้นำไปแทนที่ Nameserver เดิมของโดเมนที่ผู้ให้บริการจดทะเบียนโดเมน (Registrar)

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

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

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

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

เมื่อโดเมนอยู่ในสถานะ Active แล้ว ก็พร้อมสำหรับการสร้าง Cloudflare Tunnel ในขั้นตอนถัดไป
สร้าง Cloudflare Tunnel
เมื่อโดเมนอยู่ในสถานะ Active แล้ว ขั้นตอนต่อไปคือการสร้าง Cloudflare Tunnel ซึ่งจะเป็นตัวกลางสำหรับเชื่อมต่อระหว่าง Cloudflare กับเครือข่ายภายในของเรา
Cloudflare Tunnel ประกอบด้วยองค์ประกอบหลัก 2 ส่วน ได้แก่
- สร้าง Tunnel บน Cloudflare
- ติดตั้งโปรแกรม cloudflared ภายในเครือข่ายเพื่อเชื่อมต่อกับ Tunnel ที่สร้างไว้
เมื่อทั้งสองส่วนทำงานร่วมกันได้แล้ว เราจะสามารถนำบริการภายใน เช่น Synology NAS, Web Server หรือ n8n มาเปิดใช้งานผ่านชื่อโดเมนได้
ขั้นตอนที่ 1 เข้าสู่ Cloudflare Zero Trust
จาก Cloudflare Dashboard ให้เลือก Zero Trust เพื่อเข้าสู่หน้าจัดการ Cloudflare Zero Trust

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

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

ขั้นตอนที่ 3 เลือก Connector Type
Cloudflare จะให้เลือกประเภทของ Connector สำหรับบทความนี้ให้เลือก
Cloudflared
เนื่องจากเราจะติดตั้งโปรแกรม cloudflared บน Synology NAS ผ่าน Container Manager

ขั้นตอนที่ 4 ตั้งชื่อ Tunnel
กำหนดชื่อ Tunnel ให้สามารถสื่อความหมายได้ง่าย เช่น
- synctech
- main-office
- office-nas
- head-office
- branch-01
ตัวอย่างในบทความนี้ใช้ชื่อ
synctech
จากนั้นกด Save tunnel

หากมีหลายสาขา หรือหลาย 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
เพื่อใช้งานเวอร์ชันล่าสุด

ขั้นตอนที่ 2 สร้าง Container
เมื่อดาวน์โหลด Image เสร็จแล้ว ไปที่เมนู Images เลือก cloudflare/cloudflared แล้วกด Run
ตั้งชื่อ Container เช่น
- cloudflared
- cf-tunnel
- synctech-tunnel
จากนั้นเปิดใช้งาน
Enable auto-restart
เพื่อให้ Container กลับมาทำงานอัตโนมัติหลัง Synology NAS รีสตาร์ท


ขั้นตอนที่ 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

ตรวจสอบสถานะ Connector
หลังจาก Container เริ่มทำงาน ให้กลับไปที่หน้า Cloudflare Tunnel หากเชื่อมต่อสำเร็จจะเห็นสถานะเป็น
- Healthy
- Connected
แสดงว่า Synology NAS เชื่อมต่อกับ Cloudflare สำเร็จ และพร้อมสำหรับการเพิ่มบริการภายใน

- ตรวจสอบว่า 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

ขั้นตอนที่ 1 เปิดหน้าตั้งค่า Public Hostname
กลับไปยังหน้า Cloudflare Tunnel แล้วเลือก Tunnel ที่สร้างไว้ จากนั้นกด Configure
เลือกแท็บ Public Hostnames แล้วกด Add a public hostname

ขั้นตอนที่ 2 กำหนดค่า Public Hostname
กรอกข้อมูลตามตัวอย่างดังนี้
| รายการ | ตัวอย่าง | คำอธิบาย |
|---|---|---|
| Subdomain | nas | ชื่อย่อยของบริการ |
| Domain | synctechtestcloudflare.online | เลือกโดเมนที่เพิ่มไว้ใน Cloudflare |
| Service Type | HTTP | เลือก Protocol ของบริการภายใน |
| URL | 192.168.200.11:5000 | IP 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 ก่อนใช้งาน)

หากไม่แน่ใจว่าบริการภายในใช้ 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


ตัวอย่างการกำหนด Public Hostname สำหรับบริการอื่น
Cloudflare Tunnel สามารถสร้าง Public Hostname ได้หลายรายการภายใน Tunnel เดียว ทำให้สามารถเผยแพร่หลายบริการผ่านโดเมนเดียวกันได้
| บริการ | Internal URL | Subdomain |
|---|---|---|
| Synology DSM | http://192.168.200.11:5000 | nas.example.com |
| n8n | http://192.168.200.11:5678 | n8n.example.com |
| Web Server | http://192.168.200.20 | web.example.com |
| Grafana | http://192.168.200.30:3000 | grafana.example.com |
| Uptime Kuma | http://192.168.200.30:3001 | status.example.com |
| REST API | http://192.168.200.40:8080 | api.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 แต่ยังไม่สามารถเปิดบริการผ่านชื่อโดเมนได้ ให้ตรวจสอบตามลำดับดังนี้
- Container cloudflared ยังอยู่ในสถานะ Running หรือไม่
- Tunnel Token ถูกต้องหรือไม่
- Public Hostname ตั้งค่าถูกต้องหรือไม่
- Service Type ตรงกับบริการปลายทางหรือไม่ (HTTP หรือ HTTPS)
- IP Address และ Port ของบริการภายในถูกต้องหรือไม่
- สามารถเปิดบริการจากเครื่องภายใน LAN ได้ตามปกติหรือไม่
- DNS ของโดเมนอัปเดตเรียบร้อยแล้วหรือยัง
- ตรวจสอบ 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 จะช่วยลดความยุ่งยากในการเปิดบริการภายใน รองรับการทำงานจากภายนอกได้อย่างสะดวก และเพิ่มความปลอดภัยให้กับระบบได้อย่างมีประสิทธิภาพ ทั้งสำหรับผู้ใช้งานตามบ้าน ธุรกิจขนาดเล็ก และองค์กร
