ข้ามไปยังเนื้อหาหลัก

Mudcat (mudcat)

บทนำ​

บริการแชร์พอร์ต HTTP/TCP/UDP จาก Mudfish Networks มีเป้าหมายให้บริการสำหรับวัตถุประสงค์คล้ายกับ https://ngrok.io

บริการนี้ช่วยให้แชร์บริการในเครือข่ายภายในออกสู่ภายนอกได้ง่าย ปัจจุบันรองรับโปรโตคอลดังต่อไปนี้

  • HTTP

  • TCP

  • UDP

ติดตั้งและใช้งานได้ง่ายด้วยคำสั่งเดียว

ดาวน์โหลด​

ดาวน์โหลดโปรแกรมได้จาก https://www.mudcat.io/

สำหรับผู้ใช้ โปรแกรม mudcat มีเพียงไฟล์เรียกทำงาน 1 ไฟล์ จึงดาวน์โหลดและเรียกใช้งานได้ง่าย

ตัวเลือกการทำงานของ mudcat​

เมื่อเรียกโปรแกรม mudcat จะเห็นหน้าจอดังต่อไปนี้ โดยพื้นฐานแล้ว วิธีใช้ mudcat แตกต่างกันเล็กน้อยตามคำสั่ง

$ ./mudcat
Usage: mudcat [-vV] <command> [<args>]

Options:
-v # Increase the verbose level.
-V, --version # Show the version.

Commands:
http # Create a HTTP tunnel.
node # Show the mudcat nodes.
tcp # Create a TCP tunnel.
udp # Create a UDP tunnel.

คำสั่งที่รองรับในขณะนี้มีดังต่อไปนี้

  • http

    ใช้เมื่อต้องการส่งต่อพอร์ต HTTP

  • node

    แสดงข้อมูลเซิร์ฟเวอร์รีเลย์ mudcat ที่ใช้ส่งต่อ

  • tcp

    ใช้เมื่อต้องการส่งต่อพอร์ต TCP

  • UDP

    ใช้เมื่อต้องการส่งต่อพอร์ต UDP

โดยทั่วไป เรียก ./mudcat <command> -h เพื่อดูข้อมูลวิธีใช้เพิ่มเติมของคำสั่งนั้นได้

คำสั่ง mudcat http​

ใช้คำสั่งนี้เมื่อต้องการให้บริการส่งต่อ HTTP โดยทั่วไปใช้เปิดบริการที่กำลังพัฒนาภายในให้เข้าถึงจากภายนอกได้อย่างง่าย ๆ

$ ./mudcat http -h
Usage: mudcat http [options]
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. Default value is 80.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.

ตัวเลือกย่อยที่รองรับมีดังต่อไปนี้

  • --domain <domain>

    ตัวเลือกนี้ให้ผู้ใช้กำหนดโดเมนเองแทนที่อยู่โดเมนแบบสุ่ม (โดยทั่วไปเป็นตัวเลข) เช่น หากกำหนดเป็น --domain abc จะได้รับที่อยู่โดเมน abc.mudcat.io

  • --local-addr <ip>

    ตัวเลือกนี้กำหนดที่อยู่ภายในเครื่อง (IPv4) ที่ต้องการส่งต่อ HTTP ค่าเริ่มต้นคือ 127.0.0.1

    อย่างไรก็ตาม ค่านี้ไม่จำเป็นต้องเป็นที่อยู่ในเครือข่ายภายใน หากต้องการชี้ไปยัง Public IP อื่นที่อยู่ระยะไกล สามารถระบุ IP นั้นได้

  • --local-port <port>

    กำหนดพอร์ตภายในเครื่องที่ต้องการส่งต่อ HTTP ค่าเริ่มต้นคือ 80

  • --node-cc <cc>

    กำหนดรหัสประเทศของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ เช่น หากกำหนดรหัสประเทศเป็น JP ระบบจะจัดสรรเซิร์ฟเวอร์รีเลย์ mudcat ในญี่ปุ่นให้อัตโนมัติ

  • --node-id <nid>

    กำหนด unique ID ของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ ดู unique ID ของแต่ละเซิร์ฟเวอร์ได้ด้วยคำสั่ง mudcat node

คำสั่ง mudcat node​

ใช้คำสั่งนี้เพื่อดึงข้อมูลเซิร์ฟเวอร์รีเลย์ mudcat

$ ./mudcat node -h
Usage: mudcat node [--json-raw]
--json-raw # Prints the raw JSON output.

เมื่อใช้คำสั่ง ./mudcat node จะเห็นรายการเซิร์ฟเวอร์รีเลย์ mudcat ที่กำลังให้บริการ ตัวเลือกย่อยที่รองรับมีดังต่อไปนี้

  • --json-raw

    แสดงรายการเซิร์ฟเวอร์รีเลย์ในรูปแบบ JSON

คำสั่ง mudcat tcp​

ใช้คำสั่งนี้เมื่อต้องการให้บริการส่งต่อ TCP

$ ./mudcat tcp -h
Usage: mudcat tcp [options]
--conn-uuid <uuid> # Set the connection UUID to reuse.
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. If not specified,
# --remote-port value will be used.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.
--remote-port <port> # Specify the remote port.

