
ที่มาภาพ: Unknown Source
วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัย
⚡ สรุป 30 วิ
Cloudflare Tunnel (หรือ Argo Tunnel) ช่วยให้เราสร้างการเชื่อมต่อแบบ **VPN Zero‑Trust** บน Linux โดยไม่ต้องเปิดพอร์ตสาธารณะบนไฟร์วอลล์ การใช้ Tunnel ทำให้ทราฟฟิกทั้งหมดผ่านเครือข่ายของ Cloudflare ซึ่งม…
ภาพรวม — Overview
Cloudflare Tunnel (หรือ Argo Tunnel) ช่วยให้เราสร้างการเชื่อมต่อแบบ VPN Zero‑Trust บน Linux โดยไม่ต้องเปิดพอร์ตสาธารณะบนไฟร์วอลล์ การใช้ Tunnel ทำให้ทราฟฟิกทั้งหมดผ่านเครือข่ายของ Cloudflare ซึ่งมีระบบป้องกัน DDoS และ WAF ให้ความปลอดภัยระดับสูง
- Zero‑Trust หมายถึงการตรวจสอบทุกคำขอโดยไม่เชื่อถือว่าผู้ใช้หรืออุปกรณ์อยู่ในเครือข่ายภายใน
- Tunnel ทำหน้าที่เป็น “reverse proxy” ที่ส่งข้อมูลจากเครื่อง Linux ไปยัง Cloudflare แล้วจึงกระจายต่อไปยังแอปพลิเคชันปลายทาง
- การตั้งค่าจะทำผ่านไฟล์ `cloudflared` เพียงไม่กี่บรรทัด
**Tip: ก่อนเริ่มควรตรวจสอบว่าโดเมนของคุณอยู่ในบัญชี Cloudflare และเปิดบริการ “Zero‑Trust” ไว้แล้ว
สิ่งที่ต้องเตรียม — Prerequisites
การติดตั้ง Tunnel ไม่ซับซ้อน แต่จำเป็นต้องมีสิ่งต่อไปนี้เพื่อให้ขั้นตอนดำเนินได้ราบรื่น
- เซิร์ฟเวอร์ Linux (Ubuntu 20.04+, Debian, CentOS ฯลฯ) พร้อม root หรือ sudo privileges
- โดเมนที่ผูกกับ Cloudflare และสามารถเพิ่ม DNS record ได้
- บัญชี Cloudflare ที่เปิด “Zero‑Trust” (หรือ Teams) แล้วสร้าง Access Application
ติดตั้ง Cloudflared — Install cloudflared
ขั้นตอนการติดตั้ง `cloudflared` มีให้เลือกสองวิธีหลัก คือ ผ่านแพ็กเกจของระบบ หรือโดยดาวน์โหลดไบนารีล่าสุด
- **วิธีที่ 1: ใช้ apt (Ubuntu/Debian)
- เพิ่ม repository ของ Cloudflare: `curl -L https://pkg.cloudflare.com/install.sh | sudo bash`
- ติดตั้ง: `sudo apt-get install cloudflared`
- **วิธีที่ 2: ดาวน์โหลดไบนารีโดยตรง
- ตรวจสอบรุ่นล่าสุดจาก <https://github.com/cloudflare/cloudflared/releases>
- ดาวน์โหลดและให้สิทธิ์ทำงาน: `chmod +x cloudflared && sudo mv cloudflared /usr/local/bin/`
- ยืนยันการติดตั้งด้วยคำสั่ง `cloudflared --version`
สร้าง Tunnel — Create a Tunnel
หลังจากมี `cloudflared` แล้ว ขั้นตอนต่อไปคือสร้าง Tunnel และเชื่อมโยงกับโดเมนของเรา
- **ขั้นที่ 1: ลงชื่อเข้าใช้ Cloudflare ผ่าน CLI
```bash cloudflared login ``` หน้าต่างเบราว์เซอร์จะเปิดให้เลือกโซน (zone) ที่ต้องการเชื่อมต่อ
- **ขั้นที่ 2: สร้าง Tunnel ด้วยชื่อระบุ
```bash cloudflared tunnel create my-zero-trust-tunnel ``` คำสั่งนี้จะสร้างคีย์ส่วนตัวและให้ `Tunnel ID` กลับมา
- **ขั้นที่ 3: บันทึกไฟล์กำหนดค่า (`config.yml`) ที่ตำแหน่ง `/etc/cloudflared/`
ตัวอย่างไฟล์:
```yaml tunnel: <TUNNEL_ID> credentials-file: /root/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: vpn.example.com
service: http://localhost:8080 # หรือบริการ VPN ของคุณ
- service: http_status:404
```
ตั้งค่า Zero‑Trust — Configure Zero‑Trust
การเปิดใช้ Zero‑Trust ต้องกำหนดนโยบายการเข้าถึงและอายุของโทเค็น
- เข้าเมนู Zero Trust > Access > Applications แล้วคลิก “Add an application”
- เลือกประเภท “Self-hosted” และใส่ Hostname ที่ตั้งไว้ใน `config.yml` (เช่น `vpn.example.com`)
- ตั้งค่า Session Duration, IP Ranges, หรือ Device Posture ตามความต้องการ
- สร้าง Policy เพื่อกำหนดว่าใครสามารถเข้าถึง Tunnel ได้
- ตัวเลือกหลัก: Email domain, Group, Service Token ฯลฯ
- ควรกำหนดให้ผู้ใช้ผ่าน **Multi‑Factor Authentication (MFA) เสมอ
| ตัวเลือก | ความปลอดภัย | ความยืดหยุ่น |
|---|---|---|
| Email domain | ปานกลาง (พึ่งพาโดเมน) | สูง (ไม่ต้องจัดการกลุ่ม) |
| Group (Teams) | สูง (ควบคุมได้ละเอียด) | กลาง (ต้องตั้งค่า Teams) |
| Service Token | สูงที่สุด (ใช้สำหรับเครื่อง) | ต่ำ (จำกัดแค่ API) |
**Warning: อย่าเปิด “Allow all users” ใน Policy หากไม่ได้กำหนด MFA – จะทำให้ Zero‑Trust สูญเสียประสิทธิภาพ
เริ่มต้น Tunnel เป็นบริการระบบ — Run as a Service
เพื่อให้ Tunnel ทำงานตลอด 24 ชั่วโมง ควรตั้งค่าเป็น systemd service
- สร้างไฟล์ `/etc/systemd/system/cloudflared.service` ด้วยเนื้อหา:
```ini [Unit] Description=Cloudflare Tunnel After=network.target
[Service] Type=simple ExecStart=/usr/local/bin/cloudflared tunnel run my-zero-trust-tunnel Restart=on-failure RestartSec=5s
[Install] WantedBy=multi-user.target ```
- เปิดและตรวจสอบสถานะ:
```bash sudo systemctl enable cloudflared sudo systemctl start cloudflared sudo systemctl status cloudflared ```
ทดสอบการเชื่อมต่อ — Test the Connection
หลังจาก Tunnel ทำงานแล้ว ให้ทำขั้นตอนตรวจสอบเพื่อยืนยันว่าการเข้าถึงเป็นไปตาม Zero‑Trust
- เปิดเบราว์เซอร์และเข้า `https://vpn.example.com` จะต้องเจอหน้า login ของ Cloudflare Access
- ล็อกอินด้วยบัญชีที่ได้รับอนุญาต ตรวจสอบว่า MFA ถูกเรียกใช้
- หากเชื่อมต่อสำเร็จ ให้ตรวจดูว่าทราฟฟิกผ่านพอร์ตที่ตั้งค่า (เช่น 22, 443) หรือแอปพลิเคชัน VPN ที่เลือก
**Tip: ใช้คำสั่ง `curl -I https://vpn.example.com` จากเครื่องภายนอกเพื่อยืนยันว่า Header ของ Cloudflare ปรากฏอยู่
เคล็ดลับเพิ่มความปลอดภัย — Security Tips
แม้ Tunnel จะให้ระดับการป้องกันสูงแล้ว แต่ยังมีวิธีเสริมเพื่อทำให้ระบบ “Zero‑Trust” แรงขึ้น
- เปิด Logpush ส่งบันทึก Cloudflare ไปยัง SIEM ขององค์กร เพื่อตรวจจับพฤติกรรมผิดปกติ
- ใช้ Device Posture Checks ตรวจสอบว่าเครื่องผู้ใช้มีอัปเดตล่าสุด, มี AV ทำงาน หรือไม่ก่อนให้เข้าถึง
- จำกัด IP Ranges ของผู้ที่สามารถสร้าง Tunnel (เช่น เฉพาะ IP ภายในองค์กร) ผ่านเมนู “Network > IP Access Rules”
สรุป — Summary
การตั้งค่า Cloudflare Tunnel บน Linux เพื่อสร้าง VPN Zero‑Trust ทำได้ในไม่กี่ขั้นตอนโดยใช้ `cloudflared` และฟีเจอร์ Access ของ Cloudflare
- ติดตั้ง `cloudflared` ผ่านแพ็กเกจหรือไบนารี
- สร้าง Tunnel, ตั้งค่า `config.yml`, แล้วเชื่อม DNS กับโดเมนของคุณ
- กำหนด Policy ใน Zero‑Trust ให้ต้องใช้ MFA และตรวจสอบอุปกรณ์ (Device Posture)
- รันเป็น systemd service เพื่อให้ทำงานต่อเนื่อง 24 ชั่วโมง
- ตรวจสอบการเชื่อมต่อและเปิด Logpush เพื่อเฝ้าระวัง
**สิ่งที่ควรจำ: ใช้ Zero‑Trust อย่างเต็มรูปแบบต้องรวม MFA, Device Posture และการตรวจสอบบันทึกอย่างสม่ำเสมอ การทำตามขั้นตอนเหล่านี้จะให้ VPN ที่ปลอดภัยและง่ายต่อการจัดการบน Linux โดยไม่เปิดพอร์ตสาธารณะใด ๆ.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่า Cloudflare Tunnel (Argo Tunnel) สร้าง VPN แบบ Zero‑Trust บน Linux อย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 2 สิงหาคม 2569 เวลา 19:50



