Skip to content

Wiki th th

pjscruggs edited this page Nov 11, 2026 · 2 revisions

Raknetify2 · ไทย (ประเทศไทย)

ภาษา

ผู้เล่นหลายคน

เชื่อมต่อไคลเอนต์และเซิร์ฟเวอร์ Minecraft ผ่านเครือข่าย RakNet

ดาวน์โหลด · GitHub

Minecraft Raknetify2 ไคลเอนต์ / เซิร์ฟเวอร์
Fabric mods/raknetify2-fabric-*.jar ไคลเอนต์ / เซิร์ฟเวอร์
Forge mods/raknetify2-forge-*.jar ไคลเอนต์ / เซิร์ฟเวอร์
NeoForge mods/raknetify2-neoforge-*.jar ไคลเอนต์ / เซิร์ฟเวอร์
Spigot / Paper plugins/raknetify2-spigot-*.jar เซิร์ฟเวอร์
Velocity plugins/raknetify2-velocity-*.jar Velocity
BungeeCord plugins/raknetify2-bungee-*.jar BungeeCord

เพิ่มเซิร์ฟเวอร์

  1. ผู้เล่นหลายคน

  2. เพิ่มเซิร์ฟเวอร์

  3. ที่อยู่เซิร์ฟเวอร์

    ที่อยู่เซิร์ฟเวอร์
    RakNet · UDP raknet;play.example.com:25565
    TCP play.example.com:25565
  4. เสร็จสิ้น

  5. เข้าร่วมเซิร์ฟเวอร์

F3 · Raknetify2

F3
RakNet · UDP ทำงานอยู่ · MTU 1400
TCP ไม่ทำงาน

Velocity / BungeeCord

  1. ไคลเอนต์ · Raknetify2 → UDP → Velocity / BungeeCord · Raknetify2
  2. Velocity / BungeeCord → TCP → เซิร์ฟเวอร์
หมายเลขพอร์ต · UDP Java
Fabric / Forge / NeoForge 1–65534 -Draknetify.fabric.portOverride=25570
Spigot / Paper ≥ 0.1.0-beta.1.431 1–65535 -Draknetify.spigot.portOverride=25570
Velocity 1–65534 -Draknetify.velocity.portOverride=25570
BungeeCord 1–65534 -Draknetify.bungee.portOverride=25570

หมดเวลาการเชื่อมต่อ

ที่อยู่เซิร์ฟเวอร์ UDP
raknet;play.example.com:25580 play.example.com:25580 → NAT → 192.0.2.10:25570
เซิร์ฟเวอร์ · 192.0.2.10 25570/udp

config/raknetify2-compatibility.json

เซิร์ฟเวอร์ / Velocity / BungeeCord

JSON
① ② ③ {"mode":"ordered"}
① ∥ ② ∥ ③ {"mode":"multichannel"}

Simple Voice Chat

เซิร์ฟเวอร์ Raknetify2 · UDP 25565 Simple Voice Chat
Fabric / Forge / NeoForge config/raknetify2-voicechat.json · {"enabled":true} config/voicechat/voicechat-server.properties · port=-1
Spigot / Paper config/raknetify2-voicechat.json · {"enabled":true} plugins/voicechat/voicechat-server.properties · port=-1

Simple Voice Chat · Velocity / BungeeCord

PROXY protocol v2 · UDP

ที่อยู่เซิร์ฟเวอร์ trustedProxies RakNet
192.0.2.10 · PROXY v2 / UDP ["192.0.2.10"] ✓
192.0.2.11 · PROXY v2 / UDP ["192.0.2.10"] ✗
ไคลเอนต์ → RakNet / UDP ["192.0.2.10"] ✗

config/raknetify2-proxy-protocol.json

{"trustedProxies":["192.0.2.10"]}

Minecraft ≥ 1.20.5 · /transfer

  1. เซิร์ฟเวอร์ A · Fabric / Forge / NeoForge · config/raknetify2-transfers.json

    {"destinations":[{"host":"play.example.com","tcpPort":25565,"udpPort":25570}]}
  2. เซิร์ฟเวอร์ B · play.example.com · server.properties → accepts-transfers=true

  3. เซิร์ฟเวอร์ A · /transfer play.example.com 25565 Alex → ไคลเอนต์ (Alex) → RakNet · play.example.com:25570

PacketOrdering

Minecraft
ui ตัวเลือก
entity โครงกระดูก
world_interaction ช่องเก็บของ
effects อนุภาค
chunk บล็อก

PacketOrdering.java

เวอร์ชันเข้ากันไม่ได้!

รายงานจุดบกพร่อง

หน้าหลัก

Raknetify2

Raknetify2 ใช้ RakNet ผ่าน UDP สำหรับการโต้ตอบในระบบ multiplayer Minecraft โดยจะแบ่งการสื่อสารออกเป็นช่องทางต่างๆ เพื่อให้การสูญเสียแพ็กเก็ตในช่องทางหนึ่งไม่ส่งผลต่อการสื่อสารในช่องทางอื่น สิ่งนี้ช่วยให้การโต้ตอบยังคงทำงานได้อย่างรวดเร็วขณะที่การเชื่อมต่อกำลังซ่อมแซมข้อมูลที่หายไปหรือส่งต่อชิ้นส่วนต่างๆ

Raknetify2 เป็นเวอร์ชันที่ได้รับการดูแลโดยอิสระจาก Raknetify โดยเริ่มต้นถูกพัฒนาโดย ishland เวอร์ชันนี้มีการเพิ่มความสามารถในการรองรับเวอร์ชัน Minecraft ที่ใหม่กว่า และยังคงรักษาการทำงานของระบบการส่งข้อมูล การผสานรวมกับแพลตฟอร์ม และการทดสอบความเข้ากันได้ไว้เช่นเดิม

เริ่มต้นกันเลย

  1. ตรวจสอบความเข้ากันได้ของ Minecraft และ mod.
  2. เลือกไฟล์ที่ต้องการดาวน์โหลดแล้วติดตั้งมัน.
  3. เชื่อมต่อกับที่อยู่เช่น raknet;play.example.com.

คู่มือการใช้งานเซิร์ฟเวอร์

ผู้สร้าง mod สามารถใช้ interface การจัดลำดับแพ็กเก็ต เพื่อระบุความสัมพันธ์ระหว่าง payload แบบกำหนดเองกับการสื่อสารของ Minecraft ได้

ลิงก์โครงการ

Raknetify2 ใช้ ใบอนุญาต MIT และยังคงข้อความลิขสิทธิ์ต้นฉบับไว้ การ implement ระบบเครือข่ายของมันนั้นอิงจาก Raknetify และ netty-raknet

การติดตั้ง

ดาวน์โหลดแพตช์จาก GitHub Releases ตรวจสอบเวอร์ชันของ Minecraft และข้อกำหนดในการติดตั้งสำหรับแพตช์นั้นก่อนการติดตั้ง

ที่คุณกำลังติดตั้งอยู่ ไฟล์ โฟลเดอร์
ไคลเอนต์หรือเซิร์ฟเวอร์ของ Fabric raknetify2-fabric-*.jar mods
Forge client หรือ Forge server raknetify2-forge-*.jar mods
ไคลเอนต์หรือเซิร์ฟเวอร์ NeoForge raknetify2-neoforge-*.jar mods
เซิร์ฟเวอร์ Spigot หรือ Paper raknetify2-spigot-*.jar plugins
Velocity proxy raknetify2-velocity-*.jar plugins
BungeeCord ตัวแทน raknetify2-bungee-*.jar plugins

ปิดไคลเอนต์หรือหยุดเซิร์ฟเวอร์ก่อนที่จะเปลี่ยนไฟล์ JAR เอาไฟล์ Raknetify JAR ตัวเดิมและไฟล์ Raknetify2 JAR เก่าๆ ออกจากโค้ดเดิมก่อนที่จะเพิ่มไฟล์ใหม่เข้าไป

โฟลเดอร์ของฝั่งไคลเอนต์จะเป็นของ Minecraft instance หรือ modpack ที่คุณเปิดใช้งาน ส่วนโฟลเดอร์ของฝั่งเซิร์ฟเวอร์และพร็อกซี่จะเป็นของการติดตั้งเซิร์ฟเวอร์หรือพร็อกซี่นั้น ให้สร้างโฟลเดอร์ที่เหมาะสมหากโปรแกรมโหลดยังไม่ได้สร้างไว้

การเชื่อมต่อกับเซิร์ฟเวอร์โดยตรง

  1. ติดตั้งโมดูลสำหรับคลาวน์ของคุณ.
  2. ติดตั้งโมดูลเซิร์ฟเวอร์ที่เหมาะสม หรือปลั๊กอิน Spigot/Paper บนเซิร์ฟเวอร์ที่สามารถใช้งานได้
  3. ปฏิบัติตาม การกำหนดค่า Firewall และเราเตอร์ เพื่ออนุญาตให้มีการเชื่อมต่อ UDP ไปยังเซิร์ฟเวอร์
  4. รีสตาร์ททั้งไคลเอนต์และเซิร์ฟเวอร์.
  5. เพิ่มที่อยู่ของเซิร์ฟเวอร์ เช่น raknet;play.example.com หรือ raknet;play.example.com:25565

