เอกสาร

เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)

ทะลุพอร์ต

บทความนี้อธิบายฟังก์ชัน «ทะลุพอร์ต» ของแผงควบคุม — การแมปพอร์ตแอปพลิเคชันบนเซิร์ฟเวอร์ทะลุที่ไม่มี 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 ได้เลย

ขีดจำกัดทรัพยากร

ขีดจำกัดค่า
ช่องทางส่งต่อสูงสุดต่อ Agent32 ช่องทาง
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 สาธารณะใช้การส่งต่อ