ยกตัวอย่างเหตุการณ์
เคยไหมที่เราต้องการเชื่อมต่อไปยังถังฐานข้อมูลแต่เครื่องเซิฟเวอร์ของฐานข้อมูลนั้นดันปิดพอร์ตที่เราต้องกการติดต่อ จะทำอย่างไรดีหล่ะ เพื่อให้เราสามารถติดต่อเข้าไปได้ เช่น ต้องการ ติดต่อเข้าพอร์ต 3306 จากเครื่องเราไปยังเครื่องเซิฟเวอร์ แต่ติดต่อไม่ได้ ขึ้น connection timeout เพราะพอร์ตมันปิด
หรืออีกกรณี ต้องการยิง api ไปยังเซิฟเวอร์แต่เครื่องเซิฟเวอร์ไม่ได้เปิดพอร์ตให้ภายนอกเข้าถึง วิธีการที่เราจะลองทำกันก็คือการใช้ bore เครื่องมือที่ใช้สำหรับสร้างท่อระหว่างเซิฟเวอร์ ทำให้เราสามารถติดต่อเข้าไปยังเซอร์วิสที่เราต้องการได้โดยไม่ต้องเปิดพอร์ตภายใน
สิ่งที่ต้องรู้สำหรับการทำท่านี้
- การสื่อสารต้องผ่าน TCP ( bore รองรับการใช้งานเฉพาะ TCP ไม่ร้องรับ UDP)
- จะต้องมีเครื่องที่ใช้สำหรับให้เครื่องเรา connect เข้าไปได้ โดยที่เปิดพอร์ตขาเข้าบางพอร์ตเอาไว้ (เราจะใช้พอร์ตนี้ในการติดต่อเข้าถึงเครื่องเซิฟเวอร์ปลายทางที่เราต้องการ)
- เครื่องเซิฟเวอร์ปลายทางเราจะต้องสามารถ remote เข้าไปติดตั้งตัว bore ได้ (ถ้าไม่สามารถเข้าไปติดตั้ง bore ที่ฝั่งปลายทางได้ ก็จะไม่สามารถทำท่อต่อออกมาได้)
การติดตั้ง
เราสามารถทำการ download binary ไฟล์ ที่ build เรียบร้อยแล้ว หรือจะใช้ package manager เพื่อทำการติดตั้ง package ลงไปที่เครื่อง หรือจะใช้งานผ่าน docker ก็ได้
using binary file
ทำการ download จาก github release https://github.com/ekzhang/bore/releases
using brew (mac)
|
|
using docker
|
|
การใช้งาน
ที่ฝั่ง bore server (ตัวกลาง)
เราจะทำการติดตั้ง bore ลงไปยังเครื่องที่เราเตรียมไว้และทำการรัน bore ขึ้นมาโดยเป็นโหมด server และตั้งค่าให้ bore รันบนพอร์ตที่เราต้องการ เช่น ถ้าเครื่องที่เราเตรียมไว้ มีพอร์ตที่เปิดอยู่คือพอร์ต 8000 เราจะทำการรัน bore server ด้วยพอร์ต 8000
|
|
เราสามารถเพิ่มความปลอดภัยให้กัท่อของเราได้ด้วยการใช้งาน secret หาก secret ระหว่าง bore server และ bore client ไม่ตรงกัน จะไม่สามารถสื่อสารกันได้
ที่ฝั่ง bore client (เครื่องเป้าหมายของเรา)
สั่งรัน bore โดยทำให้รันเป็น client จากนั้นทำการตั้งค่า ระบุพอร์ตและโฮสท์ให้ชี้ไปหาที่เครืองตัวกลางของเรา
|
|
เพียงเท่านี้ เราก็จะสามารถสื่อสารกับพอร์ตที่ปิดตัวอยู่ที่ฝั่งปลายทางโดยผ่านเครื่องตัวกลางได้
Reference Link
Bore repository : https://github.com/ekzhang
อย่าลืมให้กำลังใจสล็อตด้วยการกดไลค์ กดแชร์บทความ กดติดตามเพจ Sloth Coding ด้วยนะฮะ ขอบคุณฮะ ;)