ที่อยู่ที่ไม่มีคำนำหน้า raknet; จะใช้ TCP

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

Velocity และ BungeeCord

ติดตั้งปลั๊กอินพร็อกซี่ที่เหมาะสมและโมดูลคลัสเตอร์ ปฏิบัติตามคู่มือ Velocity และ BungeeCord สำหรับการตั้งค่าผู้ฟัง การส่งต่อข้อมูลฝั่งหลังบ้าน การจำกัดการเข้าถึง และที่อยู่ที่ผู้เล่นควรใช้

พอร์ตผู้ฟัง UDP แยกต่างหาก

สำหรับเซิร์ฟเวอร์ Minecraft แบบตรง ให้ตั้งค่าอาร์กิวเมนต์ Java ตามที่เหมาะสมด้านล่างนี้ นักดำเนินการพร็อกซี่ควรใช้การตั้งค่า Velocity และ BungeeCord listener

แพลตฟอร์ม อาร์กิวเมนต์ของ Java พอร์ตที่ยอมรับได้
เซิร์ฟเวอร์ Fabric, Forge หรือ NeoForge -Draknetify.fabric.portOverride=25570 1 ถึง 65534
เซิร์ฟเวอร์ Spigot หรือ Paper -Draknetify.spigot.portOverride=25570 1 ถึง 65535

Forge และ NeoForge ใช้โค้ดผู้ฟังร่วมกัน ดังนั้นชื่อ propertie ของพวกมันจึงมีคำว่า fabric ด้วย ให้แทนที่ 25570 ด้วยพอร์ต UDP ที่ต้องการ

Spigot / Paper ≥ 0.1.0-beta.1.431

เพิ่มอาร์กิวเมนต์ก่อน -jar ในคำสั่ง Java หรือในช่องอาร์กิวเมนต์ของ JVM ของโฮสต์ เริ่มต้นเซิร์ฟเวอร์ใหม่และเปิดใช้งาน UDP บนพอร์ตที่เลือกไว้ หากพอร์ตสาธารณะเป็น 25570 ให้เชื่อมต่อด้วย raknet;play.example.com:25570 หากเราเตอร์แปลงพอร์ต ให้ใช้พอร์ตสาธารณะของเราเตอร์ในที่อยู่ของคอนโทรลเลอร์ พอร์ต TCP จะยังคงเป็นค่าเดิม

ในระบบ Spigot/Paper ตัวฟังก์ชัน UDP จะเก็บที่อยู่การเชื่อมต่อแบบลอยน้ำของตัวฟังก์ชัน TCP ของ Minecraft ไว้ หากมีการตั้งค่าที่ไม่ถูกต้องหรือพอร์ต UDP ถูกใช้ไป ก็จะทำให้ RakNet ไม่สามารถเริ่มต้นทำงานได้ ให้ตรวจสอบไฟล์บันทึกการเริ่มต้นเพื่อดูที่อยู่และพอร์ต UDP ที่ถูกกำหนดไว้ จากนั้นลบอาร์กิวเมนต์นั้นออกและเริ่มต้นใหม่เพื่อกลับไปใช้หมายเลขพอร์ตของตัวฟังก์ชัน TCP อีกครั้ง

เราเตอร์หรือพร็อกซี UDP ก็สามารถเปิดใช้งานพอร์ต UDP สาธารณะที่แตกต่างออกไป และส่งข้อมูลไปยังผู้ฟังที่มีอยู่ได้ โดยไม่ต้องเปลี่ยนแปลงอาร์กิวเมนต์ของเซิร์ฟเวอร์ในภาษา Java

การพัฒนาโค้ด

เปิดการรัน main ที่สำเร็จใน GitHub Actions แล้วดาวน์โหลดอาร์ไคฟ์ Artifacts ของมัน GitHub ต้องการบัญชีเพื่อดาวน์โหลดอาร์ไคฟ์ของ workflow ใช้ตารางการติดตั้งด้านบนเพื่อเลือก JAR จากอาร์ไคฟ์

Velocity และ BungeeCord

Velocity และ BungeeCord ทำหน้าที่เชื่อมต่อระหว่างผู้เล่นกับเซิร์ฟเวอร์ Minecraft ด้านหลัง ให้ติดตั้ง Raknetify2 ไว้บนพร็อกซี่และบนไคลเอนต์แต่ละตัวที่จะเชื่อมต่อผ่าน RakNet

Raknetify2 client --UDP--> Velocity หรือ BungeeCord --TCP--> backend server

เซิร์ฟเวอร์ฝั่งหลังไม่จำเป็นต้องใช้ Raknetify2 สำหรับเส้นทางการเชื่อมต่อนี้ พวกเขายังคงต้องใช้อัพเดต mods, ปลั๊กอิน และการสนับสนุนการส่งต่อที่จำเป็นสำหรับเครือข่ายของคุณ Raknetify2 ไม่ได้แปลเวอร์ชัน Minecraft หรือเปลี่ยนแปลงการยืนยันบัญชีของพร็อกซี่

ติดตั้งปลั๊กอินพร็อกซี่

  1. ตรวจสอบให้แน่ใจว่าการเชื่อมต่อ TCP แบบปกติผ่านพร็อกซีของคุณสามารถทำงานได้ รวมถึงการยืนยันตัวตนและการสลับไปมาระหว่างเซิร์ฟเวอร์ฝั่งหลังด้วย.
  2. หยุดการทำงานของพร็อกซี่แล้วดาวน์โหลดปลั๊กอินที่เหมาะสมจาก GitHub Releases
  3. นำไฟล์ raknetify2-velocity-*-all.jar หรือ raknetify2-bungee-*-all.jar ไปวางไว้ในโฟลเดอร์ plugins ของเว็บพร็อกซี่ ลบไฟล์ปลั๊กอิน Raknetify หรือ Raknetify2 ที่มีอายุเก่าออกจากโฟลเดอร์นั้น
  4. ติดตั้งโมดูล client ของ Raknetify2 ที่เหมาะสมโดยใช้ คู่มือติดตั้ง
  5. ตรวจสอบการตั้งค่าผู้ฟังด้านล่างนี้ เริ่มต้นใหม่ของพร็อกซี่ และตรวจสอบไฟล์บันทึกของมันเพื่อหาปัญหาเกี่ยวกับผู้ฟัง RakNet
  6. อนุญาตการสื่อสาร UDP สาธารณะไปยังพร็อกซี่ และจำกัดพอร์ตการเล่นเกมด้านหลังตามที่อธิบายไว้ใน การตั้งค่า Firewall และเราเตอร์

ใช้เวอร์ชัน Raknetify2 ที่เข้ากันได้กับทั้ง client และ proxy โปรดตรวจสอบ ความเข้ากันได้ ก่อนที่จะใช้เวอร์ชันต่างๆ ผสมกัน

Velocity

ค่าตัวเลือก bind ในไฟล์ velocity.toml จะกำหนดที่อยู่รับสัญญาณของ Minecraft และพอร์ต TCP ของ Velocity Raknetify2 โดยปกติแล้ว Raknetify2 จะใช้หมายเลขพอร์ตเดียวกันสำหรับ UDP ข้อความ [servers] จะระบุเซิร์ฟเวอร์เบื้องหลัง โดยต้องระบุที่อยู่ TCP ของเซิร์ฟเวอร์เบื้องหลังด้วย ดูข้อมูลเพิ่มเติมใน คู่มือการตั้งค่าของ Velocity

หากต้องการใช้พอร์ต UDP แยกต่างหาก ให้เพิ่มอาร์กิวเมนต์ JVM นี้ก่อน -jar ในคำสั่งเริ่มต้นของ Velocity:

-Draknetify.velocity.portOverride=25570

แทนที่ 25570 ด้วยพอร์ตที่คุณเลือก การทำเช่นนี้จะเปลี่ยนพอร์ต UDP ของ RakNet โดยยังคงพอร์ต TCP และที่อยู่ backend ของ Velocity ไว้ หลังจากเปลี่ยนค่าอาร์กิวเมนต์แล้ว ให้รีสตาร์ท Velocity อีกครั้ง

ตั้งค่าการส่งข้อมูลผู้เล่นทั้งบน Velocity และเบรนด์ของมัน ใช้การส่งข้อมูลแบบสมัยใหม่เมื่อซอฟต์แวร์เบรนด์รองรับ และเก็บการส่งข้อมูลนี้เป็นความลับ ปฏิบัติตามคำแนะนำเฉพาะของเบรนด์ใน คู่มือการส่งข้อมูลผู้เล่นของ Velocity ให้รักษาการจำกัดของไฟร์วอลล์เบรนด์ไว้พร้อมกับการส่งข้อมูลด้วย

BungeeCord

ในไฟล์ config.yml ของ BungeeCord ค่า host ภายใต้แต่ละรายการ listeners จะระบุที่อยู่รับสัญญาณและพอร์ต TCP ของ Minecraft โดยปกติ Raknetify2 จะเพิ่มพอร์ต UDP ไปด้วยที่หมายเลขนั้น รายการ servers จะเก็บที่อยู่ TCP ของเซิร์ฟเวอร์ด้านหลัง ตัวตั้งค่านี้มีการอธิบายไว้ใน คู่มือการตั้งค่า BungeeCord

