เอกสาร

การส่งต่อพอร์ต

การส่งต่อพอร์ตเผยแพร่บริการ HTTP ที่รันอยู่บนเครื่องเซิร์ฟเวอร์ — เซิร์ฟเวอร์สำหรับพัฒนา แดชบอร์ดของอุปกรณ์ หรืออะไรก็ตามที่ฟังอยู่บนที่อยู่ http://localhost:port ธรรมดา — ผ่านพอร์ต TLS ของตัวเอง เพื่อให้อุปกรณ์ใดก็ได้ที่เข้าถึงเซิร์ฟเวอร์สามารถเปิดมันในเบราว์เซอร์เป็น https://<ที่อยู่เซิร์ฟเวอร์>:<พอร์ต>/

หลักการทำงาน

  • การส่งต่อแต่ละรายการจับคู่ พอร์ตเป้าหมาย — บริการ HTTP บนเครื่องนี้ — เข้ากับ พอร์ตที่ส่งต่อ ซึ่งจัดสรรจากช่วงพอร์ตที่ตั้งค่าไว้ (ค่าเริ่มต้น 62000–62999);
  • พอร์ตที่ส่งต่อใช้ TLS: การรับส่งข้อมูลทั้งหมดเข้ารหัสด้วย ใบรับรองแบบลงนามเอง (self-signed) ของเซิร์ฟเวอร์ — ไม่มีอะไรเดินทางแบบข้อความธรรมดา แม้ผ่านเครือข่ายที่ไม่น่าเชื่อถือ;
  • อุปกรณ์ใดก็ได้ที่เข้าถึงเซิร์ฟเวอร์ได้ — ใน LAN หรือจากอินเทอร์เน็ตเมื่อช่วงพอร์ตถูกส่งต่อบนเราเตอร์แล้ว — เปิด https://<ที่อยู่เซิร์ฟเวอร์>:<พอร์ตที่ส่งต่อ>/ แล้วจะไปถึงบริการท้องถิ่นนั้น

การส่งต่อถูกสร้างตามความต้องการ: การแชร์ไฟล์แบบ Host with HTTP server บนเซิร์ฟเวอร์ระยะไกล (ผ่านรีเลย์) จะขอการส่งต่อโดยอัตโนมัติและมอบ URL ที่พร้อมเปิดใช้งานให้คุณทันที ไม่ต้องตั้งค่าด้วยตนเอง

การจัดการการส่งต่อ

Web UI — ส่วนการส่งต่อพอร์ต: การตั้งค่าช่วงพอร์ตและรายการการส่งต่อที่กำลังทำงาน
  1. เปิดส่วน การส่งต่อพอร์ต ของ Web UI บนเซิร์ฟเวอร์
  2. Port Range Configuration กำหนดขอบเขตของชุดพอร์ตที่ใช้จัดสรรพอร์ตส่งต่อ; การเปลี่ยนแปลงบันทึกอัตโนมัติ จำกัดช่วงให้แคบลงเมื่อไฟร์วอลล์หรือเราเตอร์ของคุณส่งต่อได้เพียงไม่กี่พอร์ต
  3. รายการสดแสดงการส่งต่อแต่ละรายการเป็น :พอร์ตที่ส่งต่อ → :พอร์ตเป้าหมาย พร้อมจำนวนการเชื่อมต่อที่ใช้งานอยู่
  4. ปุ่มหยุดของการส่งต่อจะปิด listener ทันทีและตัดการเชื่อมต่อที่ใช้งานอยู่; การแชร์ครั้งถัดไปจะจัดสรรพอร์ตใหม่ รีเฟรช อ่านรายการใหม่อีกครั้ง

คำเตือนเรื่องใบรับรอง

การส่งต่อถูกเข้ารหัสด้วยใบรับรองแบบลงนามเองของเซิร์ฟเวอร์เอง — ใบเดียวกับที่ปกป้อง Web UI และการเชื่อมต่อไคลเอนต์ เบราว์เซอร์ไม่สามารถยืนยันใบรับรองนี้กับผู้ออกใบรับรอง (certificate authority) ได้ ดังนั้นการเยี่ยมชม URL ที่ส่งต่อครั้งแรกจะแสดงคำเตือนความเป็นส่วนตัว (การเชื่อมต่อของคุณไม่เป็นส่วนตัว) เรื่องนี้เป็นเรื่องปกติและกดผ่านได้อย่างปลอดภัย: ตัวการเข้ารหัสไม่ได้ถูกทำลาย เพียงแต่ที่มาของใบรับรองไม่สามารถยืนยันด้วยเครื่องได้ หากต้องการปิดคำเตือนนี้ถาวร ให้นำเข้าใบรับรองของเซิร์ฟเวอร์เข้าสู่ที่เก็บใบรับรองที่เชื่อถือ (trust store) ของอุปกรณ์คุณ

