FiveM info.json คืออะไร? ใช้เช็ก Server Online, Port และ Firewall อย่างไร
info.json คือ HTTP Endpoint ของ FiveM FXServer ที่ใช้ส่งข้อมูลทั่วไปของ Server ในรูปแบบ JSON และเป็นส่วนหนึ่งของกระบวนการที่ FiveM Client ใช้เมื่อเริ่มเชื่อมต่อกับ Server
ถ้า FiveM Server ใช้ Port มาตรฐาน 30120 สามารถทดสอบจาก Browser ได้ในรูปแบบ
http://SERVER_IP:30120/info.json
ตัวอย่างในเครื่องเดียวกัน
http://127.0.0.1:30120/info.json
info.json จึงเป็นเครื่องมือที่มีประโยชน์มากสำหรับตรวจว่า FXServer เปิดอยู่หรือไม่, Connect Endpoint ตอบหรือไม่ และ Network สามารถเข้าถึง Game Port ได้ถึงระดับ HTTP หรือยัง
แนวทางตรวจที่ดีคือ
FXServer
↓
localhost/info.json
↓
LAN/info.json
↓
Public IP/info.json
↓
FiveM Direct Connect
↓
Server List
① FiveM info.json คืออะไร
info.json เป็น Endpoint ที่ FXServer ให้บริการผ่าน HTTP
เมื่อเรียก
GET /info.json
Server จะตอบข้อมูลทั่วไปของ FiveM Server เป็น JSON
ไม่ได้เป็นไฟล์ที่ผู้ดูแลต้องสร้างเองใน Folder Server
② info.json อยู่ตรงไหน
ไม่ได้หมายความว่ามีไฟล์
server-data/info.json
วางอยู่ใน Folder
FXServer เป็นผู้ตอบ Request ของ
/info.json
ผ่าน Connect Endpoint ของ Server
③ เปิด info.json อย่างไร
ถ้า Server ใช้ Port 30120
เปิด Browser แล้วใช้
http://IP:30120/info.json
เปลี่ยน IP เป็น Address ของ Server ที่กำลังทดสอบ
④ ตัวอย่างทดสอบในเครื่องเดียวกัน
ใช้
http://127.0.0.1:30120/info.json
ถ้า FXServer Running และ Endpoint ทำงานตามปกติ Browser ควรได้รับ JSON กลับมา
⑤ 127.0.0.1 คืออะไร
คือ Loopback Address ของเครื่องตัวเอง
ดังนั้น
127.0.0.1:30120
ใช้ตรวจ FXServer ที่อยู่บนเครื่องเดียวกันเท่านั้น
ถ้า FiveM Server อยู่คนละเครื่อง ต้องใช้ IP ของเครื่อง Server
⑥ ตัวอย่างทดสอบผ่าน LAN
สมมุติ FiveM Server มี Local IP
192.168.1.100
จากเครื่องอื่นใน LAN ใช้
http://192.168.1.100:30120/info.json
ถ้าเปิดได้แสดงว่า Connect Endpoint เข้าถึงได้ผ่าน LAN ระดับหนึ่ง
⑦ ตัวอย่างทดสอบจาก Internet
ใช้ Public IP
http://PUBLIC_IP:30120/info.json
ควรทดสอบจาก Network ภายนอกจริง เช่น Mobile Data หรือ Internet คนละวง
⑧ ทำไม info.json ถึงสำคัญ
เพราะช่วยแยกปัญหาออกเป็น Layer
ตัวอย่าง
localhost ใช้ไม่ได้
→ FXServer/Config มีปัญหา
localhost ได้ แต่ LAN ไม่ได้
→ Firewall/Interface มีปัญหา
LAN ได้ แต่ Public ไม่ได้
→ NAT/Firewall/Public Network มีปัญหา
ทำให้ไม่ต้องเดาว่าปัญหาอยู่ตรงไหน
⑨ FiveM Client ใช้ info.json จริงหรือไม่
ใช้
เอกสาร Cfx.re ระบุว่าใน Connection Process หลัง Client Resolve Connect Endpoint แล้ว ขั้นตอนต่อมาคือ Request
GET /info.json
เพื่อรับ General Server Metadata
ดังนั้น Endpoint นี้เป็นส่วนหนึ่งของกระบวนการเชื่อมต่อจริง
⑩ Connection Process เริ่มอย่างไร
แบบย่อคือ
ผู้เล่นกด Join
↓
Resolve Connect Endpoint
↓
GET /info.json
↓
POST /client
↓
รับ Connection Token
↓
รับ Server Endpoints
↓
โหลด Configuration/Files
↓
UDP/ENet Connection
↓
เข้าเกม
จึงเห็นได้ว่า info.json เป็นเพียงหนึ่งขั้นของ Connection ทั้งหมด
⑪ info.json เปิดได้แปลว่าเข้า FiveM ได้แน่นอนหรือไม่
ไม่แน่นอน
มันยืนยันได้เพียงว่า Connect Endpoint สามารถตอบ HTTP Request ที่ทดสอบได้
แต่ FiveM ยังต้องใช้ขั้นตอนต่อ เช่น
/client
Raw TCP
UDP
ENet
Resources
Authentication
ดังนั้นต้องทดสอบ Direct Connect ต่อ
⑫ วิธีทดสอบ Direct Connect หลัง info.json ผ่าน
เปิด FiveM
กด
F8
แล้วพิมพ์
connect SERVER_IP:30120
ถ้าใช้ Port อื่นต้องเปลี่ยนตามจริง
⑬ info.json ไม่เปิด ต้องทำอย่างไร
ตรวจตามลำดับ
FXServer Running?
↓
Port ถูก?
↓
server.cfg ถูกโหลด?
↓
endpoint_add_tcp ถูก?
↓
Firewall?
↓
Network?
อย่าเริ่มจาก Reinstall FiveM ทันที
⑭ ตรวจ Game Endpoint ที่ server.cfg
ค่า Default มักเป็น
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
หากเปลี่ยน Port เป็น 30121
URL ก็ต้องเป็น
http://SERVER_IP:30121/info.json
⑮ ถ้า Port ผิดจะเกิดอะไร
สมมุติ FXServer ใช้
30121
แต่คุณเปิด
http://SERVER_IP:30120/info.json
ก็อาจไม่พบ Server แม้ Server เปิดอยู่จริง
จึงควรตรวจ server.cfg ก่อนเสมอ
⑯ info.json ใช้ TCP หรือ UDP
info.json เป็น HTTP Request จึงเดินผ่าน Connect Endpoint ฝั่ง HTTP/TCP
แต่ FiveM Game Connection ทั้งหมดไม่ได้ใช้ TCP อย่างเดียว
หลังจากนั้นยังมี UDP และ ENet ตาม Connection Process
⑰ เพราะอะไร TCP ผ่านแต่ FiveM ยังเข้าไม่ได้
เป็นไปได้ว่า
HTTP/TCP ผ่าน
แต่ UDP ถูก Block
หรือ
Connect Endpoint ผ่าน
แต่ Raw Server Endpoint มีปัญหา
นี่คือเหตุผลว่าทำไม info.json ไม่ใช่ Test สุดท้าย
⑱ Windows Firewall ต้องตรวจอะไร
ถ้าใช้ Default Game Port ให้ตรวจ
TCP 30120
UDP 30120
ไม่ควรเปิดเฉพาะ TCP เพียงเพราะ Browser เปิด info.json ได้
⑲ Linux Firewall ก็เหมือนกัน
สำหรับ UFW เช่น
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
ถ้า Server ใช้ Port อื่นให้เปลี่ยนตามจริง
⑳ Cloud Firewall มีผลกับ info.json ไหม
มี
ถ้า VPS Provider Block TCP Game Port
Internet
↓
Cloud Firewall BLOCK
↓
FXServer
Public info.json จะเข้าไม่ได้ แม้ Localhost จะทำงาน
㉑ Server บ้านต้องดู Port Forwarding
ถ้า Server อยู่หลัง Router
Internet
↓
Public IP
↓
Router
↓
Port Forward
↓
192.168.1.100:30120
ต้อง Forward Traffic มาถึงเครื่อง FXServer
มิฉะนั้น Public info.json อาจเข้าไม่ได้
㉒ Local info.json ผ่าน แต่ Public ไม่ผ่าน
กรณีนี้เป็นข้อมูล Debug ที่ดีมาก
แสดงว่า FXServer ทำงานภายในได้แล้ว
ให้ตรวจต่อ
OS Firewall
Router
Port Forwarding
Cloud Firewall
Public IP
CGNAT
Double NAT
㉓ CGNAT มีผลหรือไม่
มี
ถ้า Server บ้านอยู่หลัง CGNAT ของ ISP
Traffic จาก Internet อาจไม่สามารถเข้ามาถึง Router ของคุณได้โดยตรง
แม้ Local info.json จะเปิดได้สมบูรณ์
㉔ Double NAT มีผลเช่นกัน
ตัวอย่าง
Internet
↓
ISP Router
↓
Router ส่วนตัว
↓
FiveM Server
ถ้า Forward เพียง Router ชั้นเดียว Public Endpoint อาจยังเข้าไม่ถึง FXServer
㉕ info.json แสดงข้อมูลอะไร
Cfx.re เรียกข้อมูลที่ Endpoint นี้ส่งกลับว่า General Server Metadata
และ Server Information Convars ที่ตั้งด้วย
sets
สามารถปรากฏใน info.json ได้ด้วย
㉖ sets เกี่ยวกับ info.json อย่างไร
ตัวอย่างใน server.cfg
sets Discord "My Community"
Cfx.re ระบุว่า Server Information Convar ที่สร้างด้วย sets จะถูกเปิดเผยใน
Server Connect Details
Server List
info.json
จึงไม่ควรเอา Secret ไปเก็บใน sets
㉗ ตัวอย่าง Server Information Convar
เช่น
sets Discord "discord community"
sets Owner "My Community"
ค่าประเภทนี้ถูกออกแบบให้เป็นข้อมูล Server
ไม่ใช่พื้นที่เก็บ Password
㉘ ห้ามใส่อะไรใน sets
ไม่ควรใส่
Database Password
API Secret
Bot Token
License Secret
Private Key
เพราะค่าของ sets สามารถถูกเปิดเผยผ่าน Server Information รวมถึง info.json
㉙ info.json ถือเป็น Public Endpoint ไหม
ถ้า Game Endpoint เปิดสู่ Internet และไม่มีการจำกัด Request Endpoint นี้ก็สามารถถูกเรียกจากภายนอกได้
ดังนั้นอย่าคิดว่าข้อมูลใน sets เป็น Private
㉚ info.json ต่างจาก players.json อย่างไร
โดยแนวคิด
info.json
→ General Server Metadata
ส่วน
players.json
→ Endpoint ที่เกี่ยวข้องกับข้อมูลผู้เล่น
ทั้งสองเป็นคนละ Endpoint ของ FXServer
㉛ dynamic.json คืออะไร
FXServer ยังมี Endpoint
/dynamic.json
ซึ่งถูกใช้สำหรับข้อมูลสถานะ Server อีกประเภทหนึ่ง
ใน Proxy Setup ทางการ Cfx.re ระบุว่า Setup ที่ถูกต้องควรให้ Endpoint อย่าง
/info.json
/players.json
/dynamic.json
/client
ทำงานตาม Connection Architecture
㉜ ต้องใช้ players.json เพื่อเช็ก Server Online ไหม
ไม่จำเป็น
สำหรับการตรวจพื้นฐาน Cfx.re แนะนำ
/info.json
โดยตรง
เพราะใช้ยืนยันว่า Server ส่งข้อมูลทั่วไปกลับมาได้หรือไม่
㉝ info.json กับ Server List เหมือนกันไหม
ไม่เหมือนกัน
Server List คือบริการที่รวมข้อมูล Server จำนวนมาก
ส่วน info.json คือ Endpoint ของ Server Instance นั้นโดยตรง
จึงเหมาะสำหรับ Debug Server ของตัวเอง
㉞ Server ไม่ขึ้น List แต่ info.json เปิดได้
เป็นไปได้
กรณีนี้แสดงว่า Connect Endpoint เข้าถึงได้อย่างน้อยระดับหนึ่ง
จากนั้นตรวจ
Direct Connect
sv_lan
sv_master1
sv_projectName
sv_projectDesc
Cfx Infrastructure
ต่อ
㉟ Server ไม่ขึ้น List และ info.json Public ไม่เปิด
ให้โฟกัส Network ก่อน
โดยเฉพาะ
Firewall
Port Forwarding
Public IP
CGNAT
Cloud Firewall
ยังไม่ควรโฟกัส Server Listing Configuration เป็นอันดับแรก
㊱ Direct Connect ผ่าน แต่ info.json Browser เปิดไม่ได้ เป็นไปได้ไหม
เป็นไปได้ใน Configuration ด้าน Security บางแบบ
เพราะ FXServer มี Request Filtering Convar ที่สามารถจำกัด Browser Request ไปยัง JSON Endpoints ได้
ดังนั้นต้องดู Security Configuration ของ Server ด้วย
㊲ sv_requestParanoia คืออะไร
FXServer มี Convar
sv_requestParanoia
สำหรับเพิ่มระดับการกรอง HTTP Requests บางประเภท
ค่าเป็น Integer
0–3
โดย Default คือ
0
㊳ sv_requestParanoia ระดับ 2 มีผลอย่างไร
เอกสาร Cfx.re ปัจจุบันระบุว่าเมื่อใช้ Level
2
หรือสูงกว่า Browser-based Requests ที่เกี่ยวข้องกับ JSON Endpoints เช่น
info.json
dynamic.json
players.json
สามารถถูกตอบกลับด้วย
Nope.
แทน JSON ตามปกติ
㊴ ถ้า info.json ขึ้น Nope. แปลว่า Server เสียไหม
ไม่จำเป็น
ให้ตรวจก่อนว่ามี
sv_requestParanoia 2
หรือค่าที่สูงกว่าหรือไม่
อาจเป็นพฤติกรรมจาก Security Configuration ไม่ใช่ FXServer เสีย
㊵ ทำไมเรื่องนี้สำคัญตอน Debug
เพราะถ้าผู้ดูแลเห็น
Nope.
แล้วสรุปว่า Port ปิด อาจแก้ Firewall ผิดจุด
ต้องดูทั้ง
HTTP Response
Server Config
Direct Connect
Console
ประกอบกัน
㊶ info.json ใช้เช็ก Player Count ได้ดีที่สุดไหม
ไม่ควรใช้เป็นข้อสรุปแบบนั้น
info.json เน้น General Metadata
หากต้องการข้อมูล Player หรือ Dynamic Server Status ควรดู Endpoint/ระบบที่ออกแบบไว้สำหรับข้อมูลนั้นโดยเฉพาะ และคำนึงถึง Privacy Configuration ด้วย
㊷ ใช้ info.json ทำ Monitoring ได้ไหม
ใช้เป็น Health Check ระดับ Connect Endpoint ได้
ตัวอย่างแนวคิด
Request /info.json
↓
HTTP ตอบกลับ
↓
Server endpoint ยังตอบ
แต่ไม่ควรใช้เป็น Health Check เพียงตัวเดียว
㊸ ทำไม info.json อย่างเดียวไม่พอสำหรับ Monitoring
เพราะ Server อาจตอบ HTTP ได้ แต่
Database ล่ม
Framework Error
Resource สำคัญไม่ทำงาน
Player Spawn ไม่ได้
UDP มีปัญหา
ก็ยังเกิดขึ้นได้
Monitoring ที่ดีจึงต้องตรวจหลาย Layer
㊹ Health Check ที่ดีกว่าควรมีอะไร
แนวคิดสำหรับ Production
FXServer Process
+
info.json
+
Direct/Game Connectivity
+
Database
+
Resource Health
+
CPU/RAM
+
Logs
จะสะท้อนสภาพ Server จริงมากกว่า Endpoint เดียว
㊺ ใช้ curl เช็ก info.json ได้ไหม
ได้
ตัวอย่าง
curl http://127.0.0.1:30120/info.json
ถ้า Server ใช้ Port 30121
curl http://127.0.0.1:30121/info.json
เหมาะกับ Linux หรือ Automation Script
㊻ PowerShell เช็กได้ไหม
ได้ เช่น
Invoke-RestMethod http://127.0.0.1:30120/info.json
ช่วยดู JSON ในรูป Object ที่อ่านง่ายขึ้น
เหมาะกับ Administrator ที่ต้องตรวจ Server ผ่าน PowerShell
㊼ ถ้าใช้ Reverse Proxy ต้องทำอะไร
Cfx.re ระบุว่า Proxy Setup ที่ถูกต้องควรทำให้ Connect Endpoint สามารถให้ Client เข้าถึง
/info.json
/players.json
/dynamic.json
/client
ตาม Architecture ที่กำหนด
ไม่ใช่ Proxy เพียงหน้าเว็บแล้วจบ
㊽ HTTPS Connect Endpoint ใช้ info.json ไหม
ใช้
ตัวอย่าง Connect Endpoint
https://play.example.com/
Client จะขอ
https://play.example.com/info.json
ในขั้น General Metadata
ดังนั้น Reverse Proxy ต้องส่ง Request นี้ถึง FXServer ได้อย่างถูกต้อง
㊾ Checklist ตรวจ FiveM ด้วย info.json
ใช้ลำดับนี้
FXServer Running
↓
ตรวจ Game Port
↓
127.0.0.1/info.json
↓
Local IP/info.json
↓
Public IP/info.json
↓
ตรวจ Firewall
↓
ตรวจ Port Forwarding
↓
ตรวจ CGNAT/Cloud Firewall
↓
F8 Direct Connect
↓
ตรวจ Server List
ถ้า Browser ได้ Nope. ให้ตรวจ sv_requestParanoia ก่อนสรุปว่า Endpoint เสีย
㊿ สรุป FiveM info.json คืออะไร และใช้เช็ก Server อย่างไร
info.json คือ HTTP Endpoint ของ FXServer สำหรับส่ง General Server Metadata
รูปแบบคือ
http://SERVER_IP:PORT/info.json
ถ้าใช้ค่า Default เช่น
http://127.0.0.1:30120/info.json
Cfx.re ใช้ GET /info.json เป็นหนึ่งในขั้นตอนแรกของ FiveM Client Connection หลัง Resolve Connect Endpoint สำเร็จ
สำหรับผู้ดูแล Server comsiam วิธีใช้ที่มีประโยชน์ที่สุดคือทดสอบตามลำดับ
localhost
↓
LAN
↓
Public Internet
↓
Direct Connect
ถ้า Localhost ไม่ได้ ให้แก้ FXServer/Config ก่อน
ถ้า Localhost ได้แต่ LAN ไม่ได้ ให้ตรวจ OS Firewall
ถ้า LAN ได้แต่ Public ไม่ได้ ให้ตรวจ Router, Port Forwarding, Cloud Firewall, CGNAT หรือ Public IP
ถ้า Public info.json ได้ แต่ FiveM ยังเข้าไม่ได้ ต้องตรวจขั้นตอนถัดไป เช่น UDP, Server Endpoint, Authentication และ Resources
อีกข้อที่สำคัญคือค่าที่ตั้งด้วย
sets
สามารถถูกเปิดเผยใน Server Information และ info.json ได้ จึงไม่ควรใส่ Password, Token หรือ Secret ลงไป
และถ้า Browser แสดง
Nope.
อย่าเพิ่งคิดว่า FiveM Server พัง เพราะ sv_requestParanoia ระดับ 2 ขึ้นไปสามารถตั้งใจ Block Browser Requests ไปยัง info.json, dynamic.json และ players.json ได้
เมื่อใช้ info.json ร่วมกับ Live Console และ
connect SERVER_IP:PORT
ผู้ดูแล FiveM Server ของ comsiam จะสามารถแยกปัญหา FXServer, Firewall, NAT และ Server Listing ออกจากกันได้รวดเร็วกว่าการ Restart หรือ Reinstall Server โดยไม่มีข้อมูล
Comments
Post a Comment