สำหรับพอร์ต UDP แยกต่างหาก ให้เพิ่มอาร์กิวเมนต์ JVM นี้ก่อน -jar ในคำสั่งเริ่มต้นของ BungeeCord:

-Draknetify.bungee.portOverride=25570

การ override นี้เกี่ยวข้องกับกระบวนการพร็อกซี่โดยรวม สำหรับการตั้งค่าที่มีหลายตัวรับฟังสัญญาณ Minecraft โปรดตรวจสอบจุดสิ้นสุดของ RakNet ที่แท้จริงในไฟล์บันทึกการเริ่มต้นก่อนที่จะเพิ่มกฎการป้องกันไฟร์วอลล์ หลังจากเปลี่ยนอาร์กิวเมนต์แล้ว ให้รีสตาร์ท BungeeCord อีกครั้ง

รักษาการยืนยันตัวตนของบัญชีไว้ที่พร็อกซี่ สำหรับ backend ของ Spigot การใช้ IP forwarding guide ของ BungeeCord จะกำหนดค่า ip_forward: true บนพร็อกซี่ ร่วมกับ settings.bungeecord: true บน backend การส่งต่อเพียงอย่างเดียวไม่สามารถป้องกันไม่ให้ใครเชื่อมต่อโดยตรงกับ backend ได้ จำกัดการเข้าถึง backend ด้วยคำแนะนำเกี่ยวกับ firewall

เลือกรายละเอียดที่ผู้เล่นใช้

ทั้งสองตัวเลือกการปรับแต่งพร็อกซี่สามารถรับพอร์ตตั้งแต่ 1 ถึง 65534 ได้ ค่าที่ไม่ถูกต้องจะถูกละเว้นไป ดังนั้นควรตรวจสอบพอร์ต UDP ที่กำหนดไว้ในบันทึกเริ่มต้น ถอนอาร์กิวเมนต์แล้วเริ่มต้นใหม่เพื่อกลับไปใช้หมายเลขพอร์ตของผู้ฟังใน Minecraft

ผู้เล่นจะเชื่อมต่อกับชื่อโฮสต์สาธารณะของพร็อกซี่และพอร์ต UDP ตัวอย่างเช่น raknet;play.example.com:25570 เมื่อเราเตอร์แปลงพอร์ต ให้ใช้พอร์ต UDP สาธารณะของเราเตอร์ในที่อยู่ของไคลเอนต์ ส่วนที่อยู่ที่ไม่มีคำนำหน้า raknet; จะยังคงใช้ลูทีน TCP ของพร็อกซี่ต่อไป

เว้นไว้สำหรับคำถาม, Geyser และบริการ UDP อื่นๆ บนพอร์ต UDP แยกต่างหาก พอร์ต TCP ที่แตกต่างกันจะไม่ช่วยแก้ปัญหาการขัดแย้งของซ็อกเก็ต UDP

การสนทนาด้วยเสียงและการส่งข้อมูลผ่าน UDP เพิ่มเติม

Simple Voice Chat ใช้ปลั๊กอินพร็อกซี่ของตัวเองและใช้พอร์ต UDP บนเวอร์ชัน Velocity และ BungeeCord ให้ทำตามคำแนะนำเกี่ยวกับการตั้งค่าระบบ Voice Chat พร็อกซี่ นี้ สำหรับการตั้งค่า.

หากมีเรลีด UDP แยกต่างหากอยู่ด้านหน้าพร็อกซี Minecraft และส่งเฮดเดอร์โปรโตคอล PROXY เวอร์ชัน 2 ให้โปรแกรม Raknetify2 ให้ตั้งค่าโดยใช้ UDP forwarding และโปรโตคอล PROXY การติดตั้ง Velocity หรือ BungeeCord โดยลำพังไม่จำเป็นต้องมีการตั้งค่าดังกล่าว

ตรวจสอบการเชื่อมต่อ

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

  • หากการใช้งาน TCP ผ่านพร็อกซีทำได้ แต่ RakNet เกิดเวลาเต็ม ให้ตรวจสอบตัวรับสัญญาณ UDP ของพร็อกซี พอร์ตสาธารณะ เส้นทาง IPv4 และ IPv6 รวมถึงกฎการป้องกันไวรัสด้วย.
  • หากทั้งสองตัวกลางล้มเหลวเมื่อพร็อกซี่เชื่อมต่อกับเบื้องหลัง ให้ตรวจสอบที่อยู่ TCP ของเบื้องหลัง กฎการเข้าถึง และการกำหนดค่าการส่งต่อผู้เล่น
  • หากพร็อกซี่รายงานว่าส่วนประสาน UDP ถูกใช้งานอยู่ ให้ตรวจสอบว่ามีกระบวนการ Query, Geyser, พร็อกซี่สำหรับเสียง หรือกระบวนการอื่นที่เชื่อมต่อกับส่วนประสาน UDP นั้นอยู่หรือไม่

สำหรับการรายงาน ควรรวมบันทึกของพร็อกซีและบันทึกของเบ็ดเดนจากการพยายามเชื่อมต่อเดียวกันไว้ด้วย ดูข้อมูลเกี่ยวกับเวอร์ชันที่ควรรวมไว้ใน Troubleshooting

การตั้งค่า Firewall และ Router

คู่มือนี้เหมาะสำหรับผู้ดูแลเซิร์ฟเวอร์ Raknetify2 จำเป็นต้องมีเส้นทาง UDP ที่ใช้งานได้เพื่อเชื่อมต่อไปยังเซิร์ฟเวอร์หรือพร็อกซี่ที่รับการเชื่อมต่อแบบ RakNet การตั้งค่าเริ่มต้นจะใช้หมายเลขพอร์ตเดียวกับของ Minecraft’s TCP listener

สำหรับผู้เล่นที่อยู่ในเครือข่ายท้องถิ่นเดียวกัน ให้ใช้ที่อยู่ท้องถิ่นของเซิร์ฟเวอร์ และอนุญาตให้ UDP ผ่านไฟร์วอลล์ของโฮสต์ได้ การส่งข้อมูลผ่านพอร์ตของเราเตอร์เป็นสิ่งจำเป็นเมื่อการจราจรอินเทอร์เน็ตต้องผ่าน NAT IPv4 ของเราเตอร์ของคุณ

เลือกจุดหมายปลายทางและพอร์ต

เซิร์ฟเวอร์โดยตรง

ส่งข้อมูล UDP ไปยังเครื่องที่ใช้รันเซิร์ฟเวอร์ Minecraft โดยใช้โปรแกรม Raknetify2 จุดหมายปลายทางคือพอร์ตของ RakNet UDP ของเซิร์ฟเวอร์นั้น ให้เปิดพอร์ตนั้นในไฟร์วอลล์ของเครื่องเซิร์ฟเวอร์ด้วย ควรเก็บเส้นทาง TCP เก่าของเครื่องเซิร์ฟเวอร์ไว้สำหรับการเชื่อมต่อ Minecraft แบบปกติด้วย.

ตัวอย่างเช่น หาก Raknetify2 รับสัญญาณผ่าน UDP 25570 ให้ส่งพอร์ต UDP สาธารณะไปยังที่อยู่ภายในของเซิร์ฟเวอร์ที่พอร์ต 25570 ส่วนพอร์ต TCP ของเซิร์ฟเวอร์สามารถยังคงเป็น 25565 ได้ ดู การตั้งค่า listener ของเซิร์ฟเวอร์โดยตรง เพื่อเลือกพอร์ต UDP ที่แตกต่างออกไป

Velocity หรือ BungeeCord

ส่งการสื่อสาร UDP ทั่วไปไปยังเครื่องที่ใช้ Velocity หรือ BungeeCord พร้อมกับปลั๊กอุปกรณ์ Raknetify2 ใช้ตัวฟังก์ชัน RakNet UDP ของพร็อกซี่เป็นจุดส่งต่อ ยังคงใช้วงจร TCP สาธารณะที่มีอยู่ของพร็อกซี่สำหรับการเชื่อมต่อ Minecraft แบบปกติ

พร็อกซี่จะเชื่อมต่อกับเซิร์ฟเวอร์ Minecraft ด้านหลังผ่านทาง TCP การเพิ่ม Raknetify2 เข้าไปในพร็อกซี่ไม่จำเป็นต้องเปิดพอร์ต UDP สำหรับการเล่นเกมเพื่อให้ผู้เล่นสามารถเชื่อมต่อได้

การเชื่อมต่อ การเข้าถึงที่อนุญาต
ผู้เล่นที่ใช้งานพร็อกซี ส่งข้อมูลผ่าน UDP สาธารณะไปยังผู้ฟัง RakNet พร้อมกับผู้ฟัง TCP สาธารณะที่มีอยู่เดิม
พร็อกซี่เพื่อเชื่อมต่อกับเซิร์ฟเวอร์หลังบ้าน พอร์ต TCP ใน Minecraft ด้านหลังเว็บ (Backend) ซึ่งสามารถเข้าถึงได้เฉพาะจากเว็บพร็อกซี่ที่กำหนดไว้เท่านั้น
ผู้เล่นสามารถเข้าสู่พอร์ตการเล่นเกมด้านหลังได้โดยตรง รักษาสถานะถูกบล็อกไว้ ไม่ว่าจะผ่าน IPv6 ก็ตาม

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

