Cloudflare Tunnel เป็นบริการของ Cloudflare ที่ช่วยให้เราสามารถเข้าถึงอุปกรณ์หรือบริการภายในเครือข่ายส่วนตัว เช่น NAS, Web Server, Dashboard, API, n8n หรือระบบหลังบ้านต่าง ๆ ได้จากภายนอกผ่านอินเทอร์เน็ตอย่างปลอดภัย โดยไม่จำเป็นต้องเปิด Port Forwarding จาก Router หรือ Firewall เข้ามายังระบบภายในโดยตรง
ตัวอย่างเช่น หากคุณมี Synology NAS อยู่ในออฟฟิศ และต้องการเข้าหน้า DSM จากภายนอก ปกติอาจต้องเปิดพอร์ต 5000 หรือ 5001 ออกสู่อินเทอร์เน็ต ซึ่งมีความเสี่ยงด้านความปลอดภัย แต่เมื่อใช้ Cloudflare Tunnel เราสามารถเข้าผ่านชื่อโดเมน เช่น nas.example.com ได้ โดยไม่ต้องเปิดพอร์ตจากภายนอกเข้ามาที่ NAS โดยตรง
Cloudflare Tunnel จึงเหมาะทั้งกับผู้ใช้ตามบ้าน, Homelab, ธุรกิจขนาดเล็ก, ร้านค้า, สำนักงาน และองค์กรที่ต้องการเข้าถึงระบบภายในจากภายนอกแบบสะดวกและปลอดภัยมากขึ้น

Cloudflare Tunnel คืออะไร?
Cloudflare Tunnel คือระบบที่ใช้โปรแกรมชื่อ cloudflared ทำหน้าที่เป็น Connector ภายในเครือข่ายของเรา โดย cloudflared จะเชื่อมต่อออกไปยัง Cloudflare จากนั้น Cloudflare จะเป็นตัวกลางในการรับ Request จากผู้ใช้งานภายนอก แล้วส่งต่อกลับมายังบริการภายในผ่าน Tunnel ที่สร้างไว้
จุดสำคัญคือการเชื่อมต่อเป็นแบบ Outbound Connection จากภายในออกไปหา Cloudflare แทนที่จะเปิดทางให้คนภายนอกเชื่อมเข้ามาโดยตรง ดังนั้นจึงช่วยลดความเสี่ยงจากการเปิดพอร์ตบริการภายในออกสู่อินเทอร์เน็ต
Cloudflare Tunnel ต่างจาก VPN หรือ Port Forwarding อย่างไร?
| หัวข้อ | Port Forwarding | VPN | Cloudflare Tunnel |
|---|---|---|---|
| การเปิดพอร์ตจากภายนอก | ต้องเปิดพอร์ตที่ Router หรือ Firewall | มักต้องเปิดพอร์ต VPN | ไม่ต้องเปิด Inbound Port เข้ามาที่ระบบภายใน |
| การเข้าถึง | เข้าผ่าน Public IP หรือ DDNS | ต้องเชื่อม VPN ก่อนใช้งาน | เข้าผ่านชื่อโดเมน เช่น nas.example.com |
| การซ่อน Public IP | มักเปิดเผย IP จริง | ขึ้นอยู่กับการตั้งค่า | ช่วยลดการเปิดเผย WAN IP ของต้นทาง |
| การควบคุมสิทธิ์ | ต้องจัดการเอง | จัดการผ่านระบบ VPN | สามารถใช้ร่วมกับ Cloudflare Access, Identity Provider และ MFA ได้ |
| เหมาะกับงาน | เปิดบริการแบบง่าย แต่มีความเสี่ยงหากตั้งค่าไม่ดี | เข้าถึงทั้งเครือข่ายหรือ Remote Access แบบเต็มรูปแบบ | เปิดเฉพาะบริการที่ต้องการผ่านชื่อโดเมน |
ตัวอย่างการใช้งาน Cloudflare Tunnel
- เปิดหน้า DSM ของ Synology NAS ผ่านชื่อโดเมน เช่น nas.example.com
- เปิด n8n ภายในองค์กรผ่านชื่อโดเมน เช่น n8n.example.com
- เปิด Web Application ภายในบริษัทให้เข้าถึงจากภายนอก
- เปิด Dashboard ภายใน เช่น Grafana, Uptime Kuma หรือ Home Assistant
- เปิด API ภายในให้บริการภายนอกเรียกใช้งานอย่างควบคุมได้
- ใช้งานกับระบบที่อยู่หลัง CGNAT ซึ่งไม่สามารถทำ Port Forwarding ได้

