GameServerManagers / LinuxGSM

The command-line tool for quick, simple deployment and management of Linux dedicated game servers.
https://linuxgsm.com
MIT License
4.32k stars 821 forks source link

[Mumble] Issue with multihomed server interfaces #1015

Closed ncronin closed 7 years ago

ncronin commented 8 years ago

I can't seem to figure this out, I've tried many different ports (and ips) and isolating it to it's own user but it doesn't seem to want to start on the specified port. Any help would be greatly appreciated! ♥

Error: [ FAIL ] Starting mumble-server: Unable to start Mumble Port 64738

I am using a single user because I'm a horrible person. There's 1 rust, 11 TF2, 6 CS:GO, and 6 CS:S servers on this machine all running LGSM on their own IP w/ default port.

./server details:

Distro Details
================================================================================
Distro:    Ubuntu 14.04.5 LTS
Arch:      x86_64
Kernel:    3.14.32-xxxx-grs-ipv6-64
Hostname:  intox-game.xns-managed.xerhik.net
tmux:      tmux 2.0
GLIBC:     2.19

Performance
================================================================================
Uptime:    31d, 0h, 3m
Avg Load:  1.68, 1.33, 1.49

Mem:       total   used   free     cached
Physical:  125G    123G   2.3G     114G
Swap:      1.0G    31M    990M

Storage
================================================================================
Filesystem:   /dev/md2
Total:        841G
Used:         252G
Available:    547G
LGSM Total:   79M
Serverfiles:  34M

Mumble Server Details
================================================================================
Server name:  Mumble Port 64738
:64738 IP:    198.27.120.24
Status:       OFFLINE

server Script Details
================================================================================
Service name:      mumble-server
server version:    290716
User:              steam
Email alert:       off
Pushbullet alert:  off
Update on start:   off
Location:          /home/steam/servers/mumble
Config file:       /home/steam/servers/mumble/serverfiles/murmur.ini

Backups
================================================================================
No Backups created

Command-line Parameters
================================================================================
./murmur.x86 -fg -ini /home/steam/servers/mumble/serverfiles/murmur.ini

Ports
================================================================================
Change ports by editing the parameters in:
/home/steam/servers/mumble/serverfiles/murmur.ini

Useful port diagnostic command:
netstat -atunp | grep murmur

DESCRIPTION    DIRECTION  PORT   PROTOCOL
  udpce        INBOUND    64738
  tcpverQuery  INBOUND    64738

Status: OFFLINE
cedarlug commented 8 years ago

Usually when a port doesn't bind, it's due to the port being already in use (which you say isn't the case), or the IP address not being bound to the machine (198.27.120.24 bound to an interface). Have you double-checked the IP address?

If that's not the case, push your murmur.ini to pastbin (strip any credentials), along with the results of ./mumbleserver debug. Additionally, post the output of netstat -atunp | grep murmur and make sure that your IP address is listed in ifconfig -a | grep "inet " | awk '{print $2}'.

ncronin commented 8 years ago

murmur.ini: http://pastebin.com/gvK4bdSQ

Output of netstat:

tcp        0      0 198.27.120.24:64738     0.0.0.0:*               LISTEN      29303/murmur.x86
tcp        0      0 167.114.1.14:54044      149.56.108.239:3306     ESTABLISHED 29303/murmur.x86
udp        0      0 198.27.120.24:64738     0.0.0.0:*                           29303/murmur.x86

IP addresses are definitely listed.

cedarlug commented 8 years ago

Debug output?

ncronin commented 8 years ago

Got this error when running the command:

./server debug
Unknown command: ./server debug
Usage: ./server [option]
Mumble - Linux Game Server Manager - Version 290716
https://gameservermanagers.com/server
cedarlug commented 8 years ago

Is process 29303 a rogue process? If so, kill it with kill -9 290303 and see if mumble would start.

(./mumbleserver debug) Edit: Ah - no debug for mumble. Gotcha

cedarlug commented 8 years ago

Follow-up: Your mumble server is running (I've connected to it). So it may be misreporting by the "details" output as being OFFLINE.

What happens when you kill the murmur process (above), re-examine netstat (seeing NO murmur process), and restart the mumble server. If the details output still shows it as offline then there may be a bug with the process detection in the script.

ncronin commented 8 years ago

That's very odd. It does seem like the script misreporting it. I also would like to add that the script requires you to add ip="" in mumbleserver or else it throws an error. This isn't required though as it's set in murmur.ini

Seems to be working nonetheless so I'll wait for a bugfix and continue on, thanks! :)

UltimateByte commented 8 years ago

Huh, i'll need to gett back into it. Unless you solve it before... I had it working 100% like 2-3 weks ago, but many commits happened since.

cedarlug commented 8 years ago

This appears to be an issue which pops up when there are multiple IP addresses on the server.

There are some options here as to what the correct behavior is.

Thoughts?

jach11 commented 8 years ago

Most users will probably expect IP addressing to be set within the script if they already use lgsm for other servers. I think for the sake of consistency it should be set within the script and just ignore mumble.

UltimateByte commented 8 years ago

Well, it's working OK for me with one interface. I'm worried about warnings about libstdc packages that i need to make go away.

We need to ignore it through check_ip.sh first, then see if it's fixed. Can't really test as i got only one interface and won't bother simulating a virtual interface or something.

So https://github.com/GameServerManagers/LinuxGSM/blob/master/lgsm/functions/check_ip.sh#L11

if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]; then

Can you test it out already ?

cedarlug commented 8 years ago

Yes - that fixes the issue on a multihomed system with the exception of the details output printing out a fixed IP when it's listening on 0.0.0.0.

Pushed to master.

cedarlug commented 8 years ago

@jach11 What you're suggesting is problematic because murmur doesn't accept IP specifications on the command line, only from the ini file. So there's not a good way to pass it from the lgsm script other than to pre-process the ini file (with a quick "sed -i "s/host=.*/host=${ip}/" ${inifile}) before invoking the murmur.x86 binary.

jach11 commented 8 years ago

Ah i see that now, and by the looks of how they already have everything setup they won't ever change that, which kind of sucks.

dgibbs64 commented 8 years ago

@jach11 Yes it can be difficult to keep thinks consistent when all the servers work differently :P. Over all LGSM manages to do that though :)

UltimateByte commented 8 years ago

Alright, i guess it's solved ? Close ? Or we try to improve the details output when no IP is set too ?

cedarlug commented 8 years ago

Closing. Revisit the details output separately.

ncronin commented 8 years ago

Sorry to bump, while the script works and starts the server fine. The error "cannot bind to port {whatever port is set}" still appears.

This is fine but in order to stop or restart the server you need to kill the process.

cedarlug commented 8 years ago

@ncronin - can you give a bit more details? Is this after the "./mumbleserver stop" or "./mumbleserver restart"? Where is the server process not being killed correctly?

UltimateByte commented 8 years ago

Yeah, and where does that error occur ? What log / command ?

UltimateByte commented 8 years ago

Is this still a thing ? @ncronin

dgibbs64 commented 7 years ago

I believe the addition of graceful shutdown to most servers may of resolved this issue.

lock[bot] commented 6 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.