การส่งข้อมูลของผู้เล่นและข้อจำกัดของไฟร์วอลล์ทำงานร่วมกัน การเข้าถึงหน้าเว็บหลังบ้านโดยตรงสามารถหลีกเลี่ยงการตรวจสอบการล็อกอินของพร็อกซีได้ สำหรับการติดตั้งปลั๊กอิน การตั้งค่าการส่งข้อมูล และการเปลี่ยนพอร์ต UDP ให้ทำตาม Velocity และ BungeeCord

หมายเลขพอร์ตสาธารณะและพอร์ตท้องถิ่น

พอร์ตสาธารณะและพอร์ตของผู้ฟังอาจแตกต่างกันเมื่อเราเตอร์ทำการแปลงระหว่างทั้งสอง

การตั้งค่า พอร์ตที่ควรใช้
ที่อยู่ของเซิร์ฟเวอร์และคลาย พอร์ต UDP สาธารณะ
กฎการส่งข้อมูลของเราเตอร์สำหรับพอร์ตภายนอก พอร์ต UDP สาธารณะ
กฎการส่งข้อมูลของเราเตอร์ในพอร์ตภายใน พอร์ต UDP ของผู้ฟัง RakNet
พอร์ตท้องถิ่นของ Firewall ของโฮสต์ พอร์ต UDP ของผู้ฟัง RakNet

การเปิดทิศทางพอร์ต IPv4

สำหรับการจัดเก็บข้อมูลผ่านเราเตอร์ IPv4:

  1. หาที่อยู่ IPv4 ของเครื่องที่รับการเชื่อมต่อ RakNet ใช้ DHCP reservation หรือที่อยู่คงที่ที่เหมาะสม เพื่อให้กฎการส่งต่อยังคงมุ่งเป้าไปที่เครื่องนั้น
  2. เพิ่มกฎการส่งข้อมูลแบบ UDP สำหรับพอร์ตสาธารณะที่ผู้เล่นจะใช้
  3. ตั้งค่าหน้าที่ปลายทางของกฎให้เป็นที่อยู่ภายในของเครื่องนั้น และพอร์ต UDP ของ RakNet listener
  4. อนุญาตการรับส่งข้อมูล UDP ผ่านพอร์ตของผู้ฟังในไฟร์วอลล์ของโฮสต์

ตัวอย่างเช่น เซิร์ฟเวอร์ที่รับสัญญาณผ่านพอร์ต UDP 25565 สามารถใช้กฎเกณฑ์ที่มีพอร์ตสาธารณะ 25565, ที่อยู่เป้าหมาย 192.168.1.100, และพอร์ตเป้าหมาย 25565 ปรับเปลี่ยนที่อยู่ตัวอย่างให้เป็นที่อยู่จริงของเซิร์ฟเวอร์ของคุณแทน

ยังคงใช้กฎ TCP สำหรับการเชื่อมต่อทั่วไปใน Minecraft การใช้กฎการส่งต่อ TCP เดี่ยวไม่สามารถส่ง UDP ได้

เมื่อการส่งต่อยังคงไม่สำเร็จ

ตรวจสอบว่ามีเราเตอร์อื่นหรือ ISP ของคุณทำการ NAT หรือไม่ ก่อนที่ข้อมูลจะถึงเราเตอร์ของคุณ หากมีเราเตอร์สองเครื่อง คุณต้องควบคุมการส่งข้อมูลให้ครอบคลุมทั้งสองเครื่อง หาก ISP ของคุณใช้ NAT ระดับผู้ให้บริการ ให้ถามว่าพวกเขาสามารถให้ที่อยู่ IPv4 สาธารณะได้หรือไม่ หรือใช้บริการโฮสติ้งหรือทะลุผ่านที่รองรับ UDP ได้หรือไม่ กฎการส่งข้อมูลของเราเตอร์ของคุณไม่สามารถตั้งค่า NAT ของ ISP ได้ ดู คู่มือการตั้งค่าการส่งข้อมูลของ TP-Link สำหรับข้อกำหนดเกี่ยวกับที่อยู่ WAN สาธารณะ

กฎการควบคุมไฟร์วอลล์ IPv6

อนุญาตให้พอร์ต UDP ที่เลือกไว้ผ่านไฟร์วอลล์ IPv6 ของเราเตอร์และไฟร์วอลล์ของโฮสต์ได้ จุดหมายคือที่อยู่ IPv6 ของเครื่องที่รับการเชื่อมต่อ RakNet

ตรวจสอบว่าอีเวอร์เน็ตของชื่อเครื่องนั้นชี้ไปยังเครื่องนั้นจริงหรือไม่ หากอีเวอร์เน็ตของ IPv6 เปลี่ยนแปลง ให้อัปเดตบันทึก DNS และกฎการป้องกันไวรัสที่เกี่ยวข้องกับที่อยู่นั้นด้วย

ชื่อโฮสต์ที่สามารถแสดงทั้งที่อยู่ IPv4 และ IPv6 จะต้องมีเส้นทางการเชื่อมต่อที่ใช้งานได้สำหรับที่อยู่ทั้งสองแบบ ตรวจสอบกฎทั้งสองชุดเมื่อผู้เล่นคนหนึ่งสามารถเชื่อมต่อได้ แต่ผู้เล่นอีกคนไม่สามารถเชื่อมต่อได้

หากการส่งข้อมูลผ่าน IPv4 ทำให้หมายเลขพอร์ตเปลี่ยนไป ให้ตรวจสอบให้แน่ใจว่าพอร์ตที่ผู้เล่นใช้เข้าถึงได้จริงกับผู้รับสัญญาณใน IPv6 การแปลงหมายเลขพอร์ตใน IPv4 ไม่ได้กำหนดเส้นทางการส่งข้อมูลใน IPv6

ผู้ให้บริการการจัดเก็บข้อมูลและท่อสัญญาณ

ผู้ให้บริการหรือท่อสัญญาณต้องรองรับ UDP บนจุดสิ้นสุดสาธารณะที่คุณกำหนดให้ผู้เล่น ตรวจสอบการจัดสรรพอร์ตและกฎการป้องกันเครือข่าย รวมถึงการป้องกันเครือข่ายของเซิร์ฟเวอร์เองด้วย

หากมีพร็อกซี UDP ตัวหนึ่งส่งอีเมลจากคอนโซลโดยใช้โปรโตคอล PROXY เวอร์ชัน 2 ให้ทำตาม UDP forwarding และ PROXY protocol และจำกัดการเข้าถึงของผู้ฟัง UDP ให้เฉพาะพร็อกซีที่ได้รับความไว้วางใจเท่านั้น

ตรวจสอบการเชื่อมต่อ

เชื่อมต่อจากนอกเครือข่ายท้องถิ่นของเซิร์ฟเวอร์ โดยใช้ไคลเอนต์ Raknetify2 ที่ได้รับการอัปเดต โดยใช้ที่อยู่เช่น raknet;play.example.com:25565 ใช้พอร์ต UDP สาธารณะในที่อยู่ดังกล่าว

ใช้การเชื่อมต่อ RakNet จริงเพื่อตรวจสอบเส้นทาง หากการสแกน UDP ไม่ได้รับการตอบกลับ ก็อาจรายงานผลที่ไม่ชัดเจน เนื่องจากบริการที่ทำงานได้อาจปฏิเสธการสแกนที่ไม่คุ้นเคย เอกสารการสแกน UDP ของ Nmap อธิบายพฤติกรรมนี้ไว้

การเชื่อมต่อ TCP ที่สำเร็จจะยืนยันเพียงเส้นทาง TCP เท่านั้น หาก RakNet หมดเวลา โปรดตรวจสอบตัวฟังก์ชันรับสัญญาณ ตำแหน่งปลายทางการส่งข้อมูล พอร์ต UDP และกฎการป้องกันไวรัสโดยใช้ คู่มือแก้ไขปัญหา

ความเข้ากันได้

ตรวจสอบความเข้ากันได้กับเวอร์ชันที่คุณดาวน์โหลดมา ต้นไม้การพัฒนาอาจมีการสนับสนุนที่ยังไม่มีในเวอร์ชันจริง

เวอร์ชัน Minecraft และ Java

เวอร์ชัน Minecraft และ Java · English

ข้อกำหนดด้าน Java ที่ Raknetify2 ระบุนั้นเป็นข้อกำหนดขั้นต่ำ Minecraft หรือโปรแกรมโหลดอาจต้องการรันโปรแกรมบนระบบปฏิบัติการที่ใหม่กว่า คุณควรเลือกเวอร์ชัน Java ที่ตอบสนองความต้องการทั้งสามข้อนี้ได้

เวอร์ชันของคอมพิวเตอร์ไคลเอนต์และเซิร์ฟเวอร์

