
ที่มาภาพ: Unknown Source
วิธีสร้างและกำหนดค่า Cloudflare Tunnel (Argo Tunnel) เพื่อเปิดเผยแอปพลิเคชันภายใน LAN สู่สาธารณะอย่างปลอดภัย
⚡ สรุป 30 วิ
Argo Tunnel ของ Cloudflare ช่วยให้คุณเปิดเผยแอปพลิเคชันที่อยู่ภายใน LAN ไปยังอินเทอร์เน็ตโดยไม่ต้องเปิดพอร์ตบนเร้าเตอร์หรือใช้ VPN แต่อย่างใด ทั้งหมดทำงานผ่านเอเย่นต์ **cloudflared** ที่เชื่อมต่อกับเค…
ภาพรวม — Overview
Argo Tunnel ของ Cloudflare ช่วยให้คุณเปิดเผยแอปพลิเคชันที่อยู่ภายใน LAN ไปยังอินเทอร์เน็ตโดยไม่ต้องเปิดพอร์ตบนเร้าเตอร์หรือใช้ VPN แต่อย่างใด ทั้งหมดทำงานผ่านเอเย่นต์ cloudflared ที่เชื่อมต่อกับเครือข่ายของ Cloudflare อย่างปลอดภัย
- เชื่อมต่อจากเครื่องภายใน LAN ไปยัง Edge ของ Cloudflare
- Traffic ถูกเข้ารหัสแบบ end‑to‑end ด้วย TLS
- ไม่ต้องจัดการไฟร์วอลล์หรือ NAT
ความต้องการเบื้องต้น — Prerequisites
เตรียมสภาพแวดล้อมให้พร้อมก่อนเริ่มทำขั้นตอนจริง จะช่วยลดข้อผิดพลาดระหว่างการตั้งค่า
- ระบบปฏิบัติการ Linux (Ubuntu 20.04+, Debian, CentOS) หรือ macOS
- สิทธิ์ sudo บนเครื่องที่ติดตั้ง cloudflared
- โดเมนที่อยู่ภายใต้บัญชี Cloudflare และสามารถแก้ไข DNS ได้
- พอร์ตของแอปพลิเคชันภายใน LAN ที่ต้องการเปิดเผย (เช่น 8080, 3000)
ติดตั้ง cloudflared — Install cloudflared
cloudflared เป็นไคลเอนต์แบบสแตนด์‑อโลน สามารถติดตั้งได้หลายวิธี เลือกวิธีที่เหมาะกับระบบของคุณ
- **Debian/Ubuntu: `apt install cloudflare/cloudflare-cloudflared` หรือดาวน์โหลด .deb จากหน้า releases
- **CentOS/RHEL: ใช้ yum/dnf เพื่อติดตั้ง RPM package
- **macOS: `brew install cloudflare/cloudflare/cloudflared`
Tip ตรวจสอบเวอร์ชันล่าสุดเสมอด้วย `cloudflared --version` เพื่อรับประกันความเข้ากันได้กับฟีเจอร์ใหม่
ยืนยันตัวตนกับ Cloudflare — Authenticate
การยืนยันต้องใช้ API Token หรือ Global API Key พร้อมกำหนด permission ให้เป็น `Zone:DNS edit` และ `Account:Read`
- รันคำสั่ง `cloudflared tunnel login`
- จะเปิดหน้าเว็บให้ลงชื่อเข้าใช้งาน Cloudflare แล้วเลือกบัญชีที่ต้องการเชื่อมต่อ
- หลังจากยืนยันสำเร็จไฟล์ cert.pem จะถูกสร้างในโฟลเดอร์ `~/.cloudflared/`
สร้าง Tunnel และกำหนดค่า — Create Tunnel & Config
ขั้นตอนนี้จะทำให้คุณมี “Tunnel” ตัวหนึ่งที่เชื่อมต่อกับ Cloudflare Edge
- สร้าง tunnel ด้วยชื่อที่จำง่าย เช่น `my‑lan‑app`:
`cloudflared tunnel create my-lan-app` จะได้ UUID ของ tunnel
- สร้างไฟล์ config (`~/.cloudflared/config.yml`) ตัวอย่าง:
```yaml tunnel: <UUID‑ของ‑tunnel> credentials-file: /home/username/.cloudflared/<UUID>.json
ingress:
- hostname: app.example.com
service: http://192.168.1.50:8080
- service: http_status:404
```
- `hostname` ควรตรงกับ DNS ที่คุณจะตั้งค่าใน Cloudflare
- บรรทัดสุดท้ายเป็น fallback ให้ตอบ 404 หากไม่มีแมป
รัน Tunnel แบบ Systemd Service — Run as Service
ให้ tunnel ทำงานตลอด 24 ชม. โดยใช้ systemd จะช่วยจัดการการรีสตาร์ทอัตโนมัติ
```bash sudo cloudflared service install <UUID> ```
หรือสร้างไฟล์ `/etc/systemd/system/cloudflared.service` ด้วยเนื้อหา:
```ini [Unit] Description=Cloudflare Tunnel After=network.target
[Service] Type=simple ExecStart=/usr/local/bin/cloudflared tunnel run my-lan-app Restart=on-failure User=root
[Install] WantedBy=multi-user.target ```
- โหลดการตั้งค่าใหม่: `systemctl daemon-reload`
- เปิดใช้งานและเริ่มต้นบริการ: `systemctl enable --now cloudflared`
ตั้งค่า DNS บน Cloudflare — DNS Configuration
เชื่อม hostname ที่กำหนดใน config กับ tunnel ผ่าน CNAME หรือ CNAME‑Flattened
| วิธี | รายละเอียด |
|---|---|
| CNAME | สร้างเรคอร์ด `CNAME` ของ `app.example.com` ชี้ไปที่ `<UUID>.cfargotunnel.com` |
| CNAME‑Flattened (ค่าเริ่มต้น) | Cloudflare แปลง CNAME เป็น A‑record เพื่อให้รองรับ DNS‑SEC |
Tip เปิดฟีเจอร์ *Proxy* (สีส้ม) เพื่อให้ Traffic ไหลผ่าน Cloudflare ก่อนถึง tunnel ซึ่งช่วยลด DDoS และทำให้ได้ประโยชน์จาก WAF
การรักษาความปลอดภัยเพิ่มเติม — Security Best Practices
- ใช้ Zero‑Trust Access Policy ใน Dashboard Zero Trust Applications Add application แล้วกำหนดกลุ่มผู้ใช้หรือ IP ที่อนุญาต
- ปิดการเข้าถึงโดยตรงจากอินเทอร์เน็ตบนไฟร์วอลล์ของ LAN (เช่น ปิดพอร์ต 8080) ให้แอปรับทำงานผ่าน tunnel เท่านั้น
- กำหนด TTL ของ DNS ให้อยู่ที่ 5 นาที เพื่อลดเวลาในการกระจายการเปลี่ยนแปลงหากต้องยกเลิก tunnel
แก้ไขปัญหาเบื้องต้น — Troubleshooting
- **Tunnel ไม่เชื่อมต่อ: ตรวจสอบว่าไฟล์ `cert.pem` มีอยู่และไม่หมดอายุ (`cloudflared login` ใหม่)
- **404 จาก ingress: ตรวจสอบว่าชื่อ `hostname` ใน config ตรงกับเรคอร์ด DNS และ service URL ถูกต้อง (IP:port)
- **Service ไม่เริ่ม: ดูบันทึกด้วย `journalctl -u cloudflared -f` เพื่อหาข้อความ error เช่น permission ปฏิเสธหรือพอร์ตถูกใช้แล้ว
สรุป — Summary
การเปิดเผยแอปพลิเคชันภายใน LAN ด้วย Cloudflare Argo Tunnel ทำได้โดยขั้นตอนสั้น ๆ แต่ต้องใส่ใจที่การตั้งค่าและความปลอดภัย
- ติดตั้ง `cloudflared` บนเครื่องที่เข้าถึงแอป
- ยืนยันตัวตนด้วย API Token แล้วสร้าง tunnel พร้อม config DNS
- รันเป็น systemd service เพื่อให้ทำงานต่อเนื่อง
- ใช้ Zero‑Trust และปิดพอร์ตโดยตรงบน LAN เพื่อลดพื้นที่โจมตี
เมื่อทำตามขั้นตอนเหล่านี้ แอปของคุณจะพร้อมให้ผู้ใช้ภายนอกเข้าถึงได้อย่างปลอดภัยผ่านโครงข่ายของ Cloudflare.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีสร้างและกำหนดค่า Cloudflare Tunnel (Argo Tunnel) เพื่อเปิดเผยแอปพลิเคชันภายใน LAN สู่สาธารณะอย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 25 สิงหาคม 2569 เวลา 10:51