ตัวเลือกย่อยที่รองรับมีดังต่อไปนี้

  • --conn-uuid <uuid>

    ใช้ตัวเลือกนี้เมื่อต้องการใช้ remote port เดิมซ้ำ

    โดยทั่วไป เมื่อใช้ remote port ที่จัดสรรให้แล้วตัดการเชื่อมต่อ จะใช้พอร์ตนั้นอีกไม่ได้จนกว่าจะปล่อยทรัพยากรของพอร์ต

    แต่หากทราบ Connection UUID เดิม สามารถใช้ remote port นั้นซ้ำได้ทันที

  • --domain <domain>

    ตัวเลือกนี้ให้ผู้ใช้กำหนดโดเมนเองแทนที่อยู่โดเมนแบบสุ่ม (โดยทั่วไปเป็นตัวเลข) เช่น หากกำหนดเป็น --domain abc จะได้รับที่อยู่โดเมน abc.mudcat.io

  • --local-addr <ip>

    ตัวเลือกนี้กำหนดที่อยู่ภายในเครื่อง (IPv4) ที่ต้องการส่งต่อ TCP ค่าเริ่มต้นคือ 127.0.0.1

    อย่างไรก็ตาม ค่านี้ไม่จำเป็นต้องเป็นที่อยู่ในเครือข่ายภายใน หากต้องการชี้ไปยัง Public IP อื่นที่อยู่ระยะไกล สามารถระบุ IP นั้นได้

  • --local-port <port>

    กำหนดพอร์ตภายในเครื่องที่ต้องการส่งต่อ TCP หากไม่ระบุตัวเลือกนี้ จะใช้ค่า --remote-port <port> เป็นพอร์ต

  • --node-cc <cc>

    กำหนดรหัสประเทศของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ เช่น หากกำหนดรหัสประเทศเป็น JP ระบบจะจัดสรรเซิร์ฟเวอร์รีเลย์ mudcat ในญี่ปุ่นให้อัตโนมัติ

  • --node-id <nid>

    กำหนด unique ID ของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ ดู unique ID ของแต่ละเซิร์ฟเวอร์ได้ด้วยคำสั่ง mudcat node

  • --remote-port <port>

    กำหนดพอร์ต TCP ที่เซิร์ฟเวอร์รีเลย์ mudcat จะรับฟัง

คำสั่ง mudcat udp​

ใช้คำสั่งนี้เมื่อต้องการให้บริการส่งต่อ UDP

$ ./mudcat udp -h
Usage: mudcat udp [options]
--conn-uuid <uuid> # Set the connection UUID to reuse.
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. If not specified,
# --remote-port value will be used.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.
--remote-port <port> # Specify the remote port.

ตัวเลือกย่อยที่รองรับมีดังต่อไปนี้

  • --conn-uuid <uuid>

    ใช้ตัวเลือกนี้เมื่อต้องการใช้ remote port เดิมซ้ำ

    โดยทั่วไป เมื่อใช้ remote port ที่จัดสรรให้แล้วตัดการเชื่อมต่อ จะใช้พอร์ตนั้นอีกไม่ได้จนกว่าจะปล่อยทรัพยากรของพอร์ต

    แต่หากทราบ Connection UUID เดิม สามารถใช้ remote port นั้นซ้ำได้ทันที

  • --domain <domain>

    ตัวเลือกนี้ให้ผู้ใช้กำหนดโดเมนเองแทนที่อยู่โดเมนแบบสุ่ม (โดยทั่วไปเป็นตัวเลข) เช่น หากกำหนดเป็น --domain abc จะได้รับที่อยู่โดเมน abc.mudcat.io

  • --local-addr <ip>

    ตัวเลือกนี้กำหนดที่อยู่ภายในเครื่อง (IPv4) ที่ต้องการส่งต่อ UDP ค่าเริ่มต้นคือ 127.0.0.1

    อย่างไรก็ตาม ค่านี้ไม่จำเป็นต้องเป็นที่อยู่ในเครือข่ายภายใน หากต้องการชี้ไปยัง Public IP อื่นที่อยู่ระยะไกล สามารถระบุ IP นั้นได้

  • --local-port <port>

    กำหนดพอร์ตภายในเครื่องที่ต้องการส่งต่อ UDP หากไม่ระบุตัวเลือกนี้ จะใช้ค่า --remote-port <port> เป็นพอร์ต

  • --node-cc <cc>

    กำหนดรหัสประเทศของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ เช่น หากกำหนดรหัสประเทศเป็น JP ระบบจะจัดสรรเซิร์ฟเวอร์รีเลย์ mudcat ในญี่ปุ่นให้อัตโนมัติ

  • --node-id <nid>

    กำหนด unique ID ของเซิร์ฟเวอร์รีเลย์ mudcat ที่ต้องการใช้ได้ ดู unique ID ของแต่ละเซิร์ฟเวอร์ได้ด้วยคำสั่ง mudcat node

  • --remote-port <port>

    กำหนดพอร์ต UDP ที่เซิร์ฟเวอร์รีเลย์ mudcat จะรับฟัง

บันทึกการเปลี่ยนแปลง​

0.0.3 (2023-01-21)​

  • เพิ่มตัวเลือกใหม่ดังต่อไปนี้

    • --domain
    • --node-id

0.0.2 (2023-01-20)​

  • แก้ปัญหาการทำงานไม่ถูกต้องบน Windows

0.0.1 (2023-01-18)​

  • นี่คือรุ่นแรก แม้จะพัฒนาฟังก์ชันพื้นฐานแล้ว แต่คาดว่ายังมีส่วนที่ต้องปรับปรุงและบั๊กอีกมาก เราจะค่อย ๆ พัฒนาให้ดีขึ้น