ข้อดีของ Cloudflare Tunnel
- ไม่ต้องเปิด Port Forwarding: ลดความเสี่ยงจากการเปิดพอร์ต NAS, Server หรือ Web App ออกสู่อินเทอร์เน็ตโดยตรง
- เข้าผ่าน HTTPS: ผู้ใช้งานเข้าผ่าน HTTPS บนพอร์ตมาตรฐาน 443 ได้ แม้บริการภายในจะเป็น HTTP
- ไม่ต้องจำเลขพอร์ต: จากเดิมอาจต้องจำ 192.168.200.11:5000 ก็เปลี่ยนเป็น nas.example.com ได้
- ซ่อน WAN IP: ผู้ใช้งานภายนอกเชื่อมผ่าน Cloudflare แทนการเข้าถึง Public IP ขององค์กรโดยตรง
- เหมาะกับหลายบริการ: สามารถสร้าง Subdomain แยกตามระบบ เช่น nas.example.com, n8n.example.com, monitor.example.com
- ใช้ร่วมกับ Zero Trust ได้: สามารถเพิ่ม Cloudflare Access เพื่อบังคับ Login, จำกัด Email, จำกัด IP หรือเปิด MFA ก่อนเข้าระบบสำคัญ
สิ่งที่ต้องเตรียมก่อนเริ่มใช้งาน
1. ชื่อโดเมน
ต้องมีชื่อโดเมนที่สามารถนำไปจัดการ DNS ผ่าน Cloudflare ได้ เช่น
- example.com
- yourcompany.co.th
- mydomain.com
หลังจากนำโดเมนเข้า Cloudflare แล้ว เราสามารถสร้าง Subdomain สำหรับบริการต่าง ๆ ได้ เช่น
- nas.example.com สำหรับ Synology NAS
- n8n.example.com สำหรับ n8n
- web.example.com สำหรับ Web Server
- monitor.example.com สำหรับ Monitoring Dashboard
ในตัวอย่างนี้จะใช้โดเมน synctechtestcloudflare.online เพื่อประกอบการอธิบาย
2. บัญชี Cloudflare
ต้องมีบัญชี Cloudflare เพื่อจัดการโดเมน DNS และ Cloudflare Zero Trust โดยสามารถสมัครผ่านเว็บไซต์ Cloudflare ได้ จากนั้นเพิ่มโดเมนของเราเข้าไปใน Cloudflare Dashboard
3. Cloudflare Zero Trust
Cloudflare Tunnel จะถูกจัดการผ่านระบบ Cloudflare Zero Trust ซึ่งใช้สำหรับสร้าง Tunnel, จัดการ Connector, ตั้งค่า Public Hostname และตั้งค่า Access Policy เพิ่มเติม
4. เครื่องสำหรับติดตั้ง cloudflared Connector
ต้องมีเครื่องภายใน LAN ที่เปิดใช้งานตลอดเวลา เช่น Server, Mini PC, Linux Server, Windows Server, Synology NAS หรือ Docker Container โดยในบทความนี้จะใช้ตัวอย่างเป็น Synology NAS + Container Manager
เพิ่มโดเมนเข้า Cloudflare
- เข้าสู่ Cloudflare Dashboard
- ไปที่หน้า Account Home
- เลือก Add a domain หรือ Add site
- กรอกชื่อโดเมนที่ต้องการใช้งาน
- เลือกแผนที่ต้องการ หากเริ่มต้นใช้งานทั่วไปสามารถเลือก Free Plan ได้
- ตรวจสอบ DNS Record เดิมที่ Cloudflare สแกนมา
- ทำตามขั้นตอนจน Cloudflare แสดง Nameserver ที่ต้องนำไปตั้งค่าที่ผู้ให้บริการโดเมน

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

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

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

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


เมื่อ Nameserver ถูกอัปเดตและยืนยันสำเร็จ ใน Cloudflare Dashboard จะแสดงสถานะโดเมนเป็น Active