เบราว์เซอร์ — คำเตือนใบรับรองแบบลงนามเองที่ไม่น่าเชื่อถือ; ดำเนินการต่อผ่าน ขั้นสูง → ดำเนินการต่อ เพื่อเปิดหน้าเว็บ

Chrome บน macOS แสดง ERR_ADDRESS_UNREACHABLE

บน macOS 15 (Sequoia) เป็นต้นไป แอปของบุคคลที่สามต้องได้รับอนุญาตอย่างชัดแจ้งจึงจะเข้าถึงอุปกรณ์บนเครือข่ายในพื้นที่ได้ — ที่อยู่ใด ๆ เช่น 192.168.x.x, 10.x.x.x หรือที่อยู่ลักษณะเดียวกัน Safari ได้รับการยกเว้นในฐานะแอประบบ URL ที่ส่งต่อจึงอาจเปิดได้ปกติใน Safari ขณะที่ Chrome รายงาน ERR_ADDRESS_UNREACHABLE ก่อนที่ TLS จะเริ่มทำงานเสียอีก นี่ไม่ใช่ปัญหาใบรับรองและไม่ใช่ปัญหาของตัวการส่งต่อเอง

วิธีอนุญาตให้ Chrome เข้าถึง:

  1. เปิด การตั้งค่าระบบ → ความเป็นส่วนตัวและความปลอดภัย → เครือข่ายในพื้นที่
  2. ค้นหา Google Chrome ในรายการแล้วเปิดสวิตช์เป็น เปิด
  3. ออกจาก Chrome ให้สมบูรณ์ (Cmd+Q ไม่ใช่แค่ปิดหน้าต่าง) แล้วเปิดใหม่

หากสวิตช์เปิดอยู่แล้ว ให้ปิดแล้วเปิดอีกครั้ง — สวิตช์อาจค้างได้หลังการอัปเดต Chrome หรือ macOS หากข้อผิดพลาดยังคงอยู่ ให้ตรวจสอบว่ามีส่วนขยาย VPN หรือพร็อกซีใน Chrome ที่ไม่ได้ส่งต่อช่วงที่อยู่ส่วนตัวหรือไม่

การควบคุมการเข้าถึง

สิ่งที่ปกป้องพอร์ตที่ส่งต่อขึ้นอยู่กับว่ามีอะไรอยู่เบื้องหลังพอร์ตนั้น:

  • การแชร์ในตัวต้องมีโทเคน ลิงก์แชร์ที่ไคลเอนต์สร้างขึ้น ไม่ว่าจะเป็นการแชร์ Host with HTTP server (?share_token=…) หรือหน้า Settings (?ticket=…) ล้วนมีโทเคนการเข้าถึงแนบมาด้วย การเชื่อมต่อที่ไม่มีโทเคนหรือเซสชันที่ถูกต้องจะถูกตัดทิ้งก่อนที่จะส่งอะไรออกไป เมื่อเข้าชมครั้งแรกเบราว์เซอร์จะแลกโทเคนเป็นคุกกี้เซสชันที่ปลอดภัยซึ่งใช้ได้เฉพาะบริการนั้น และโทเคนจะหายไปจาก URL ทำให้ไม่หลงเหลือในแถบที่อยู่หรือประวัติ

  • โทเคนใช้ครั้งเดียวและมีอายุสั้น ticket ของ Settings ใช้ได้เพียงครั้งเดียวและหมดอายุภายในหนึ่งนาที เมื่อบริการหยุดหรือรีสตาร์ท ลิงก์และเซสชันเดิมจะหยุดทำงาน จงถือว่าลิงก์ฉบับเต็มคือข้อมูลรับรอง — ใครมีลิงก์นี้ก็เข้าถึงบริการได้ — จึงควรแชร์ให้เฉพาะผู้ที่คุณไว้วางใจ

  • บริการของคุณเองต้องมีการยืนยันตัวตนของมันเอง การส่งต่อไปยังบริการภายในเครื่องอื่นเพียงเข้ารหัสการรับส่งข้อมูลด้วยใบรับรองที่เซิร์ฟเวอร์ลงนามเอง แต่ไม่ได้เพิ่มการยืนยันตัวตนเข้าไป ทุกอย่างที่บริการนั้นให้บริการ ทั้งหน้าเว็บและ API จะเข้าถึงได้โดยทุกคนที่เข้าถึงพอร์ตนั้นได้ ตั้งการยืนยันตัวตนให้บริการที่มีข้อมูลอ่อนไหวก่อนเปิดเผยออกไป