โปรดใช้เวอร์ชัน Raknetify2 เดียวกันทั้งบนไคลเอนต์และเซิร์ฟเวอร์ หรือพร็อกซี่ที่ยอมรับการเชื่อมต่อของเวอร์ชันนี้ หากเป็นไปได้ ตรวจสอบข้อมูลเพิ่มเติมก่อนการนำเวอร์ชันต่างๆ มาใช้ การเชื่อมต่อ RakNet ที่มีการเข้ารหัสต้องมีการรองรับโปรโตคอลการเข้ารหัสที่ได้รับการยืนยันตัวตนจากทั้งสองฝั่ง ไลบรารี Raknetify และ Raknetify2 ที่สร้างขึ้นก่อนที่โปรโตคอลนี้จะถูกนำมาใช้ไม่สามารถทำการเชื่อมต่อแบบเข้ารหัสกับเพื่อนที่อัปเดตแล้วได้

Raknetify2 นำโปรโตคอลเกมของ Minecraft ที่มีอยู่มาใช้ การเชื่อมต่อเวอร์ชัน Minecraft ที่แตกต่างกันจำเป็นต้องมีการตั้งค่าแปลงโปรโตคอลให้เหมาะสม

มอดอื่นๆ

มอดอื่นๆ · English

หากเกิดปัญหาในโมดพัคขนาดใหญ่ ให้ปฏิบัติตาม คู่มือการแก้ไขปัญหา ระบุเวอร์ชันของโมดทั้งหมดในรายงานของคุณด้วย

โหมดเรียงลำดับ

โหมดเรียงลำดับ

โดยปกติแล้ว Raknetify2 จะอนุญาตให้ช่องส่งข้อมูลแบบอิสระดำเนินการต่อไปในขณะที่ช่องหนึ่งกำลังรอข้อมูลที่ขาดหายไป ในโหมดเรียงลำดับ ข้อมูลทั้งหมดของ Minecraft จะถูกส่งไปยังช่องเดียว ดังนั้นข้อมูลที่ขาดหายไปจะทำให้ข้อมูลอื่นๆ ที่ส่งต่อไปในทิศทางเดียวกันต้องรอจนกว่าจะมีการส่งข้อมูลใหม่ออกมา ซึ่งวิธีนี้จะช่วยรักษาลำดับการส่งข้อมูลตามที่ซอฟต์แวร์ป้องกันการโกงต้องการ แต่ก็ทำให้ Raknetify2 ไม่สามารถรักษาการส่งข้อมูลที่ไม่เกี่ยวข้องกับเกมได้ในระหว่างช่วงเวลารอนี้

การเปิดใช้งานโหมดเรียงลำดับ

  1. ติดตั้งโปรแกรม Raknetify2 ที่รองรับโหมดการจัดลำดับข้อมูลบนเซิร์ฟเวอร์หรือพร็อกซี่ที่รับการเชื่อมต่อ RakNet และบนไคลเอนต์ RakNet ทุกตัว

  2. สร้างไฟล์ config/raknetify2-compatibility.json ไว้ในไดเรกทอรีของเซิร์ฟเวอร์หรือพร็อกซี่นั้น หากไดเรกทอรี config ยังไม่มี ก็สร้างไดเรกทอรีนั้นขึ้นมา

  3. เพิ่มข้อความต่อไปนี้เข้าไป:

    {"mode": "ordered"}
  4. รีสตาร์ทเซิร์ฟเวอร์หรือพร็อกซี่.

ผู้เล่นจะทำตามการตั้งค่าของเซิร์ฟเวอร์โดยอัตโนมัติ ผู้เล่นไม่จำเป็นต้องสร้างไฟล์การตั้งค่าหรือเปลี่ยนที่อยู่เซิร์ฟเวอร์ RakNetของตนเอง

ทุกแพ็กเก็ตใน Minecraft จะใช้ช่องสัญญาณที่เชื่อถือได้และมีลำดับที่ชัดเจนในแต่ละทิศทาง รวมถึงการกำหนดขอบเขตของบันเดิลและการเปลี่ยนโลกด้วย.

การตั้งค่ากระบวนการปลอมแปลง IP

เมื่อผู้เล่นเชื่อมต่อผ่าน Velocity หรือ BungeeCord ให้ตั้งค่าเป็นโหมดเรียงลำดับบนพร็อกซีนั้น แม้ว่าการป้องกันการโกงจะทำงานบนเซิร์ฟเวอร์ด้านหลังก็ตาม

นโยบายนี้ใช้กับสวิตช์ด้านหลังได้ทั้งหมด ในโหมดเรียงลำดับ ตัวแปรจะส่งคำขอ keepalive ไปยังลูกค้าจริงแทนที่จะตอบกลับที่ต้นทาง

ตรวจสอบการตั้งค่า

ในการเชื่อมต่อ RakNet ครั้งแรก คอนโซลจะรายงานว่า:

Raknetify2 compatibility: ordered (updated clients required, genuine acknowledgements)

การแลกเปลี่ยนความเข้ากันได้ที่สำเร็จจะมีการบันทึกคำว่า “ordered compatibility negotiated” ตามด้วยที่อยู่ของฝ่ายตรงข้าม

ควรเปิดการตรวจสอบการใช้โปรแกรมโกงไว้ตลอดเวลา และตรวจสอบการตั้งค่าของคุณให้ถูกต้อง

คลาวด์เก่า

ผู้ใช้ RakNet ที่ไม่รองรับโหมดการจัดลำดับข้อมูลไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่ต้องการใช้งานโหมดนี้ได้ ควรอัปเดต Raknetify2 บนผู้ใช้เหล่านั้น หรือเชื่อมต่อโดยใช้ที่อยู่และพอร์ต TCP ปกติของเซิร์ฟเวอร์หรือพร็อกซี่ โดยไม่ต้องใช้คำนำหน้า raknet;

กลับสู่โหมดหลายช่องทาง

เปลี่ยนไฟล์เป็น:

{"mode": "multichannel"}

จากนั้นให้เริ่มต้นเซิร์ฟเวอร์หรือพร็อกซี่ใหม่ การลบไฟล์นี้จะช่วยฟื้นฟูโหมดมัลติเชนจ์หลังจากการเริ่มต้นใหม่ได้อีกด้วย

ปัญหาการกำหนดค่า

ไฟล์ต้องมีการตั้งค่าชื่อ mode เพียงหนึ่งค่าเท่านั้น โดยค่าเลือกได้คือ "ordered" หรือ "multichannel" ค่านี้จะแยกความแตกต่างของตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก

การตั้งค่าที่ไม่ถูกต้องหรืออ่านไม่ออกจะทำให้การเชื่อมต่อ RakNet ไม่สำเร็จ กรุณาแก้ไขไฟล์และเริ่มกระบวนการใหม่

หากคอนโซลยังคงแสดงคำว่า multichannel ให้ตรวจสอบว่าฟิลด์นั้นอยู่ในไดเรกทอรีของเซิร์ฟเวอร์หรือพร็อกซี่ที่รับการเชื่อมต่อ RakNet แล้วจึงรีสตาร์ทกระบวนการนั้นอีกครั้ง

การโอนย้ายโดยอัตโนมัติ

เซิร์ฟเวอร์ของ Fabric, Forge และ NeoForge สามารถเลือกใช้ RakNet เมื่อส่งคิวรีที่มีความสามารถไปยังจุดหมายที่กำหนดไว้ โดยจะใช้การสนับสนุนการส่งข้อมูลแบบดั้งเดิมของ Minecraft ซึ่งเพิ่มเข้ามาใน Java Edition 1.20.5 ตรวจสอบให้แน่ใจว่า Raknetify2 ของคุณรองรับเวอร์ชันและโปรแกรมของ Minecraft ทั้งสองฝั่ง

ติดตั้ง Raknetify2 บนเซิร์ฟเวอร์ผู้ส่งและเซิร์ฟเวอร์ผู้รับ จุดหมายปลายทางจะต้องมีตัวรับสัญญาณ RakNet ที่เข้ากันได้และยอมรับการส่งข้อมูล Minecraft จากภายนอก

การตั้งค่านี้ใช้กับการโอนข้อมูลที่ส่งโดยโมดูลโหลดทั้งสามตัวที่กล่าวมาข้างต้น โมดูล Spigot/Paper, Velocity และ BungeeCord ไม่ได้อ่านไฟล์การโอนข้อมูลนี้

ตั้งค่าซอฟต์แวร์เซิร์ฟเวอร์ผู้ส่งข้อมูล

สร้างไฟล์ config/raknetify2-transfers.json ในไดเรกทอรีของเซิร์ฟเวอร์ผู้ส่งข้อมูล:

{
  "destinations": [
    {
      "host": "play.example.com",
      "tcpPort": 25565,
      "udpPort": 25570
    }
  ]
}

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

สนาม ความหมาย
host ชื่อโฮสต์หรือที่อยู่ IP ของปลายทาง โดยไม่มีคำนำหน้าสำหรับการส่งข้อมูลหรือพอร์ต
tcpPort พอร์ตปลายทางในคำขอส่งต่อต้นฉบับ
udpPort คลัสเตอร์ของผู้ใช้ที่ส่งข้อมูลควรติดต่อกับพอร์ต RakNet สาธารณะ