สร้าง Cloudflare Tunnel
หลังจากโดเมนพร้อมใช้งานแล้ว ขั้นตอนถัดไปคือการสร้าง Cloudflare Tunnel ซึ่งจะเป็นการเชื่อมต่อระหว่างเครือข่าย LAN ของเราและบริการของ Cloudflare
การตั้งค่า Tunnel มีอยู่ 2 ส่วนหลัก ๆ คือ
- สร้าง Tunnel บน Cloudflare
- สร้าง Connector ภายใน LAN เพื่อให้สื่อสารออกไปยัง Tunnel ที่สร้างไว้
เมื่อทั้งสองส่วนทำงานร่วมกันได้ เราจะสามารถเพิ่มบริการภายใน LAN เช่น Synology NAS, n8n หรือ Web Server ให้เข้าถึงผ่านชื่อโดเมนได้
ขั้นตอนสร้าง Tunnel ใน Cloudflare
- เข้าสู่ Cloudflare Dashboard
- ไปที่เมนู Zero Trust
- ไปที่ Networks หรือ Networking
- เลือก Connectors หรือ Tunnels
- เลือก Cloudflare Tunnels
- กด Create tunnel หรือ Add a tunnel
- เลือก Connector Type เป็น Cloudflared
- ตั้งชื่อ Tunnel เช่น synctech, office-nas หรือ main-office
- กด Save tunnel หรือ Create tunnel




ตั้งชื่อ Tunnel ให้จำง่าย เช่น synctech จากนั้นกด Save tunnel

ติดตั้ง cloudflared Connector บน Synology NAS ด้วย Container Manager
ในบทความนี้จะติดตั้ง cloudflared ด้วย Docker Container บน Synology NAS ผ่าน Container Manager เพราะใช้ทรัพยากรน้อยกว่าการติดตั้งใน Virtual Machine และเหมาะกับการรันตลอดเวลา
Cloudflare จะแสดงคำสั่ง Docker สำหรับติดตั้ง Connector ประมาณนี้
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
ข้อควรระวัง: ห้ามนำ Tunnel Token จริงไปเผยแพร่ในเว็บไซต์ รูปภาพ หรือเอกสารสาธารณะ เพราะ Token นี้ใช้เชื่อม Tunnel เข้ากับ Cloudflare หาก Token หลุดควรลบ Connector เดิมหรือสร้าง Token ใหม่ทันที

ขั้นตอนที่ 1: ดาวน์โหลด Image cloudflared
- เข้าสู่ Synology DSM
- เปิด Container Manager
- ไปที่เมนู Registry
- ค้นหาคำว่า cloudflare หรือ cloudflared
- เลือก Image ชื่อ cloudflare/cloudflared
- กด Download
- เลือก Tag เป็น latest หรือเวอร์ชันที่ต้องการ

ขั้นตอนที่ 2: สร้าง Container
- ไปที่เมนู Images
- เลือก Image cloudflare/cloudflared
- กด Run
- ตั้งชื่อ Container เช่น cloudflared, cf-tunnel หรือ synctech-tunnel
- เปิดใช้งาน Enable auto-restart เพื่อให้ Container กลับมาทำงานเองหลัง NAS Restart
- กด Next เพื่อไปยังหน้าตั้งค่า Command


ขั้นตอนที่ 3: ใส่ Execution Command
หากใช้ Docker CLI เราสามารถใช้คำสั่งเต็มที่ Cloudflare ให้มาได้ เช่น
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
แต่เมื่อใช้ Synology Container Manager เราเลือก Image เรียบร้อยแล้ว จึงไม่ต้องใส่คำว่า docker run cloudflare/cloudflared:latest ซ้ำ ให้ใส่เฉพาะส่วนคำสั่งที่ต้องให้ Container รัน เช่น
tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN
หรือบางหน้าของ Cloudflare อาจแสดงคำสั่งคล้ายกัน ให้ใช้หลักการเดียวกัน คือใส่เฉพาะคำสั่งหลังชื่อ Image ลงในช่อง Execution Command
จากนั้นกด Next และ Done เมื่อ Container ทำงานสำเร็จ ให้กลับไปที่หน้า Cloudflare Tunnel เพื่อตรวจสอบสถานะ หากเชื่อมต่อสำเร็จจะเห็นสถานะเป็น Healthy หรือ Connected


เพิ่มบริการภายใน LAN เข้า Cloudflare Tunnel
หลังจาก Tunnel และ Connector ทำงานแล้ว ขั้นตอนต่อไปคือการเพิ่มบริการภายใน LAN เช่น Synology DSM, n8n, Web Server หรือ Dashboard ภายใน เพื่อให้เข้าถึงผ่านชื่อโดเมนได้
เมื่อเพิ่มบริการ เช่น หน้า GUI ของ Synology NAS แล้ว Cloudflare จะสร้าง DNS CNAME Record และเชื่อมต่อผ่าน Tunnel ให้โดยอัตโนมัติ
ตัวอย่าง: เปิด Synology DSM ผ่าน Cloudflare Tunnel
สมมติ Synology NAS ภายใน LAN ใช้ IP และ Port ดังนี้
http://192.168.200.11:5000
และต้องการให้เข้าผ่านโดเมน
nas.synctechtestcloudflare.online

