เอกสาร
เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)
ทะลุพอร์ต
บทความนี้อธิบายฟังก์ชัน «ทะลุพอร์ต» ของแผงควบคุม — การแมปพอร์ตแอปพลิเคชันบนเซิร์ฟเวอร์ทะลุที่ไม่มี IP สาธารณะ ไปยังพอร์ตสาธารณะของเซิร์ฟเวอร์แผงควบคุม เพื่อให้ผู้ใช้ภายนอกเข้าถึงได้
เข้าใจในประโยคเดียว
เซิร์ฟเวอร์ของคุณซ่อนอยู่ในเครือข่ายภายใน (ไม่มี IP สาธารณะ) บนนั้นมีเว็บไซต์หรือแอปพลิเคชันรันอยู่ คนข้างนอกเข้าถึงไม่ได้ ทะลุพอร์ตคือ «การเปิดพอร์ตสาธารณะบนเซิร์ฟเวอร์แผงควบคุม แล้วขนการเข้าถึงจากภายนอกผ่านอุโมงค์เข้ารหัสไปยังพอร์ตแอปพลิเคชันบนเซิร์ฟเวอร์เครือข่ายภายในของคุณ» ผลลัพธ์: คนข้างนอกเข้าถึง IP เซิร์ฟเวอร์แผงควบคุม:พอร์ต ก็เท่ากับเข้าถึงแอปพลิเคชันบนเซิร์ฟเวอร์เครือข่ายภายในของคุณ
แนะนำฟังก์ชัน
สำหรับเซิร์ฟเวอร์ที่ไม่มี IP สาธารณะซึ่งเชื่อมต่อผ่าน «ปฏิบัติการทะลุ NAT» แอปพลิเคชันบนนั้น (เช่น Navidrome สำหรับเพลง Nextcloud สำหรับพื้นที่เก็บข้อมูล Memos สำหรับโน้ต) ไม่สามารถเข้าถึงจากภายนอกได้ ทะลุพอร์ตแมปพอร์ตแอปพลิเคชันเหล่านี้ไปยังพอร์ตของเซิร์ฟเวอร์แผงควบคุม (ที่มี IP สาธารณะ) ให้ผู้ใช้ภายนอกเข้าถึงผ่าน «IP เซิร์ฟเวอร์แผงควบคุม:พอร์ต»
สถานการณ์ที่ใช้
- เซิร์ฟเวอร์ทะลุมีเว็บแอปพลิเคชันรันอยู่ ต้องการให้ภายนอกเข้าถึงได้
- เปิดเผยบริการของอุปกรณ์เครือข่ายภายในสู่อินเทอร์เน็ต
- ให้ทางเข้าสาธารณะแก่เว็บไซต์ API หรือแผงควบคุมบนอุปกรณ์ที่ไม่มี IP สาธารณะ
หลักการ (ข้อมูลไหลอย่างไร)
ผู้ใช้ภายนอก → พอร์ตสาธารณะของเซิร์ฟเวอร์แผงควบคุม (เช่น :9117) → อุโมงค์เข้ารหัส → พอร์ตแอปพลิเคชันของเซิร์ฟเวอร์ทะลุ (เช่น :9117)
ทราฟฟิกภายนอกไปถึงเซิร์ฟเวอร์แผงควบคุมก่อน (ที่เดียวที่มี IP สาธารณะ) จากนั้นส่งผ่านอุโมงค์ย้อนกลับที่เข้ารหัสไปยังอุปกรณ์เครือข่ายภายใน สุดท้ายตกไปที่พอร์ตแอปพลิเคชันที่รันจริงบนอุปกรณ์
ช่องทางรวม (ทุกอุปกรณ์ ไม่ต้องเลือกเอง):
| ประเภทอุปกรณ์ | ช่องทางส่งต่อ | คำอธิบาย |
|---|---|---|
| เซิร์ฟเวอร์ Linux (ไม่มี IP สาธารณะ) | อุโมงค์ย้อนกลับ 4433 (เข้ารหัส AES-256-GCM) | สตรีมไบต์ TCP แบบเนทีฟ เร็วและเสถียร รองรับการทำงานพร้อมกันจำนวนมาก |
| อุปกรณ์ Android/Termux | อุโมงค์ย้อนกลับ 4433 (เข้ารหัส AES-256-GCM) | ใช้อุโมงค์เข้ารหัสเส้นเดียวกับอุปกรณ์ Linux เสถียรและไม่มีโอเวอร์เฮดเพิ่ม |
แผงควบคุมวิ่งผ่านอุโมงค์ย้อนกลับ 4433 ทั้งหมด เวลาสร้างการทะลุไม่ต้องสนใจช่องทางเบื้องหลัง และไม่ต้องเลือกเอง
> คำอธิบายเพิ่มเติม: การจัดการระบบของอุปกรณ์ Android/Termux (รันคำสั่ง เทอร์มินัล ไฟล์) วิ่งผ่านช่องทางเสถียร SocketIO แต่ทะลุพอร์ตวิ่งผ่านอุโมงค์ย้อนกลับ 4433 ทั้งหมด ทั้งสองต่างทำหน้าที่ของตัวเอง ไม่รบกวนกัน
วิธีใช้งาน
1. ตรวจสอบว่าอุปกรณ์เป้าหมายเชื่อมต่อผ่าน «ปฏิบัติการทะลุ NAT» แล้ว (Agent ออนไลน์)
2. เปิด «ทะลุพอร์ต» แล้วคลิก «เพิ่มการทะลุ»
3. เลือกเซิร์ฟเวอร์ทะลุ (Agent) แล้วกรอก:
- พอร์ตที่รับฟัง: พอร์ตสาธารณะของเซิร์ฟเวอร์แผงควบคุม (ใช้สำหรับการเข้าถึงจากภายนอก) เช่น
9117 - พอร์ตเป้าหมาย: พอร์ตแอปพลิเคชันบนเซิร์ฟเวอร์ทะลุ เช่น
8080
4. หลังสร้างแล้ว ภายนอกเข้าถึง http://<panel-server-ip>:<listen-port> ได้เลย
ตัวอย่าง
สมมติว่า IP สาธารณะของเซิร์ฟเวอร์แผงควบคุมคือ 203.0.113.10 และคุณมี Raspberry Pi ในเครือข่ายภายในที่รัน Navidrome อยู่ (รับฟัง 4533):
- ช่องพอร์ตที่รับฟังกรอก
4533 - ช่องพอร์ตเป้าหมายกรอก
4533 - หลังสร้างแล้ว ผู้ใช้ภายนอกเข้าถึง
http://203.0.113.10:4533ก็เปิด Navidrome บน Raspberry Pi ได้เลย
ขีดจำกัดทรัพยากร
| ขีดจำกัด | ค่า |
|---|---|
| ช่องทางส่งต่อสูงสุดต่อ Agent | 32 ช่องทาง |
| Agent สูงสุดทั้งแผงควบคุม | 64 ตัว |
เกินขีดจำกัดจะปฏิเสธการเชื่อมต่อใหม่โดยอัตโนมัติ ไม่กระทบการทะลุที่ทำงานอยู่
ข้อควรระวัง
1. ไฟร์วอลล์คลาวด์: กลุ่มความปลอดภัย/ไฟร์วอลล์คลาวด์ของเซิร์ฟเวอร์แผงควบคุมต้องเปิดทางพอร์ตที่รับฟังนั้น มิฉะนั้นภายนอกเข้าถึงไม่ได้
2. เวอร์ชัน Agent: การส่งต่อพอร์ตที่ไม่ใช่ SSH (ไม่ใช่ 22) ต้องให้เซิร์ฟเวอร์ทะลุติดตั้ง Agent เวอร์ชันใหม่ แล้ว (เวอร์ชันเก่ารองรับแค่ส่งต่อพอร์ต 22) หากต้องการส่งต่อพอร์ตอื่น กรุณาติดตั้ง Agent ใหม่
3. Agent ออนไลน์: การทะลุขึ้นอยู่กับ Agent ที่ต้องออนไลน์อยู่ เมื่อ Agent ออฟไลน์การทะลุจะขาด และกลับมาอัตโนมัติเมื่อเชื่อมต่อใหม่
4. แผงควบคุมรีสตาร์ตแล้วกู้คืนอัตโนมัติ: หลังจากบริการแผงควบคุมรีสตาร์ต การทะลุจะกลับมาอัตโนมัติ (เกิดจากตอน Agent เชื่อมต่อใหม่)
5. บริการเป้าหมายบน Android ต้องรองรับการทำงานพร้อมกัน: บริการเป้าหมายที่ถูกทะลุบน Android (เช่น python3 -m http.server) หากเป็นแบบเธรดเดียวและเปิด keep-alive การเชื่อมต่อเดิมที่ไม่ปิดจะบล็อกคำขอถัดไป แนะนำให้บริการเป้าหมายใช้หลายเธรด หรือทำให้การเชื่อมต่อปิดอย่างทันท่วงที
เอกสารที่เกี่ยวข้อง
- ปฏิบัติการทะลุ NAT — เชื่อมต่ออุปกรณ์ที่ไม่มี IP สาธารณะเข้าแผงควบคุมก่อน
- การส่งต่อพอร์ต — การส่งต่อพอร์ตแบบดั้งเดิมของเซิร์ฟเวอร์ที่มี IP สาธารณะ (ความต่างของสองอย่างดูด้านล่าง)
ทะลุพอร์ต vs การส่งต่อพอร์ต (เลือกอย่างไร)
| ทะลุพอร์ต (บทความนี้) | การส่งต่อพอร์ต | |
|---|---|---|
| เซิร์ฟเวอร์ที่ใช้ | ไม่มี IP สาธารณะ (เซิร์ฟเวอร์ทะลุ) | มี IP สาธารณะของตัวเอง |
| วิธีทำ | อุโมงค์ย้อนกลับ | DNAT ของไฟร์วอลล์ระบบ |
| ตำแหน่งที่ส่งต่อ | เซิร์ฟเวอร์แผงควบคุม | ตัวเซิร์ฟเวอร์เป้าหมายเอง |
| ต้องมี Agent | ใช่ | ไม่ |
ประโยคเดียว: ไม่มี IP สาธารณะใช้การทะลุ มี IP สาธารณะใช้การส่งต่อ