คุณสามารถ เปิดเผย localhost โดยไม่ต้อง port forwarding ได้ด้วย tunnel WebSocket ขาออก แทนที่จะเปิดพอร์ตขาเข้าบนเราเตอร์ CLI ของ tunnel จะเชื่อมต่อจากเครื่องของคุณไปยังเกตเวย์บนคลาวด์ซึ่งกำหนด URL HTTPS สาธารณะ โดยไม่ต้องตั้งค่าเราเตอร์ ไม่ต้องมี IP สาธารณะ และไม่ต้องตั้งข้อยกเว้นไฟร์วอลล์
ทำไม port forwarding จึงเป็นความเจ็บปวดของนักพัฒนา
port forwarding แบบดั้งเดิมต้องการ:
- สิทธิ์เข้าหน้าผู้ดูแลของเราเตอร์
- ที่อยู่ IP สาธารณะแบบคงที่หรือไดนามิก
- กฎไฟร์วอลล์ขาเข้าบนเครื่องและเราเตอร์
- การตั้งค่าใบรับรอง TLS ด้วยมือสำหรับ HTTPS
- ความร่วมมือจาก ISP (หลายรายบล็อกพอร์ตขาเข้าบนการเชื่อมต่อตามบ้าน)
เครือข่ายองค์กรและ Wi-Fi ร้านกาแฟยิ่งทำให้ยุ่งยากขึ้น นักพัฒนาส่วนใหญ่ต้องการทางที่ง่ายกว่านี้
tunnel ขาออกแทนที่ port forwarding อย่างไร
เครื่องมือ tunnel localhost สมัยใหม่กลับทิศทางการเชื่อมต่อ:
- CLI ของ tunnel เริ่มการเชื่อมต่อขาออกไปยังเกตเวย์บนคลาวด์
- เกตเวย์กำหนด URL HTTPS สาธารณะที่ผูกกับเซสชันของคุณ
- ทราฟฟิกภายนอกมาถึงเกตเวย์ คำขอไหลผ่านช่องทางขาออกที่มีอยู่ไปยังพอร์ตในเครื่องของคุณ
- เมื่อหยุด CLI URL ก็จะหยุดทำงาน
เพราะการเชื่อมต่อเริ่มจากภายในเครือข่ายของคุณ ไฟร์วอลล์องค์กร NAT และข้อจำกัดของ ISP จึงแทบไม่บล็อกมัน
เปิดเผย localhost ด้วยคำสั่งเดียว
npx portpreview 3000
PortPreview เชื่อมต่อขาออก กำหนด URL HTTPS และส่งต่อทราฟฟิกไปยังพอร์ต 3000 ของเครื่องคุณ ไม่ต้องล็อกอินเข้าเราเตอร์ ไม่ต้องมีเรคคอร์ด DNS ไม่ต้องจัดการใบรับรอง
port forwarding เทียบกับ tunnel localhost
| ด้าน | port forwarding | tunnel localhost |
|---|---|---|
| การตั้งค่าเราเตอร์ | จำเป็น | ไม่จำเป็น |
| IP สาธารณะ | จำเป็น | ไม่จำเป็น |
| HTTPS | ตั้งค่าด้วยมือ | มีให้พร้อม |
| การเปลี่ยนไฟร์วอลล์ | กฎขาเข้า | ไม่มี (ขาออกเท่านั้น) |
| การตรวจสอบคำขอ | เครื่องมือแยก | มีในตัว PortPreview |
| เครือข่ายองค์กร | มักถูกบล็อก | มักใช้ได้ |
เมื่อไรที่ยังต้องใช้ port forwarding
- บริการ self-hosted ที่ต้องรันบนโครงสร้างพื้นฐานของคุณเองในระยะยาว
- โปรโตคอลที่เครื่องมือ tunnel ไม่รองรับ (บริการ TCP เฉพาะที่นอกเหนือจาก HTTP)
- สภาพแวดล้อมที่นโยบายบล็อกการเชื่อมต่อขาออกไปยังเกตเวย์ของบุคคลที่สาม
สำหรับการทดสอบ webhook HTTP, callback OAuth และการพรีวิวระหว่างพัฒนา tunnel localhost เป็นตัวเลือกเริ่มต้นที่เร็วและปลอดภัยกว่า
ข้อดีด้านความปลอดภัยของการเลี่ยง port forwarding
การเปิดพอร์ตขาเข้าทำให้ทั้งเซกเมนต์เครือข่ายของคุณเผยต่ออินเทอร์เน็ต tunnel ขาออกจำกัดการเปิดเผยไว้ที่พอร์ตในเครื่องเดียวระหว่างเซสชันที่ใช้งานอยู่ อ่าน คู่มือความปลอดภัยของ tunnel localhost ของเราสำหรับแนวทางที่ดีโดยละเอียด
กรณีใช้งานทั่วไปที่ไม่ต้อง port forwarding
- การทดสอบ webhook ของ Stripe, GitHub หรือ Twilio (ดีบัก webhook ในเครื่อง)
- การแชร์งานที่กำลังทำกับเพื่อนร่วมงาน (แชร์เซิร์ฟเวอร์พัฒนาในเครื่อง)
- การทดสอบบนอุปกรณ์มือถือ (ทดสอบบนมือถือด้วย tunnel)
- การทดสอบ callback OAuth บน localhost
เข้าร่วมรายชื่อรอของ PortPreview เพื่อเปิดเผย localhost โดยไม่ต้องแตะเราเตอร์