ขั้นตอนเพิ่ม Public Hostname
- ไปที่ Cloudflare Zero Trust
- เลือก Networks หรือ Networking
- เลือก Tunnels
- เลือก Tunnel ที่สร้างไว้
- กด Configure หรือ Edit
- ไปที่แท็บ Public Hostnames
- กด Add a public hostname
กรอกข้อมูลดังนี้
| หัวข้อ | ตัวอย่างค่า | คำอธิบาย |
|---|---|---|
| Subdomain | nas | ชื่อย่อยของโดเมน เช่น nas.example.com |
| Domain | synctechtestcloudflare.online | เลือกโดเมนที่ตั้งค่าไว้ใน Cloudflare |
| Service Type | HTTP | เลือกตาม Protocol ของบริการภายใน หากหน้า DSM ภายในใช้ HTTP ให้เลือก HTTP |
| URL | 192.168.200.11:5000 | IP และ Port ภายใน LAN ของ Synology NAS |

เมื่อบันทึกแล้ว Cloudflare จะสร้างเส้นทางให้ Subdomain นี้วิ่งผ่าน Tunnel ไปยังบริการภายใน LAN ที่กำหนดไว้ จากนั้นให้ทดสอบเข้าใช้งานผ่าน URL ที่ได้ เช่น
https://nas.synctechtestcloudflare.online


