endpoint_add_tcp และ endpoint_add_udp FiveM คืออะไร? ตั้ง IP และ Port อย่างไรให้ถูกต้อง
endpoint_add_tcp และ endpoint_add_udp คือคำสั่งสำคัญใน server.cfg ของ FiveM ที่ใช้กำหนด Network Endpoint ซึ่ง FXServer จะ Listen เพื่อรับการเชื่อมต่อ
Configuration มาตรฐานที่พบในตัวอย่างทางการของ Cfx.re คือ
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ความหมายแบบง่ายคือ
TCP → Listen ที่ Port 30120
UDP → Listen ที่ Port 30120
ส่วน 0.0.0.0 หมายถึงการ Bind บน IPv4 Interfaces ที่เหมาะสมของเครื่อง โดย Server ทั่วไปไม่จำเป็นต้องเปลี่ยนเป็น Public IP
① endpoint_add_tcp คืออะไร
endpoint_add_tcp เป็น Server Command สำหรับสร้างและ Bind TCP Endpoint
ตัวอย่าง
endpoint_add_tcp "0.0.0.0:30120"
FXServer จะสร้าง TCP Server Instance และพยายาม Bind กับ Address และ Port ที่กำหนด
② endpoint_add_udp คืออะไร
endpoint_add_udp ใช้สร้าง UDP Host Instance
ตัวอย่าง
endpoint_add_udp "0.0.0.0:30120"
Address และ Port ต้องถูกต้องและยังไม่ถูกใช้งานในลักษณะที่ทำให้ Bind ไม่สำเร็จ
③ ทำไม FiveM ต้องมีทั้ง TCP และ UDP
FiveM Networking ไม่ได้ใช้ Protocol เดียวทั้งหมด
ในระดับโครงสร้างมีทั้ง
HTTP/TCP
Raw TCP
UDP
ดังนั้น Default Configuration จึงประกาศทั้ง TCP และ UDP Endpoint
④ Configuration มาตรฐานคืออะไร
สำหรับ Server ทั่วไป
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
เป็นจุดเริ่มต้นที่เหมาะสม
โดยเฉพาะ Server ที่ไม่ได้มี Reverse Proxy หรือ Network Architecture ซับซ้อน
⑤ 30120 คืออะไร
30120 คือ Game Port ที่ใช้ในตัวอย่าง FiveM Server มาตรฐาน
จึงมักเห็น Address
SERVER_IP:30120
เมื่อผู้เล่นใช้ Direct Connect
⑥ 30120 เปลี่ยนได้ไหม
ได้
เช่น
endpoint_add_tcp "0.0.0.0:30121"
endpoint_add_udp "0.0.0.0:30121"
จากนั้นต้องแก้ Firewall, Port Forwarding และ Address ที่ใช้เชื่อมต่อให้ตรงกัน
⑦ 0.0.0.0 คืออะไร
0.0.0.0 ในบริบทของ Server Binding หมายถึงการ Listen บน IPv4 Interfaces ที่เหมาะสมของเครื่อง
ตัวอย่าง
endpoint_add_tcp "0.0.0.0:30120"
ไม่ได้หมายความว่า IP ของ Server คือ 0.0.0.0
⑧ ผู้เล่นใช้ 0.0.0.0 เข้า Server ได้ไหม
ไม่ควรใช้
Player ต้องใช้ Address ที่เข้าถึง Server ได้จริง เช่น
127.0.0.1
192.168.1.100
Public IP
Domain
Cfx Join Address
ตามตำแหน่งของ Client
⑨ ตัวอย่างเข้า Server เครื่องเดียวกัน
ถ้า FiveM Client กับ FXServer อยู่เครื่องเดียวกัน
connect 127.0.0.1:30120
127.0.0.1 คือ Loopback Address ของเครื่องนั้น
⑩ ตัวอย่างเข้า Server ผ่าน LAN
สมมุติเครื่อง FXServer มี Local IP
192.168.1.100
เครื่องอื่นใน LAN ใช้
connect 192.168.1.100:30120
ไม่ต้องเปลี่ยน endpoint_add_tcp เป็น 192.168.1.100 เพียงเพื่อให้ LAN เข้าได้ใน Setup ปกติ
⑪ ต้องเปลี่ยน 0.0.0.0 เป็น Local IP ไหม
โดยทั่วไป ไม่ต้อง
คู่มือ Vanilla ของ Cfx.re ระบุว่า
ให้เปลี่ยน IP เฉพาะกรณี Server มีหลาย Network Interfaces
สำหรับ Server ทั่วไปให้เปลี่ยนเฉพาะ Port หากจำเป็น
⑫ ทำไม 0.0.0.0 ถึงสะดวก
เพราะ Server ไม่ต้องผูก Service ไว้กับ IPv4 Address ตัวเดียว
เช่นเครื่องอาจมี
LAN Interface
VPN Interface
Public Interface
แต่การเลือก Interface เฉพาะควรทำเมื่อเข้าใจ Network Architecture แล้ว
⑬ เมื่อไรควรระบุ IP เฉพาะ
เช่น Server มีหลาย NIC
NIC 1 → Public
NIC 2 → Private
และต้องการให้ FXServer Listen เฉพาะ Interface หนึ่ง
จึงอาจกำหนด Address เฉพาะตาม Network Design
⑭ ตัวอย่าง Bind IP เฉพาะ
สมมุติเครื่องมี IP ที่ Interface จริงคือ
10.10.0.10
Configuration อาจเป็น
endpoint_add_tcp "10.10.0.10:30120"
endpoint_add_udp "10.10.0.10:30120"
แต่ต้องแน่ใจว่า IP นี้มีอยู่บน Interface ของเครื่องจริง
⑮ เอา Public IP มาใส่ได้เสมอไหม
ไม่ได้
ถ้า Server อยู่หลัง NAT Public IP อาจอยู่บน Router ไม่ได้อยู่บน Network Interface ของ FXServer
เช่น
Router Public IP
203.0.113.10
Server Local IP
192.168.1.100
ในกรณีนี้การพยายาม Bind FXServer โดยตรงกับ 203.0.113.10 อาจผิด Architecture
⑯ Server หลัง Router ควรทำอย่างไร
มักใช้
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
แล้ว Router ทำ
Public TCP 30120
→ 192.168.1.100:30120
Public UDP 30120
→ 192.168.1.100:30120
นี่คือหน้าที่ของ NAT/Port Forwarding
⑰ Endpoint กับ Port Forwarding เหมือนกันไหม
ไม่เหมือนกัน
endpoint_add_*
→ บอก FXServer ว่าจะ Listen ที่ไหน
Port Forwarding
→ บอก Router ว่าจะส่ง Incoming Traffic ไปเครื่องไหน
ทั้งสองต้องสัมพันธ์กัน
⑱ Endpoint กับ Firewall เหมือนกันไหม
ไม่เหมือนกันเช่นกัน
FXServer อาจ Listen ที่
30120
แต่ Firewall ยัง Block อยู่ได้
Flow คือ
Internet
↓
Firewall
↓
FXServer Endpoint
⑲ เปิด Endpoint แล้ว Firewall เปิดเองไหม
ไม่
คำสั่ง
endpoint_add_tcp "0.0.0.0:30120"
ไม่สร้าง Windows Firewall Rule หรือ Cloud Firewall Rule ให้อัตโนมัติ
ต้องจัดการ Firewall แยก
⑳ Default Firewall ควรอนุญาตอะไร
ถ้าใช้ Default Endpoints
TCP 30120
UDP 30120
ควรได้รับอนุญาตใน Network Layer ที่เกี่ยวข้อง
㉑ ถ้าเปลี่ยน Port เป็น 30200
Config
endpoint_add_tcp "0.0.0.0:30200"
endpoint_add_udp "0.0.0.0:30200"
Firewall ก็ต้องเป็น
TCP 30200
UDP 30200
และผู้เล่นใช้
connect SERVER_IP:30200
㉒ endpoint_add_tcp กับ endpoint_add_udp ต้อง Port เดียวกันไหม
สำหรับ Server ทั่วไปควรใช้ Port เดียวกันเพื่อให้ง่ายต่อการดูแล
เช่น
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
แต่ Advanced Proxy Architecture สามารถแยก TCP กับ UDP ได้ในบางกรณี
㉓ FiveM รองรับ TCP Port คนละตัวกับ UDP หรือไม่
มี Configuration ขั้นสูงที่ทำได้
ตัวอย่างในคู่มือ Local TLS Proxy ของ Cfx.re ใช้
endpoint_add_udp "0.0.0.0:30120"
endpoint_add_tcp "0.0.0.0:30121"
โดย TCP ถูกส่งผ่าน Proxy
แต่ Server ปกติไม่จำเป็นต้องทำแบบนี้
㉔ ทำไมคู่มือ Proxy ให้ UDP มาก่อน TCP
ใน Local TLS Proxy Example ปัจจุบัน Cfx.re ระบุให้กำหนด
endpoint_add_udp "0.0.0.0:30120"
endpoint_add_tcp "0.0.0.0:30121"
ตามลำดับนี้ มิฉะนั้น TCP Port Change ในตัวอย่างดังกล่าวอาจทำงานไม่ถูกต้อง
นี่เป็นข้อกำหนดของ Setup ขั้นสูงนั้น ไม่ใช่เหตุผลให้ Server ทั่วไปเปลี่ยน Config
㉕ netPort คืออะไร
Cfx.re มี Variable
netPort
สำหรับ Primary Port ที่ถูกใช้ในระบบภายใน เช่น Nucleus และ Heartbeat
ถ้ายังไม่ได้กำหนด Primary Port ค่า Port จาก endpoint_add_tcp สามารถถูกใช้เป็น Primary Port ได้
Server ทั่วไปแทบไม่จำเป็นต้องแก้ netPort โดยตรง
㉖ sv_endpoints คืออะไร
มี Variable
sv_endpoints
สำหรับกำหนดรายการ IP Address ที่ Client สามารถใช้ Connect ผ่าน UDP
ถ้าว่าง ระบบสามารถใช้ Public IP ที่ตรวจพบโดยอัตโนมัติ
มักเกี่ยวข้องกับ Proxy หรือ Network Setup ขั้นสูง
㉗ Server ปกติต้องตั้ง sv_endpoints ไหม
ไม่จำเป็นโดยทั่วไป
ถ้า Server ใช้ Public Network ปกติและ Auto-detection ทำงานได้ ไม่ควรเพิ่ม Complexity โดยไม่มีเหตุผล
sv_endpoints มีประโยชน์มากกว่าใน Proxy/Multi-IP Architecture
㉘ Multiple IP Server ใช้ทำอะไรได้บ้าง
เครื่อง Dedicated บางเครื่องอาจมีหลาย IP
ตัวอย่าง
203.0.113.10
203.0.113.11
203.0.113.12
อาจใช้แยก Services หรือ Server Instances ตาม Network Design
แต่ต้องจัดทั้ง
Binding
Routing
Firewall
Public Endpoint
ให้ถูกต้อง
㉙ เปิด Server สองตัวใช้ 30120 เหมือนกันได้ไหม
หากทั้งสองพยายาม Bind Address/Protocol เดียวกันบนเครื่องเดียวกัน จะเกิด Conflict ได้
เช่น
Server A
0.0.0.0:30120
Server B
0.0.0.0:30120
ไม่ควรใช้แบบนี้
㉚ วิธีตั้ง Server สองตัว
Server A
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
Server B
endpoint_add_tcp "0.0.0.0:30121"
endpoint_add_udp "0.0.0.0:30121"
ทำให้แต่ละ Instance มี Game Port ของตัวเอง
㉛ Port ถูกใช้งานอยู่เกิดอะไรขึ้น
Cfx.re ระบุว่า Endpoint Address/Port ต้อง
valid
และ
not already in use
จึงจะ Bind สำเร็จ
ถ้า Port ถูก Process อื่นครอบครอง FXServer อาจเปิด Endpoint ไม่ได้
㉜ วิธีตรวจ Port บน Windows
ใช้
netstat -ano | findstr :30120
ดูว่ามี Process ใดใช้ Port อยู่
ถ้ามี PID สามารถตรวจต่อว่าเป็น Process อะไร
㉝ วิธีตรวจ Process จาก PID
ตัวอย่าง
tasklist /FI "PID eq 1234"
เปลี่ยน 1234 เป็น PID จริง
ช่วยตรวจว่า
FXServer
Web Server
Proxy
Server Instance อื่น
กำลังใช้ Port
㉞ Linux ตรวจอย่างไร
ใช้
ss -lntup | grep 30120
เพื่อดู TCP/UDP Listeners ที่เกี่ยวข้อง
㉟ Address already in use แก้อย่างไร
มีสองทางหลัก
หยุด Process ที่ไม่ควรใช้ Port
หรือ
เปลี่ยน FXServer ไป Port ใหม่
อย่า Kill Process แบบสุ่มโดยไม่รู้ว่าเป็น Service อะไร
㊱ เปลี่ยน Port ต้อง Restart Server ไหม
ต้อง Restart FXServer
เพราะ Endpoint ถูกสร้างและ Bind ระหว่าง Startup
เพียง Restart Resource ไม่ได้เปลี่ยน Game Listening Endpoint
㊲ วิธีตรวจหลัง Restart
ตรวจตามลำดับ
Live Console
↓
Port Listener
↓
info.json
↓
Direct Connect
ถ้ามี Bind Error ให้หยุดแก้ Network ภายนอกก่อน
㊳ วิธีทดสอบ info.json
ถ้า Port เป็น 30120
http://127.0.0.1:30120/info.json
ถ้าเปลี่ยนเป็น 30121
http://127.0.0.1:30121/info.json
ใช้ตรวจ Connect Endpoint ในเครื่องก่อน
㊴ Localhost ผ่านแล้วทำอะไรต่อ
ทดสอบ Local IP เช่น
http://192.168.1.100:30120/info.json
จากนั้นทดสอบ Public Address จาก Network ภายนอก
㊵ Direct Connect ทดสอบอย่างไร
เปิด FiveM กด
F8
แล้วพิมพ์
connect SERVER_IP:30120
ถ้าเปลี่ยน Port ต้องใช้ Port ใหม่
㊶ Endpoint ทำงานแต่ Server List ไม่ขึ้นได้ไหม
ได้
Network Endpoint เป็นเพียงส่วนหนึ่ง
Server List ยังเกี่ยวกับ
Firewall
NAT
Cfx Connectivity
sv_lan
Server Information
Artifact
ดังนั้น Direct Connect เป็น Test ที่มีประโยชน์มาก
㊷ endpoint_add_tcp หายจะเกิดอะไร
หาก TCP Endpoint ที่ Server Configuration ต้องใช้ไม่ได้ถูกสร้าง อาจกระทบ Connect Endpoint และ TCP Connectivity
Default Server จึงควรมีทั้ง TCP และ UDP
㊸ endpoint_add_udp หายจะเกิดอะไร
ถ้าไม่มี UDP Endpoint ที่ถูกต้อง Game Networking จะไม่ตรงกับ Default Architecture ของ FiveM
จึงไม่ควรลบออกเพียงเพราะ Browser info.json ยังเปิดได้ผ่าน TCP
㊹ ทำไม info.json ผ่านแต่ Player ยังเข้าไม่ได้
เพราะ
info.json
→ HTTP/TCP Test
แต่ FiveM Connection ยังต้องใช้ Networking ขั้นต่อไป รวมถึง UDP
ดังนั้น Browser Test ผ่านไม่ได้แปลว่า UDP Endpoint ผ่าน
㊺ Reverse Proxy ใช้ HTTP Proxy อย่างเดียวพอไหม
ไม่เสมอไป
ถ้าต้องการ Proxy Raw FiveM Server Endpoint ต้องพิจารณาทั้ง
TCP
UDP
คู่มือ Cfx.re มีตัวอย่าง Nginx stream สำหรับ Proxy Raw TCP/UDP โดยเฉพาะ
㊻ Cloudflare Web Proxy ธรรมดาแทน UDP Endpoint ได้ไหม
ไม่ควรสรุปว่า Proxy เว็บธรรมดาจะทำงานแทน Game Networking ได้
FiveM มี Connect Endpoint และ Raw TCP/UDP Endpoint คนละส่วน
Advanced Proxy Setup ต้องออกแบบตาม Documentation ของ FiveM และความสามารถของ Proxy ที่ใช้จริง
㊼ Security ควร Bind แบบไหน
สำหรับ Server ทั่วไป
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ร่วมกับ Firewall ที่เปิดเฉพาะ Port ที่จำเป็น มักจัดการง่ายกว่า
ไม่ควรคิดว่าการเปลี่ยน Binding Address อย่างเดียวทดแทน Firewall ได้
㊽ Checklist endpoint_add_tcp / udp
ตรวจ
มี endpoint_add_tcp
มี endpoint_add_udp
Address ถูกต้อง
Port ถูกต้อง
Port ไม่ชน
Firewall ตรง Port
Port Forwarding ตรง Port
Cloud Firewall ตรง Port
Direct Connect ใช้ Port ถูก
ไม่มี Config ซ้ำ
Server Restart แล้ว
Console ไม่มี Bind Error
㊾ ตัวอย่าง Config ที่แนะนำสำหรับ Server ปกติ
# Network endpoints
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
# Server information
sv_hostname "My FiveM Server"
sets sv_projectName "My Community"
sets sv_projectDesc "Thai roleplay community."
# OneSync
set onesync on
# Slots
sv_maxclients 48
# Server key
sv_licenseKey "YOUR_SERVER_KEY"
สำหรับ Server ทั่วไปไม่จำเป็นต้องทำ Network Configuration ให้ซับซ้อนกว่านี้จนกว่าจะมี Requirement จริง
㊿ สรุป endpoint_add_tcp และ endpoint_add_udp FiveM คืออะไร
สองคำสั่งนี้ใช้สร้าง Network Endpoints ของ FXServer
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
ความหมายคือ
endpoint_add_tcp
→ สร้างและ Bind TCP Server Endpoint
endpoint_add_udp
→ สร้าง UDP Host Endpoint
ส่วน
0.0.0.0
คือ Binding Address ไม่ใช่ Public IP ที่ผู้เล่นต้องใช้ Connect
และ
30120
คือ Default Game Port ที่ใช้ในตัวอย่าง FiveM Server
สำหรับ Server ทั่วไป comsiam แนะนำให้คงโครงสร้างมาตรฐาน
endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
แล้วเปลี่ยนเฉพาะ Port เมื่อมีเหตุผล เช่นเปิดหลาย Server Instance
ถ้าเปลี่ยนเป็น
30121
ต้องแก้ทั้งหมดให้ตรงกัน
server.cfg
Firewall
Cloud Firewall
Port Forwarding
Direct Connect Address
Monitoring
ไม่ใช่แก้เฉพาะ server.cfg
ส่วนการ Bind IP เฉพาะ, แยก TCP/UDP คนละ Port, sv_endpoints หรือ Reverse Proxy ควรใช้เมื่อมี Network Architecture ที่ต้องการจริง
หลักสำคัญสำหรับผู้ดูแล FiveM Server ของ comsiam คือแยกให้ออกระหว่าง
Endpoint
→ FXServer Listen
Firewall
→ อนุญาตหรือ Block Traffic
Port Forwarding
→ ส่ง Traffic ผ่าน NAT
เมื่อเข้าใจสามส่วนนี้ การแก้ปัญหา FiveM Server เข้าไม่ได้, Port ชน หรือ Server ไม่ขึ้นจาก Network Configuration จะง่ายขึ้นอย่างมาก
Comments
Post a Comment