อุโมงค์ TCP ที่ทันสมัยและเรียบง่ายในสนิมที่ทำให้พอร์ตท้องถิ่นไปยังเซิร์ฟเวอร์ระยะไกลโดยผ่านไฟร์วอลล์การเชื่อมต่อ NAT มาตรฐาน นั่นคือทั้งหมดที่ทำ: ไม่มากและไม่น้อย
# การติดตั้ง (ต้องมีสนิมดูทางเลือกด้านล่าง) การติดตั้งค่าขนส่ง
สิ่งนี้จะเปิดเผยพอร์ตในพื้นที่ของคุณที่ localhost:8000
ไปยังอินเทอร์เน็ตสาธารณะที่ bore.pub:<PORT>
โดยที่หมายเลขพอร์ตถูกกำหนดแบบสุ่ม
เช่นเดียวกับ LocalTunnel และ Ngrok ยกเว้น bore
มีจุดประสงค์เพื่อเป็นเครื่องมือที่มีประสิทธิภาพสูงและไม่ได้รับการแนะนำสำหรับการส่งต่อการรับส่งข้อมูล TCP ที่ง่ายต่อการติดตั้งและง่ายต่อการเป็นเจ้าภาพโดยไม่มีการติดตั้ง
( bore
ทั้งหมดประมาณ 400 บรรทัดของ Safe, Async Rust Code และเป็นเรื่องเล็กน้อยในการตั้งค่า - เพียงเรียกใช้ไบนารีเดียวสำหรับไคลเอนต์และเซิร์ฟเวอร์)
หากคุณอยู่ใน MacOS bore
จะถูกบรรจุเป็นสูตรหลักของโฮมบรูว์
Brew ติดตั้ง bore-cli
มิฉะนั้นวิธีที่ง่ายที่สุดในการติดตั้งเบื่อคือจากไบนารีที่สร้างไว้ล่วงหน้า สิ่งเหล่านี้มีอยู่ในหน้ารีลีสสำหรับ MacOS, Windows และ Linux เพียงแค่คลายซิปไฟล์ที่เหมาะสมสำหรับแพลตฟอร์มของคุณและย้ายการทำงานของ bore
ไปยังโฟลเดอร์บนเส้นทางของคุณ
นอกจากนี้คุณยังสามารถสร้าง bore
จากแหล่งที่มาโดยใช้สินค้า, Rust Package Manager คำสั่งนี้ติดตั้ง bore
Binary ที่เส้นทางที่ผู้ใช้เข้าถึงได้
การติดตั้งสินค้า
นอกจากนี้เรายังเผยแพร่รูปภาพ Docker ที่มีเวอร์ชันสำหรับแต่ละรุ่น ภาพถูกสร้างขึ้นสำหรับสถาปัตยกรรม AMD 64 บิต พวกเขากำลังติดแท็กด้วยเวอร์ชันเฉพาะและอนุญาตให้คุณเรียกใช้ไบนารี bore
แบบคงที่จากคอนเทนเนอร์ "รอยขีดข่วน" ขั้นต่ำ
Docker Run -it --init - -rm -network โฮสต์ Ekzhang/Bore <grars>
ส่วนนี้อธิบายการใช้อย่างละเอียดสำหรับคำสั่ง bore
CLI
คุณสามารถส่งต่อพอร์ตบนเครื่องในเครื่องของคุณโดยใช้คำสั่ง bore local
สิ่งนี้ต้องใช้อาร์กิวเมนต์ตำแหน่งพอร์ตโลคัลไปข้างหน้ารวมถึงตัวเลือกที่ --to
ซึ่งระบุที่อยู่ของเซิร์ฟเวอร์ระยะไกล
เจาะท้องถิ่น 5000 -เพื่อเจาะ
คุณสามารถเลือกผ่านตัวเลือก --port
พอร์ตเพื่อเลือกพอร์ตเฉพาะบนรีโมตเพื่อเปิดเผยแม้ว่าคำสั่งจะล้มเหลวหากพอร์ตนี้ไม่พร้อมใช้งาน นอกจากนี้การส่งผ่าน --local-host
ช่วยให้คุณสามารถเปิดเผยโฮสต์ที่แตกต่างกันในเครือข่ายพื้นที่ท้องถิ่นของคุณนอกเหนือจากที่อยู่วนรอบ localhost
ตัวเลือกเต็มแสดงไว้ด้านล่าง
เริ่มพร็อกซีท้องถิ่นไปยังเซิร์ฟเวอร์ระยะไกล การใช้งาน: Bore Local [ตัวเลือก] -ถึง <to> <to> <local_port> อาร์กิวเมนต์: <local_port> พอร์ตท้องถิ่นที่จะเปิดเผย ตัวเลือก: -l,-local-host <sot> โฮสต์ท้องถิ่นที่จะเปิดเผย [ค่าเริ่มต้น: localhost] -t, -ถึง <to> ที่อยู่ของเซิร์ฟเวอร์ระยะไกลเพื่อเปิดเผยพอร์ตท้องถิ่นไปที่ [env: bore_server =] -p, -พอร์ต <port> พอร์ตเสริมบนเซิร์ฟเวอร์ระยะไกลเพื่อเลือก [ค่าเริ่มต้น: 0] -S, -Secret <Secret> ความลับเสริมสำหรับการตรวจสอบสิทธิ์ [ENV: BORE_SECRET] -H, -ข้อมูลช่วยเหลือการพิมพ์
ดังที่ได้กล่าวไว้ในคำแนะนำการเริ่มต้นมีอินสแตนซ์สาธารณะของเซิร์ฟเวอร์ bore
ที่ทำงานที่ bore.pub
อย่างไรก็ตามหากคุณต้องการเป็น bore
ในเครือข่ายของคุณเองคุณสามารถทำได้ด้วยคำสั่งต่อไปนี้:
เซิร์ฟเวอร์เบื่อ
นั่นคือทั้งหมดที่ต้องใช้! หลังจากเซิร์ฟเวอร์เริ่มทำงานตามที่อยู่ที่กำหนดคุณสามารถอัปเดตคำสั่ง bore local
ด้วยตัวเลือก --to <ADDRESS>
เพื่อส่งต่อพอร์ตโลคัลไปยังเซิร์ฟเวอร์ระยะไกลนี้
ตัวเลือกเต็มสำหรับคำสั่ง bore server
แสดงอยู่ด้านล่าง
เรียกใช้พร็อกซีเซิร์ฟเวอร์ระยะไกล การใช้งาน: เซิร์ฟเวอร์เจาะ [ตัวเลือก] ตัวเลือก: -Min-Port <In_port> หมายเลขพอร์ต TCP ที่ยอมรับขั้นต่ำ [ค่าเริ่มต้น: 1024, Env: Bore_min_port] -Max-Port <Max_Port> หมายเลขพอร์ต TCP ที่ได้รับการยอมรับสูงสุด [ค่าเริ่มต้น: 65535, Env: BORE_MAX_PORT] -S, -Secret <Secret> ความลับเสริมสำหรับการตรวจสอบสิทธิ์ [ENV: BORE_SECRET] -H, -ข้อมูลช่วยเหลือการพิมพ์
มี พอร์ตควบคุม โดยนัยที่ 7835
ใช้สำหรับการสร้างการเชื่อมต่อใหม่ตามความต้องการ ในการเริ่มต้นไคลเอนต์จะส่งข้อความ "สวัสดี" ไปยังเซิร์ฟเวอร์บนพอร์ตควบคุม TCP โดยขอให้พอร์ตระยะไกลที่เลือกพร็อกซี จากนั้นเซิร์ฟเวอร์จะตอบกลับด้วยการตอบรับและเริ่มฟังการเชื่อมต่อ TCP ภายนอก
เมื่อใดก็ตามที่เซิร์ฟเวอร์ได้รับการเชื่อมต่อบนพอร์ตระยะไกลจะสร้าง UUID ที่ปลอดภัยสำหรับการเชื่อมต่อนั้นและส่งกลับไปยังไคลเอนต์ จากนั้นไคลเอนต์จะเปิดสตรีม TCP แยกต่างหากไปยังเซิร์ฟเวอร์และส่งข้อความ "ยอมรับ" ที่มี UUID ในสตรีมนั้น จากนั้นเซิร์ฟเวอร์พร็อกซีการเชื่อมต่อทั้งสองระหว่างกัน
ด้วยเหตุผลที่ถูกต้องและเพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำการเชื่อมต่อที่เข้ามาจะถูกเก็บไว้โดยเซิร์ฟเวอร์นานถึง 10 วินาทีก่อนที่จะถูกทิ้งหากไคลเอนต์ไม่ยอมรับ
ในการปรับใช้ bore server
ที่กำหนดเองคุณสามารถเลือก ความลับ เพื่อป้องกันไม่ให้เซิร์ฟเวอร์ถูกใช้งานโดยผู้อื่น โปรโตคอลต้องการให้ลูกค้าตรวจสอบการครอบครองความลับในการเชื่อมต่อ TCP แต่ละครั้งโดยการตอบสนองความท้าทายแบบสุ่มในรูปแบบของรหัส HMAC (ความลับนี้ใช้สำหรับการจับมือกันครั้งแรกเท่านั้นและไม่มีการเข้ารหัสเพิ่มเติมโดยค่าเริ่มต้น)
# บนเซิร์ฟเวอร์ ServerBore -Secret My_Secret_String# บนไคลเอน
หากความลับไม่มีอยู่ในข้อโต้แย้ง bore
จะพยายามอ่านจากตัวแปรสภาพแวดล้อม BORE_SECRET
สร้างโดย Eric Zhang (@Ekzhang1) ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
ผู้เขียนขอขอบคุณผู้มีส่วนร่วมและผู้ดูแลโครงการ Tokio ที่ทำให้สามารถเขียนบริการเครือข่ายตามหลักสรีรศาสตร์และมีประสิทธิภาพใน Rust