เพิ่ม Cloudflare Access เพื่อความปลอดภัย
แม้ Cloudflare Tunnel จะช่วยลดความเสี่ยงจากการเปิด Port Forwarding แต่ไม่ได้หมายความว่าระบบภายในจะปลอดภัยโดยอัตโนมัติ หากเปิดระบบสำคัญ เช่น Synology DSM, Router, Firewall, n8n หรือ Dashboard ภายใน ควรใช้ Cloudflare Access เพิ่มเติม
Cloudflare Access ช่วยบังคับให้ผู้ใช้ยืนยันตัวตนก่อนเข้าถึงระบบ เช่น Login ด้วย Email, Google Workspace, Microsoft Entra ID หรือใช้ MFA/OTP ตาม Policy ที่กำหนด
ตัวอย่าง Policy ที่แนะนำ
- อนุญาตเฉพาะ Email ของบริษัท
- ใช้ Login ผ่าน Google Workspace หรือ Microsoft Entra ID
- เปิด MFA หรือ OTP ก่อนเข้าระบบ
- จำกัดเฉพาะบางประเทศหรือบาง IP
- สร้าง Policy แยกตามระบบ เช่น NAS, n8n, Dashboard
ตัวอย่างการตั้งชื่อ Subdomain
| บริการภายใน | IP / Port ภายใน | Subdomain ที่แนะนำ |
|---|---|---|
| Synology DSM | 192.168.200.11:5000 | nas.example.com |
| n8n | 192.168.200.11:5678 | n8n.example.com |
| Web Server | 192.168.200.20:80 | web.example.com |
| Monitoring Dashboard | 192.168.200.30:3000 | monitor.example.com |
เพิ่ม update.sh สำหรับอัปเดต cloudflared Container บน Synology
เนื่องจากการรัน cloudflared ผ่าน Docker มักใช้คำสั่ง --no-autoupdate จึงควรมีวิธีอัปเดต Image และสร้าง Container ใหม่เป็นระยะ เพื่อให้ได้เวอร์ชันล่าสุดของ cloudflared
ตัวอย่างด้านล่างเป็นสคริปต์ update.sh สำหรับผู้ที่ใช้ Synology NAS และสามารถรันคำสั่ง Docker ผ่าน SSH ได้ โดยสคริปต์จะ Pull Image ล่าสุด, หยุด Container เดิม, ลบ Container เดิม และสร้าง Container ใหม่ด้วย Token เดิม
ข้อควรระวัง: ก่อนใช้งานจริงให้แก้ค่า TUNNEL_TOKEN เป็น Token ของคุณเอง และห้ามเผยแพร่ไฟล์นี้ต่อสาธารณะ
#!/bin/sh
CONTAINER_NAME="cloudflared"
IMAGE_NAME="cloudflare/cloudflared:latest"
TUNNEL_TOKEN="YOUR_TUNNEL_TOKEN"
echo "Pull latest cloudflared image..."
docker pull ${IMAGE_NAME}
echo "Stop old container..."
docker stop ${CONTAINER_NAME} 2>/dev/null || true
echo "Remove old container..."
docker rm ${CONTAINER_NAME} 2>/dev/null || true
echo "Start new cloudflared container..."
docker run -d \
--name ${CONTAINER_NAME} \
--restart unless-stopped \
${IMAGE_NAME} \
tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
echo "Show container status..."
docker ps | grep ${CONTAINER_NAME}
echo "cloudflared update completed."
วิธีใช้งาน update.sh บน Synology
- เปิด SSH บน Synology NAS เฉพาะเวลาที่ต้องใช้งาน
- สร้างไฟล์ชื่อ update.sh เช่น เก็บไว้ที่ /volume1/docker/cloudflared/update.sh
- แก้ค่า YOUR_TUNNEL_TOKEN เป็น Token จริงของ Tunnel
- กำหนดสิทธิ์ให้ไฟล์สามารถรันได้
chmod +x /volume1/docker/cloudflared/update.sh
จากนั้นรันสคริปต์ด้วยคำสั่ง
/volume1/docker/cloudflared/update.sh
หากต้องการตั้งให้รันเป็นรอบ ๆ สามารถใช้ Task Scheduler ของ Synology DSM ได้ โดยไปที่ Control Panel > Task Scheduler แล้วสร้าง Scheduled Task แบบ User-defined script เพื่อสั่งรันไฟล์ update.sh ตามช่วงเวลาที่เหมาะสม เช่น เดือนละครั้ง
คำแนะนำ: สำหรับระบบ Production ไม่ควรตั้งให้อัปเดตอัตโนมัติถี่เกินไป ควรตรวจสอบสถานะหลังอัปเดตทุกครั้ง และควรมีแผนย้อนกลับหาก Container ใหม่ทำงานผิดปกติ
ข้อควรระวังในการใช้งาน Cloudflare Tunnel
- ไม่ควรเปิดระบบสำคัญให้ทุกคนบนอินเทอร์เน็ตเข้าถึงได้โดยไม่มี Cloudflare Access
- ไม่ควรเผยแพร่ Tunnel Token จริงในบทความ รูปภาพ หรือเอกสารสาธารณะ
- ควรตั้งรหัสผ่านและเปิด MFA บนบริการปลายทาง เช่น Synology DSM
- ควรจำกัดสิทธิ์ผู้ใช้ตามความจำเป็น
- ควรตรวจสอบ Log และสถานะ Tunnel เป็นระยะ
- ควรอัปเดต cloudflared Image เป็นเวอร์ชันใหม่อย่างสม่ำเสมอ
- ควร Backup การตั้งค่าที่สำคัญของระบบ
- ควรหลีกเลี่ยงการเปิดบริการที่ไม่จำเป็นผ่าน Public Hostname
- หากเป็นระบบภายในองค์กร ควรออกแบบ Policy ให้ชัดเจนก่อนเปิดใช้งานจริง
สรุป
Cloudflare Tunnel เป็นวิธีที่สะดวกและปลอดภัยในการเปิดให้เข้าถึงบริการภายใน LAN จากภายนอก โดยไม่ต้องเปิด Port Forwarding เข้ามาที่ Router หรือ Firewall โดยตรง เหมาะกับการใช้งานร่วมกับ Synology NAS, Web Server, n8n, Monitoring Dashboard และระบบภายในองค์กร
สำหรับผู้ที่ใช้ Synology NAS สามารถติดตั้ง cloudflared ผ่าน Container Manager ได้ง่าย ใช้ทรัพยากรน้อย และเหมาะกับการรันตลอดเวลา เมื่อเชื่อมต่อสำเร็จแล้วสามารถเพิ่ม Public Hostname เพื่อเปิดบริการภายใน เช่น DSM ของ Synology ผ่านชื่อโดเมนได้ทันที
หากต้องการดูแลระยะยาว ควรมีขั้นตอนอัปเดต cloudflared Container เช่น ใช้ไฟล์ update.sh เพื่อ Pull Image ล่าสุดและสร้าง Container ใหม่ พร้อมทั้งตรวจสอบสถานะ Tunnel หลังอัปเดตทุกครั้ง
อย่างไรก็ตาม หากเป็นระบบสำคัญ ไม่ควรพึ่งพา Tunnel เพียงอย่างเดียว ควรใช้งานร่วมกับ Cloudflare Access, MFA, รหัสผ่านที่แข็งแรง, การจำกัดสิทธิ์ และการตรวจสอบ Log เพื่อให้ระบบมีความปลอดภัยมากขึ้น
