วิธีสร้างและกำหนดค่า Cloudflare Tunnel (Argo Tunnel) เพื่อเปิดเผยแอปพลิเคชันภายใน LAN สู่สาธารณะอย่างปลอดภัย

ที่มาภาพ: 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

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่า Tailwind CSS บน Vite เพื่อพัฒนาเว็บเร็วและปลอดภัยGrowth
25 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่า Tailwind CSS บน Vite เพื่อพัฒนาเว็บเร็วและปลอดภัย

การเริ่มต้นโครงการด้วย **Vite** ทำให้เรามีสภาพแวดล้อมพัฒนาเว็บที่เร็วทันใจ ส่วน **Tailwind CSS** จะช่วยลดเวลาการออกแบบ UI ด้วยคลาสยูทิลิตี้ การผสานสองเครื่องมือนี้อย่างถูกต้องจะทำให้คุณสร้างเว็บที่โหล…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีใช้ Git Bisect ค้นหา commit ที่ทำให้เกิดบั๊กอย่างมีประสิทธิภาพGrowth
24 สิงหาคม 2569 เวลา 18:30

วิธีใช้ Git Bisect ค้นหา commit ที่ทำให้เกิดบั๊กอย่างมีประสิทธิภาพ

การค้นหา commit ที่ทำให้โค้ดเกิดบั๊กในโปรเจคขนาดใหญ่อาจใช้เวลานานหลายชั่วโมงหรือหลายวัน Git Bisect ช่วยลดระยะเวลาให้น้อยลงโดยอัตโนมัติผ่านกระบวนการแยก‑แบ่ง (binary search) บทความนี้จะสอนวิธีใช้ Git Bi…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
วิธีตั้งค่าและใช้งาน Git Submodule อย่างปลอดภัยในโครงการหลายโมดูลGrowth
24 สิงหาคม 2569 เวลา 12:30

วิธีตั้งค่าและใช้งาน Git Submodule อย่างปลอดภัยในโครงการหลายโมดูล

Git Submodule คือวิธีการเชื่อมโยง repository ย่อย (โมดูล) เข้าไปในโครงการหลักโดยยังคงแยกการจัดการเวอร์ชันของแต่ละโมดูลไว้เอง

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีกำหนดค่าและใช้งาน DVC (Data Version Control) เพื่อจัดการเวอร์ชันข้อมูลในโครงการ Machine Learning อย่างปลอดภัยGrowth
24 สิงหาคม 2569 เวลา 11:00

วิธีกำหนดค่าและใช้งาน DVC (Data Version Control) เพื่อจัดการเวอร์ชันข้อมูลในโครงการ Machine Learning อย่างปลอดภัย

การจัดการเวอร์ชันของข้อมูลเป็นความท้าทายใหญ่สำหรับโครงการ Machine Learning เพราะชุดข้อมูลมักมีขนาดใหญ่และเปลี่ยนแปลงบ่อยครั้ง **DVC (Data Version Control) ช่วยให้คุณควบคุมไฟล์ข้อมูลเหมือนกับรหัสโปรแกร…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
คัดลอกลิงก์แล้ว!