หมายเลขพอร์ตของ TCP และ UDP สามารถเท่ากันได้ หากเราเตอร์แปลงพอร์ต UDP ให้ใช้พอร์ตสาธารณะในไฟล์นี้ ระบุพอร์ตในรูปแบบตัวเลข JSON

ส่งการโอนเงินไปยังชื่อโฮสต์ปกติและพอร์ต TCP ของเป้าหมาย Raknetify2 จะตรวจสอบว่าผู้ใช้กำลังแสดงการรองรับการโอนเงินอัตโนมัติหรือไม่ หากเป็นผู้ใช้ที่มีความสามารถและเป้าหมายตรงกัน จะเลือกพอร์ต UDP ที่กำหนดไว้ ส่วนผู้ใช้อื่นและเป้าหมายที่ไม่ตรงกันจะยังคงที่อยู่ของการโอนเงินเดิมไว้

การจับคู่จะใช้ชื่อโฮสต์และพอร์ต TCP จากคำขอการส่งข้อมูล ชื่อโฮสต์จะถูกทำให้เป็นตัวพิมพ์ใหญ่ โดเมน DNS ที่อยู่ท้ายจะถูกตัดออก และการสะกดคำใน IPv6 ก็จะถูกปรับให้เหมือนกัน การค้นหาด้วย DNS จะไม่มีส่วนร่วมในการจับคู่ ดังนั้นโฮสต์ที่ต่างกันแต่ให้ที่อยู่เดียวกันจะต้องมีการลงทะเบียนแยกกัน ทะเบียนแบบ Wildcard ไม่ได้รับการสนับสนุน

การตั้งค่าหน้าที่ปลายทาง

สำหรับเป้าหมายที่ใช้ server.properties ของ Minecraft ให้ตั้งค่า accepts-transfers=true แล้วรีสตาร์ทเครื่องเป้าหมาย เป้าหมายพร็อกซี่อาจมีการตั้งค่าการโอนเงินเป็นของตัวเองได้ Minecraft จะปฏิเสธการโอนเงินเข้ามาโดยอัตโนมัติ แม้ว่าการเข้าสู่ระบบโดยตรงจะทำได้ปกติก็ตาม

ปลั๊กอิน RakNet ของปลายทาง ฟังก์ชันการส่งข้อมูลผ่าน UDP ทั่วไป และไฟร์วอลล์ของโฮสต์ จะต้องถูกกำหนดค่าไว้แล้ว ส่วนไฟล์การส่งข้อมูลของเซิร์ฟเวอร์ผู้ส่งจะเป็นตัวกำหนดที่อยู่ที่จะส่งข้อมูลไปยังคลัสเตอร์

ตรวจสอบเส้นทาง IPv4 และ IPv6 ของเป้าหมายเมื่อชื่อโฮสต์ของมันแสดงทั้งสองประเภทของที่อยู่ ทดสอบการเชื่อมต่อ RakNet แบบปกติไปยังเป้าหมายก่อนที่จะตรวจสอบพฤติกรรมการโอนย้ายอัตโนมัติ

ยังคงให้มีการตรวจสอบการเข้าสู่ระบบหรือการเข้าถึงข้อมูลต่างๆ ไว้ ตั้งค่านี้ไม่ได้ให้ผู้เล่นเข้าถึงหรือแทนที่การยืนยันตัวตนของเซิร์ฟเวอร์

ข้อผิดพลาดในการกำหนดค่าและการปิดการทำงาน

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

หากต้องการปิดการเลือกอัตโนมัติ ให้ลบไฟล์กำหนดค่าออก หรือใช้ค่า {"destinations": []} จากนั้นจึงรีสตาร์ทเซิร์ฟเวอร์การส่งข้อมูลอีกครั้ง คำขอการส่งข้อมูลจะยังคงมีที่อยู่เดิมต่อไป

การส่งต่อข้อมูล UDP และโปรโตคอล PROXY

Proxy ชนิด UDP สามารถส่งต่อการจราจรของ RakNet และรักษาที่อยู่ของผู้ใช้ต้นทางไว้ได้โดยใช้โปรโตคอล PROXY เวอร์ชัน 2 ให้เปิดฟีเจอร์นี้เมื่อ proxy UDP ต้นทางส่งเฮดเดอร์เหล่านั้นไปยังผู้ฟังของคุณ การเปิดใช้งานฟีเจอร์นี้ไม่จำเป็นต้องทำเมื่อใช้การเปิดทรานสคริปต์พอร์ตเราเตอร์ทั่วไป

บนเซิร์ฟเวอร์หรือไพรเวทเซิร์ฟเวอร์ของ Minecraft ที่รับการส่งข้อมูล UDP ไปยังที่ปลายทาง ให้สร้างไฟล์ config/raknetify2-proxy-protocol.json

{
  "trustedProxies": ["192.0.2.10"]
}

กรุณาใช้ที่อยู่ IP ต้นทางจริงของ UDP proxy หรือช่วงที่อยู่ CIDR ที่คุณควบคุมได้แทนตัวอย่างที่ให้มา ที่อยู่ดังกล่าวจะต้องตรงกับที่อยู่ที่ผู้รับเห็นหลังจากการปรับเปลี่ยน NAT ใดๆ ทั้งสิ้น สามารถใช้ที่อยู่ IPv4 หรือ IPv6 ได้ แต่ชื่อโฮสต์ใน DNS จะถูกปฏิเสธ กรุณาลองเริ่มต้นเซิร์ฟเวอร์หรือ proxy อีกครั้ง.

ตั้งค่าแพ็กเก็ตสะพานเพื่อส่งเฮดเดอร์โปรโตคอล PROXY v2 สำหรับ UDP Raknetify2 จะรับเฉพาะที่อยู่ของคลายเอนต์ที่ส่งผ่านมาเท่านั้นจากแหล่งที่ระบุไว้ การเชื่อมต่อ RakNet โดยไม่มีเฮดเดอร์ดังกล่าวจะถูกปฏิเสธเมื่อมีการตั้งค่านี้ ผู้ฟังโปรโตคอล TCP จะยังคงมีการตั้งค่าเดิมไว้

ความไว้วางใจและการเข้าถึง

พร็อกซีแต่ละตัวในรายการได้รับอนุญาตให้แจ้งที่อยู่ของไคลเอนต์ ตั้งค่าไฟร์วอลล์ของเซิร์ฟเวอร์ปลายทางให้เฉพาะพร็อกซีที่กำหนดเท่านั้นเข้าถึงพอร์ต UDP ของเซิร์ฟเวอร์ได้ จำกัดช่วงที่อยู่ที่เชื่อถือให้แคบที่สุดเท่าที่เครือข่ายของคุณจะใช้งานได้

ไฟล์ต้องมีเพียง trustedProxies เท่านั้น โดยมีอย่างน้อยหนึ่งรายการ ไฟล์ที่ว่างเปล่าจะถือเป็นข้อผิดพลาด ไฟล์ที่ไม่ถูกต้องจะทำให้ RakNet listener ไม่สามารถเริ่มต้นได้

เพื่อกลับไปใช้การเชื่อมต่อแบบ UDP โดยตรง ให้ลบไฟล์ออกแล้วเริ่มต้นใช้งาน listener อีกครั้ง พร้อมกับอัปเดตพฤติกรรมการส่งข้อมูลไปยังปลายทางใหม่ และกฎการใช้งานของฟิลด์ไวร์ในเวลาเดียวกัน

หากการเชื่อมต่อล้มเหลวหลังจากเปิดใช้งานฟีเจอร์นี้ ให้ตรวจสอบที่อยู่ต้นทางของพร็อกซี่จริงๆ ที่ด้านหลัง ช่วงที่ได้รับการยืนยันแล้ว และว่าพร็อกซี่ส่งเฮดเดอร์โปรโตคอล UDP PROXY v2 หรือไม่

สำหรับการติดตั้งพร็อกซีและการกำหนดค่าเบื้องหลังใน Minecraft ให้ทำตาม Velocity และ BungeeCord

Simple Voice Chat

Raknetify2 สามารถแบ่งปันตัวรับสัญญาณ UDP ของเซิร์ฟเวอร์กับ Simple Voice Chat บน Fabric, Forge, NeoForge, Spigot และ Paper ได้

ติดตั้ง Simple Voice Chat บนเซิร์ฟเวอร์และในไคลเอนต์ของผู้เล่นแต่ละคนที่ต้องการใช้เสียงสนทนา จากนั้นทำตามคู่มือตั้งค่าเซิร์ฟเวอร์เพื่อตั้งค่าส่วนที่เหลือ

ใช้ไดเรกทอรี config ระดับสูงของเซิร์ฟเวอร์สำหรับไฟล์ของ Raknetify2 รวมถึงใน Spigot/Paper ส่วนไฟล์ของ Simple Voice Chat จะยังคงอยู่ในตำแหน่งเฉพาะของแพลตฟอร์มด้านล่าง

