แก้ “FAILED TO BIND TO PORT” บนเซิร์ฟเวอร์ Minecraft
ข้อผิดพลาดนี้หมายความว่าเซิร์ฟเวอร์พยายามเปิดพอร์ตของมันแต่ทำไม่ได้ อาจเป็นเพราะมีโปรแกรมอื่นใช้พอร์ตนั้นอยู่แล้ว หรือที่อยู่ใน server.properties ไม่ใช่ของเครื่องคุณ เซิร์ฟเวอร์จะปิดตัว และแก้ได้เร็วเมื่อรู้ว่าเป็นกรณีไหน
ข้อความบอกอะไร
ล็อกแสดงบรรทัดแบบนี้:
**** FAILED TO BIND TO PORT! The exception was: java.net.BindException: Address already in use Perhaps a server is already running on that port?
“Address already in use” หมายถึงพอร์ตชนกัน “Cannot assign requested address” หมายถึงค่า server-ip ไม่ใช่ที่อยู่ของเครื่องนี้
1. มีเซิร์ฟเวอร์อื่นรันอยู่แล้วหรือไม่
สาเหตุที่พบบ่อยที่สุดคือสำเนาของเซิร์ฟเวอร์ที่ไม่เคยหยุด: หน้าต่างที่ปิดไปแล้ว แครช เซสชัน screen หรือ tmux เบื้องหลัง หรือเซอร์วิสที่สตาร์ตมันใหม่ หาว่าอะไรถือพอร์ตอยู่ บน Linux:
sudo ss -tlnp | grep 25565
บน Windows:
netstat -ano | findstr :25565
คอลัมน์สุดท้ายบน Windows คือ process ID ซึ่งคุณค้นหาได้ใน Task Manager บน Linux ชื่อโพรเซสจะอยู่ในเอาต์พุต ถ้าเป็นเซิร์ฟเวอร์เก่าของคุณ ให้หยุดมันอย่างถูกวิธี ด้วย stop ในคอนโซลของมัน หรือ systemctl stop สำหรับเซอร์วิส แล้วสตาร์ตตัวใหม่ ถ้ามันโผล่กลับมาเรื่อยๆ ให้ตรวจ screen -ls, tmux ls และรายการเซอร์วิสของคุณ
2. ปล่อย server-ip ให้ว่าง
ใน server.properties ปกติ server-ip ควรว่างเปล่า เพื่อให้เซิร์ฟเวอร์ฟังทุกที่อยู่:
server-ip=
ถ้าคุณใส่ IP ที่ไม่ได้อยู่บนอินเทอร์เฟซเครือข่ายใดของเครื่อง เซิร์ฟเวอร์จะล้มเหลวด้วยข้อผิดพลาดนี้ รวมถึง IP สาธารณะที่โฮสต์ของคุณแมปเข้ากับเครื่องโดยไม่ได้กำหนดให้เซิร์ฟเวอร์เอง
3. ให้แต่ละเซิร์ฟเวอร์มีพอร์ตของตัวเอง
เซิร์ฟเวอร์สองตัวบนเครื่องเดียวใช้พอร์ตร่วมกันไม่ได้ เปลี่ยน server-port ใน server.properties ของเซิร์ฟเวอร์ตัวที่สอง เช่นเป็น 25566 ผู้เล่นจะเข้าร่วมด้วย address:25566 หรือคุณจะเพิ่ม SRV record เพื่อให้พวกเขาไม่ต้องใส่พอร์ตก็ได้ ดู วิธีแก้ข้อผิดพลาดการเข้าร่วม
4. ใช้พอร์ตที่สูงกว่า 1024
บน Linux มีเพียง root ที่เปิดพอร์ตต่ำกว่า 1024 ได้ ใช้ 25565 หรือพอร์ตสูงอื่นแทนการรันเซิร์ฟเวอร์เป็น root
5. เกมแพเนลและพร็อกซี
เกมแพเนลให้แต่ละเซิร์ฟเวอร์มีพอร์ตของตัวเอง อย่าแตะ server-port และใช้พอร์ตที่แพเนลกำหนด เพราะแพเนลอาจเขียนทับการแก้ไขของคุณตอนสตาร์ต บนเครือข่าย Velocity หรือ BungeeCord พร็อกซีจะใช้พอร์ตสาธารณะ ซึ่งมักเป็น 25565 และเซิร์ฟเวอร์เกมแต่ละตัวที่อยู่ข้างหลังต้องมีพอร์ตของตัวเอง
6. การรีสตาร์ตที่ล้มเหลวเป็นครั้งคราว
ถ้าการรีสตาร์ตตามกำหนดเวลาบางครั้งล้มเหลวด้วยข้อผิดพลาดนี้ แปลว่าโพรเซสเก่ายังไม่ปล่อยพอร์ต ให้สคริปต์รีสตาร์ตของคุณรอจนโพรเซสเก่าออกไป แล้วหยุดพักไม่กี่วินาทีก่อนสตาร์ตตัวใหม่
ตรวจว่าใช้งานได้
หลังเซิร์ฟเวอร์ขึ้นว่า “Done” ให้ทดสอบพอร์ตจากเครื่องอื่น:
nc -vz your-server-ip 25565
ถ้าผู้เล่นยังเข้าร่วมไม่ได้ ให้ตรวจไฟร์วอลล์ตามที่อธิบายใน คู่มือข้อผิดพลาดการเข้าร่วม
โฮสต์เซิร์ฟเวอร์ Minecraft ของคุณในสิงคโปร์
ปิงต่ำสำหรับผู้เล่นในอินเดีย มาเลเซีย และอินโดนีเซีย บนคอร์ AMD EPYC ที่เร็ว พร้อม NVMe และการป้องกัน DDoS