แชร์การเล่นเกมในรูปแบบใหม่

  1. สร้างไฟล์ config/raknetify2-voicechat.json ในไดเรกทอรีของเซิร์ฟเวอร์ด้วยเนื้อหาดังนี้:

    {"enabled": true}
  2. ตั้งค่า port=-1 ในการตั้งค่าซอฟต์แวร์ของ Simple Voice Chat บนเซิร์ฟเวอร์ที่มีการดัดแปลง จะอยู่ที่ config/voicechat/voicechat-server.properties ส่วนบน Spigot/Paper จะอยู่ที่ plugins/voicechat/voicechat-server.properties

  3. เมื่อมีผู้ฟังสัญญาณ RakNet ที่ตรงกัน ให้เว้นช่อง bind_address ไว้เป็นศูนย์ หากเซิร์ฟเวอร์มีผู้ฟังสัญญาณหลายตัวบนพอร์ต UDP เดียวกัน ให้ตั้งค่าเป็นที่อยู่ของผู้ฟังสัญญาณที่ต้องการแชร์

  4. รีสตาร์ทเซิร์ฟเวอร์แล้วรัน /voicechat test <PLAYERNAME> เพื่อทดสอบผู้เล่นที่เชื่อมต่ออยู่

หากผู้ฟัง RakNet ใช้พอร์ตที่แตกต่างจาก Minecraft ให้ตั้งค่า port ให้เป็นพอร์ต UDP ของระบบนั้นโดยตรง แทนที่จะใช้ -1 ตัวอย่างเช่น ผู้ฟัง RakNet ที่ใช้พอร์ต UDP ภายใน 25570 จะต้องตั้งค่าเป็น port=25570

ตั้งค่า voice_host เมื่อลูกค้าต้องการที่อยู่สาธารณะหรือพอร์ตที่แตกต่างกัน สำหรับเราเตอร์ที่ส่ง UDP สาธารณะ 25580 ไปยัง UDP ท้องถิ่น 25570 ให้ใช้ port=25570 และ voice_host=play.example.com:25580 ที่อยู่สาธารณะจะอยู่ใน voice_host การตั้งค่า bind_address จะเลือกที่อยู่สำหรับฟังก์ชันรับสัญญาณท้องถิ่น

Raknetify2 ให้บริการซ็อกเก็ต UDP แบบแชร์ผ่าน API ของ Simple Voice Chat Simple Voice Chat ทำหน้าที่จัดการการยืนยันตัวตนและการเข้ารหัสเสียง ผู้เล่นสามารถใช้การแชทเสียงได้ทั้งผ่านการเชื่อมต่อ TCP หรือ RakNet

บริการ UDP และพร็อกซี่อื่นๆ

ให้ตั้งค่าช่องคิวและ Geyser ไว้บนพอร์ต UDP แยกกัน การผสานรวมกับซอตที่ใช้ร่วมกันนี้รองรับเฉพาะ Simple Voice Chat เท่านั้น

การบูรณาการนี้ไม่ได้ใช้ซ็อกเก็ตตัวแทนเสียงบนเวิร์กโฟร์วอลของ Velocity หรือ BungeeCord ให้ปฏิบัติตามคู่มือการตั้งค่า Proxy ของ Simple Voice Chat และกำหนดพอร์ต UDP ให้กับตัวแทนเสียงนั้นเอง ด้วยปลั๊กอินตัวแทนเสียงอย่างเป็นทางการ ให้ตั้งค่า voice_host อย่างเปิดเผยในการตั้งค่าตัวแทนเสียง ปลั๊กอินนั้นจะไม่สนใจการตั้งค่า voice_host ของเซิร์ฟเวอร์เบื้องหลัง

สำหรับการใช้งาน UDP tunnel โดยทั่วไป ให้ตั้งค่า voice_host เป็นชื่อโฮสต์ของเครือข่ายสาธารณะและพอร์ต UDP ที่ใช้ส่งข้อมูลไปยังเซิร์ฟเวอร์นี้

ปิดการแชร์หรือแก้ไขข้อขัดแย้งเกี่ยวกับซ็อกเก็ต

หากบันทึกการทำงานแสดงค่า No RakNet listener matches the voice bind address and port ขึ้นมา ให้ตรวจสอบว่าการเริ่มต้นการทำงานของ RakNet เป็นไปอย่างสำเร็จ และว่าสถานะของพอร์ตสำหรับการรับสายและที่อยู่สำหรับการเชื่อมต่อนั้นสอดคล้องกับที่อยู่ของผู้รับสายในเครือข่ายของคุณ

หากเครื่องบอกว่ามีข้อมูล Multiple RakNet listeners match the voice bind address ให้เลือกที่อยู่ภายใน bind_address ที่ตรงกับข้อมูลนั้น แล้วเริ่มต้นใหม่.

มีเพียงปลั๊กอิน Simple Voice Chat เท่านั้นที่สามารถให้บริการช่องสัญญาณ UDP ได้ หากระบบเริ่มต้นรายงานว่ามีปลั๊กอินอื่นกำลังให้บริการช่องสัญญาณอยู่ ให้เลือกว่าจะใช้ช่องสัญญาณของปลั๊กอินใด

เพื่อปิดการบูรณาการของ Raknetify2 ให้ตั้งค่า {"enabled": false} ในการตั้งค่าดนตรี หรือลบไฟล์นั้นออก ให้ตั้งค่า UDP ให้กับ Simple Voice Chat แยกต่างหาก ปรับปรุงกฎระเบียบการป้องกันระบบไฟร์วอลล์ หรือกฎการส่งข้อมูลใหม่ แล้วรีสตาร์ทเซิร์ฟเวอร์

การแก้ไขปัญหา

TCP ทำงานได้ แต่ RakNet จะล่ม

ตรวจสอบสิ่งเหล่านี้ตามลำดับ:

  1. ไคลเอนต์มีโมดูล Raknetify2 ที่เหมาะสมสำหรับเวอร์ชันโหลดและ Minecraft ของตนเอง
  2. เซิร์ฟเวอร์หรือพร็อกซี่ที่รับการเชื่อมต่อมีการติดตั้ง Raknetify2 และเริ่มทำงานโดยไม่มีข้อผิดพลาดเกี่ยวกับ listener.
  3. ที่อยู่เริ่มต้นด้วย raknet; และใช้พอร์ต UDP สาธารณะ
  4. ผู้ให้บริการโฮสติ้ง เราเตอร์ และไฟร์วอลล์ของโฮสต์ ทั้งหมดอนุญาตให้ใช้ UDP ผ่านพอร์ตนั้นได้
  5. ที่อยู่ IPv4 และ IPv6 ของชื่อโฮสต์นั้นนำไปสู่โฮสต์ที่ต้องการ และมีกฎการป้องกันไฟร์วอลล์ที่ทำงานได้

การเชื่อมต่อ TCP ที่สำเร็จจะยืนยันเพียงเส้นทาง TCP เท่านั้น ให้ปฏิบัติตาม การกำหนดค่า Firewall และเราเตอร์ เพื่อตรวจสอบการส่งต่อ UDP และการเข้าถึง IPv6 หากใช้โปรโตคอล PROXY ผู้ใช้จะต้องเข้าถึงผู้ฟังผ่านพร็อกซี่ที่ได้รับการยืนยันแล้ว

ที่อยู่กำลังถูกใช้งานอยู่

ตรวจสอบว่ามีกระบวนการอื่นกำลังใช้งานพอร์ต UDP หรือไม่ บริการ Geyser และบริการ UDP อื่นๆ ต้องใช้งานพอร์ตแยกต่างหาก Simple Voice Chat สามารถใช้งาน การบูรณาการพอร์ตร่วมกัน ได้

คุณสามารถเลือกพอร์ต UDP ท้องถิ่นอื่นได้โดยใช้ การตั้งค่าติดตามเซิร์ฟเวอร์โดยตรง หรือ การตั้งค่า Velocity และ BungeeCord ตรวจสอบข้อกำหนดเกี่ยวกับเวอร์ชันสำหรับการตั้งค่า Spigot/Paper การเปลี่ยนแค่พอร์ตสาธารณะของเราเตอร์จะทำให้เกิดความขัดแย้งกับซ็อกเก็ตท้องถิ่นอยู่ดี

การเข้าร่วมทำงานได้ แต่การโอนข้อมูลไม่สำเร็จ

เชื่อมต่อโดยตรงกับเป้าหมายโดยใช้ที่อยู่ raknet; ของมัน หากไม่สำเร็จ ให้แก้ไขตัวรับฟังก์ชันของเป้าหมายหรือเส้นทางเครือข่ายก่อน

หากการเชื่อมต่อโดยตรงทำงานได้ ให้ตรวจสอบว่าหน่วยงานปลายทางยอมรับการโอนข้อมูลเข้ามาหรือไม่ เซิร์ฟเวอร์ Minecraft ที่ใช้ server.properties จะต้องมีค่า accepts-transfers=true การเข้าร่วมโดยตรงจะไม่ทดสอบการตั้งค่านี้

จากนั้นเปรียบเทียบชื่อโฮสต์การส่งและพอร์ต TCP กับไฟล์ config/raknetify2-transfers.json บนเซิร์ฟเวอร์ผู้ส่ง ตรวจสอบว่าไฟล์ได้รับการโหลดหลังจากการเริ่มต้นใหม่แล้ว และว่าไคลเอนต์รองรับการส่งข้อมูลผ่าน RakNet แบบอัตโนมัติ ดู การส่งข้อมูลแบบอัตโนมัติ

ข้อผิดพลาดในการเข้ารหัสหรือโปรโตคอล

ตรวจสอบเวอร์ชันของ Raknetify2 ทั้งสองฝั่งของการเชื่อมต่อ ควรอัปเดตทั้งไคลเอนต์ เซิร์ฟเวอร์ หรือพร็อกซี่พร้อมกันเมื่อมีการเปลี่ยนแปลงโปรโตคอลการเข้ารหัส ควรรักษา setting การยืนยันตัวตนของเซิร์ฟเวอร์ไว้ขณะดำเนินการตรวจสอบ

ความล้มเหลวที่เกี่ยวข้องกับโมด์เฉพาะ

จดบันทึกว่าการกระทำใดที่ทำให้เกิดความล้มเหลว เช่น การเปิดคลังไอเทม การรับแพ็คเกจทรัพยากร การเปลี่ยนโลก หรือการสร้างอ็อบเจกต์ เปรียบเทียบการกระทำเดียวกันระหว่าง TCP และ RakNet โดยใช้โปรแกรมทดสอบแยกต่างหากเมื่อเป็นไปได้

บาง payload แบบกำหนดเองนั้นขึ้นอยู่กับลำดับของแพ็กเก็ตแบบดั้งเดิม ผู้สร้าง mod สามารถระบุความสัมพันธ์เหล่านี้ได้ผ่าน อินเทอร์เฟซการจัดลำดับแพ็กเก็ต

รายงานข้อผิดพลาด

เปิดปัญหาใน Raknetify2 issue tracker และระบุรายละเอียดดังนี้:

  • เวอร์ชัน Minecraft, Java, loader และ Raknetify2 ทั้งสองฝั่ง
  • เวอร์ชันของซอฟต์แวร์เซิร์ฟเวอร์และพร็อกซี่ รวมถึงพร็อกซี่สำหรับการส่งต่อ UDP ด้วย
  • มอดอื่นๆ ที่ติดตั้งไว้และเวอร์ชันของมัน
  • ขั้นตอนการทดลองเพื่อพบปัญหาและสิ่งที่คุณคาดหวังว่าจะเกิดขึ้น
  • ขั้นตอนเดียวกันนี้ใช้ได้กับ TCP หรือไม่.
  • ข้อความบางส่วนจากบันทึกการทำงานของไคลเอนต์ เซิร์ฟเวอร์ และพร็อกซี่ที่เกี่ยวข้องจากการทดลองเดียวกัน

โปรดลบรหัสเข้าถึง รหัสผ่าน และข้อมูลส่วนตัวอื่นๆ ออกก่อนอัปโหลดบันทึกก่อน ควรเก็บข้อความข้อยกเว้นและเส้นทางการทำงานที่จำเป็นสำหรับการวินิจฉัยปัญหาไว้ด้วย

การผสานรวมกับโมด

Raknetify2 ช่วยให้โมดด์สามารถกำหนดได้ว่าการสื่อสารใน Minecraft ควรอยู่ในลำดับที่ถูกต้องด้วย payload ตามที่พวกเขาต้องการ ใช้ฟีเจอร์นี้เมื่อการจัดการ payload ต้องอาศัยเอนทิตี้ บล็อก ชุดสินค้า หรือสถานะอื่นๆ ที่เกิดขึ้นจากแพ็กเก็ตก่อนหน้า

การจัดเรียงกลุ่ม

การจัดกลุ่ม การสื่อสารที่เกี่ยวข้อง
ui เมนูและการโต้ตอบที่ไม่ขึ้นอยู่กับโลก
entity การเริ่มต้น การลบ และการเคลื่อนที่ของเอ็นทิค
world_interaction สินค้าคงคลังและปฏิสัมพันธ์อื่นๆ ที่ขึ้นอยู่กับโลก
effects เสียงและอนุภาค
chunk การอัปเดตเกี่ยวกับพื้นผิว วัตถุ และแสงสว่าง

ทุกกลุ่มจะยังคงมีการส่งข้อมูลที่มีลำดับที่แน่นอนภายในช่องทางของตนเอง ส่วนแพ็กเก็ตที่อยู่ในกลุ่มต่างๆ อาจมาถึงในลำดับที่แตกต่างกัน ควรเลือกลุ่มที่ตรงกับความต้องการของข้อมูลที่จะส่ง

การเชื่อมต่อกับ Fabric (ไม่บังคับ)

เพิ่มผู้ให้บริการไว้ใต้ช่อง raknetify:packet_channels ในไฟล์ fabric.mod.json ของโมดูลของคุณ ผู้ให้บริการนี้จะทำงานในรูปแบบ Consumer<BiConsumer<String, String>> โดยใช้ชนิดข้อมูลของ JDK ผู้ให้บริการจะรับข้อมูลจากผู้จดทะเบียนที่ยอมรับตัวระบุข้อมูลแบบกำหนดเองและกลุ่มการจัดลำดับข้อมูล

นำข้อมูลนี้มาผสานเข้ากับข้อมูลเมตาดาต้าเดิมของคุณ โดยแทนชื่อคลาสด้วยชื่อเต็มของผู้ให้บริการของคุณ

{
  "entrypoints": {
    "raknetify:packet_channels": [
      "com.example.mod.OrderingProvider"
    ]
  }
}

เก็บเนื้อหาของไฟล์ fabric.mod.json ไว้ รวมถึงช่องทางการเข้าถึงที่มีอยู่เดิม นี่คือส่วนหนึ่งของไฟล์ข้อมูลเมตาดาต้า

ตัวอย่างเช่น การขยายการเคลื่อนไหวของอ็อบเจกต์สามารถลงทะเบียน example:entity_path ไว้กับกลุ่ม entity ได้ เอกสารประกอบ API ด้านการจัดลำดับแพ็กเก็ต จะมีรายละเอียดเกี่ยวกับการใช้งานของผู้ให้บริการไว้ด้วย

เมื่อ Raknetify2 ไม่มีอยู่ ระบบ Fabric จะไม่เรียกใช้จุดเข้าสู่ระบบนี้ ผู้ให้บริการควรประกาศตัวระบุและกลุ่มต่างๆ ระหว่างการเริ่มต้นการทำงาน โดยไม่ต้องพึ่งพา mod อื่นที่ได้เริ่มต้นการทำงานแล้ว

พฤติกรรมการลงทะเบียน

สำหรับมอดของ Forge และ NeoForge รวมถึงปลั๊กอินเซิร์ฟเวอร์หรือพร็อกซี่ สามารถเรียกใช้ PacketOrdering.register(identifier, group) ได้ในช่วงการเริ่มต้นทำงานเมื่อ Raknetify2 ทำงานอยู่ คลาสที่ใช้คือ com.ishland.raknetify.api.PacketOrdering ควรจดทะเบียนก่อนที่จะรับการเชื่อมต่อของผู้เล่น และควรหลีกเลี่ยงการโหลดคลาสของ Raknetify2 หากไม่มีการใช้งาน

การประกาศต่างๆ ใช้กับการเชื่อมต่อใหม่เท่านั้น ส่วนการเชื่อมต่อที่มีอยู่เดิมจะยังคงปฏิบัติตามกฎเกณฑ์ที่ได้รับตั้งแต่เริ่มต้น การประกาศที่เหมือนกันซ้ำกันนั้นสามารถทำได้ หากมีการใช้กลุ่มที่ขัดแย้งกันสำหรับตัวระบุเดียวกัน จะถูกปฏิเสธ

ตัวระบุของ Payload ต้องใช้ชื่อพื้นที่ที่ถูกต้อง ชื่อพื้นที่ minecraft ถูกจัดสรรไว้แล้ว จำนวนการประกาศต่อ endpoint สูงสุดคือ 128 ครั้ง รวมถึงกฎเกณฑ์ที่มีอยู่เดิมและการลงทะเบียนจากโมดอื่นๆ ตัวระบุสามารถมีข้อความได้สูงสุด 255 ตัวอักษร โดยใช้รูปแบบการเขียนตัวระบุของ API

ในระหว่างการตั้งค่าระบบการเชื่อมต่อ RakNet ผู้ใช้จะแลกเปลี่ยนข้อมูลการประกาศระหว่างกัน เซิร์ฟเวอร์หรือพร็อกซี่สามารถใช้ข้อมูลการประกาศของผู้ใช้ได้ หากไม่มีกฎท้องถิ่นสำหรับข้อมูลนั้น กฎท้องถิ่นจะมีผลบังคับใช้ก่อน และข้อมูลการประกาศของผู้ใช้จะมีขอบเขตจำกัดอยู่แค่การเชื่อมต่อนั้นเท่านั้น

พร็อกซี่ UDP

ดู UDP forwarding และ PROXY protocol สำหรับข้อมูลเกี่ยวกับ UDP relay และที่อยู่ของ client ที่ถูกส่งต่อ

สำหรับการตั้งค่า Proxy ใน Minecraft โปรดดูที่ Velocity และ BungeeCord

English (US)

Clone this wiki locally