Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Linux Servers

Support::Linux Servers Support forum for Linux EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 05-23-2011, 06:22 PM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default Public Server Only Works On Localhost

Hey guys,
So im at a loss here. My windows server runs 100% and my to log in from multiple computers (differnt internet). But my debian linux install will not. I installed debian into a vmware virtual machine and have everything set up. My server shows up on the server selection screen and I can log on using the windows partition of that camputer (one with vmware running linux), but I cannot log on to my server using another computer (a computer which can log on to any other server). It just cycles back to the log in screen after several minutes.

Here is some stuff I can think of that might help find the problem:
eqemu_config.xml

Code:
<?xml version="1.0">
<server>
	<world>
		<!-- Set the shortname to ONE word. The longname is what shows up on server list -->
		<shortname>EQLite</shortname> 
		<longname>EQLite [In Development Non-Playable]</longname>

		<!-- DO NOT EDIT ANY LINES BETWEEN HERE AND THE DATABASE SECTION -->
		<!-- <address>do.not.edit</address> -->
		<!-- <localaddress>do.not.edit</localaddress> -->

		<!-- Loginserver information.  DO NOT EDIT -->
		<loginserver>
			<host>eqemulator.net</host>
			<port>5998</port>
			<account></account>
			<password></password>
		</loginserver>

		<!-- Server status.  Default is unlocked DO NOT EDIT RIGHT NOW -->
		<!--<locked/>-->
		<!-- <unlocked/> -->

		<!-- Sets the ip/port for the tcp connections.  DO NOT EDIT -->
		<tcp ip="localhost" port="9000" telnet="disable"/>

		<!-- Sets the shared key used by zone/launcher to connect to world -->
		<key>somelongrandomstring12345</key>
		
		<!-- Enable and set the port for the HTTP service.  Defaults are shown -->
		<http port="9080" enabled="false" mimefile="mime.types" />
	</world>

	<!-- Chatserver (channels) information.  DO NOT EDIT -->
	<chatserver>
		<host>channels.eqemulator.net</host>
		<port>7778</port>
	</chatserver>

	<!-- Mailserver (in-game mail) information.  DO NOT EDIT -->
	<mailserver>
		<host>channels.eqemulator.net</host>
		<port>7779</port>
	</mailserver>
	
	<zones>
		<!-- The defaultstatus is what status the new toons will have on your server -->
		<defaultstatus>0</defaultstatus>

		<!-- Sets port range for world to use to auto configure zones DO NOT EDIT RIGHT NOW-->
		<ports low="7000" high="7100"/>
	</zones>

	<!-- Set username to root and password is your MySQL password and db to peq -->
	<database>
		<host>localhost</host>
		<port>3306</port>
		<username>root</username>
		<password>password</password>
		<db>peq</db>
	</database>

	<!-- Launcher Configuration DO NOT EDIT-->
	<launcher>
		<!-- <logprefix>logs/zone-</logprefix> -->
		<!-- <logsuffix>.log</logsuffix> -->
		<!-- <exe>zone.exe</exe> -->
		<!-- <timers restart="10000" reterminate="10000"> -->
	</launcher>

	<!-- File locations.  DO NOT EDIT -->
	<files>
		<!-- <spells>spells_us.txt</spells> -->
		<!-- <opcodes>opcodes.conf</opcodes> -->
		<!-- <logsettings>log.ini</logsettings> -->
		<!-- <eqtime>eqtime.cfg</eqtime> -->
	</files>
	<!-- Directory locations.  DO NOT EDIT -->
	<directories>
		<!-- <maps>Maps</maps> -->
		<!-- <quests>quests</quests> -->
		<!-- <plugins>plugins</plugins> -->
	</directories>
</server>
my start/stop persist world

Code:
cat > start << EOD6
#!/bin/bash
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE

# Include our configuration.
#source eqemu.conf

#ulimit -c 99999999

# Start the login server.
if [ \$USE_LOGIN_SERVER ]; then
  ./EQEmuLoginServer 2>&1 > logs/loginserver &
fi

# Remove any shutdown files.
rm -f .zone_shutdown
rm -f .world_shutdown

# Print commands and their arguments as they are executed.
set -x

# Launcher name.
LNAME="zone"
if [ "\$1" = "test" ]; then
  LNAME="test"
fi

# Set our library path.
P=`pwd`
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:\$P"

# Make sure we have a place to log.
mkdir -p logs 2>&1 > /dev/null

# Clear out old logs, if both are stopped.
if [ ! -e .lock-zones -a ! -e .lock-world ] ; then
  for f in logs/eqemu_*.log
  do
    # Keep the commands_zone log.
    if [ "\$f" = "logs/eqemu_commands_zone.log" ]; then
      continue;
    fi
    rm -f \$f
  done
fi

# Boot up world.
if [ ! -e .lock-world ] ; then
  # Create our lock file.
  touch .lock-world
  
  # Determine how to run the world server.
  if [ \$USE_PERSIST_WORLD ]; then
    ./persist_world 2>&1 > logs/world &
  else
    ./world 2>&1 > logs/world &
  fi
  
  # wait for shared memory to load
  sleep 15
fi

# Start up the official launcher.
if [ ! -e .lock-launcher ]; then
  # Create our lock file.
  touch .lock-launcher
  
  # Launch!
  ./eqlaunch \$LNAME 2>&1 > logs/launcher &
fi

# Determine if we should start the chat server.
if [ \$USE_CHAT_SERVER ]; then
  ./chatserver 2>&1 > logs/chatserver &
fi

# Determine if we should start the mail server.
if [ \$USE_MAIL_SERVER ]; then
  ./mailserver 2>&1 > logs/mailserver &
fi
EOD6
Code:
cat > stop << EOD7
#!/bin/bash
# Auto generated by EQEmu Installer v$EQEMU_INSTALLER_VER on $EQEMU_INSTALL_DATE

# Include our configuration.
#source eqemu.conf

# Create our shutdown files.
touch .zone_shutdown
touch .world_shutdown

targets="world eqlaunch zone"

# Login Server Check
if [ \$USE_LOGIN_SERVER ]; then
  targets="\$targets EQEmuLoginServer"
fi

# Chat Server Check
if [ \$USE_CHAT_SERVER ]; then
  targets="\$targets chatserver"
fi

# Mail Server Check
if [ \$USE_MAIL_SERVER ]; then
  targets="\$targets mailserver"
fi

killall \$targets

# Small pause here.
sleep 3

# If world/zone/eqlaunch is stuck we'll 'kill -9' them here.
if ps ax | grep -e 'w[o]rld' -e 'z[o]ne' -e 'eq[l]aunch' > /dev/null; then
  killall -9 world zone eqlaunch
  sleep 2
fi

# Run our IPC cleaning.
./cleanipc

# Remove any lock files.
rm -f .lock-zones .lock-world .lock-login .lock-launcher
EOD7
Code:
cat > persist_world << EOD8
#!/bin/bash

#ulimit -c 99999999

while true
do
  ./world "\$@"
  if [ -r ".world_shutdown" ]; then
    exit 0
  fi

  echo `date` " - World crashed." >> crashlog
  sleep 2
done
EOD8
what sudo ./start looks like
Code:
+ LNAME=zone
+ '[' '' = test ']'
+ P=/home/eqemu/server
+ export LD_LIBRARY_PATH=:/home/eqemu/server
+ LD_LIBRARY_PATH=:/home/eqemu/server
+ mkdir -p logs
+ '[' '!' -e .lock-zones -a '!' -e .lock-world ']'
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_debug_3629.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_debug_3629.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_debug_4050.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_debug_4050.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_debug_world.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_debug_world.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_debug_zone.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_debug_zone.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_quest_zone.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_quest_zone.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_world.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_world.log
+ for f in 'logs/eqemu_*.log'
+ '[' logs/eqemu_zone.log = logs/eqemu_commands_zone.log ']'
+ rm -f logs/eqemu_zone.log
+ '[' '!' -e .lock-world ']'
+ touch .lock-world
+ '[' ']'
+ sleep 15
+ ./world
Any help would be highly appreciated!
Sikkun
Reply With Quote
  #2  
Old 05-23-2011, 08:01 PM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default

How about some log outputs from the login/world/zone - whatever stages you pass through.

Also I saw that the address/localaddress fields are commented out, I am not sure linux will be as friendly as windows when it comes to recognizing the interface to use.
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote
  #3  
Old 05-23-2011, 08:28 PM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

It is almost certainly that you have this:

Quote:
<!-- Sets the ip/port for the tcp connections. DO NOT EDIT -->
<tcp ip="localhost" port="9000" telnet="disable"/>
When you are installing behind a firewall (with a local LAN IP address) you will have to set this to your public IP. Now, you may or may not have a router, but I'm assuming your VM is on a private (192.168.x.x, 172.16.x.x, 10.x.x.x or similar) IP address and will need to have this set.

It would make sense that your windows box could connect to the server on the VM (local address to local address) but the VM wont send the proper (public) IP address back out to the EQ clients until you fix this. If you have a dynamic IP, you'll have to change it each time it updates.

Hope that helps,

-orkim
Reply With Quote
  #4  
Old 05-24-2011, 01:25 AM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

So I tried changing my .xml to (ip I got from sudo ifconfig)

Code:
<tcp ip="192.168.158.128" port="9000" telnet="disable"/>
which gets me log files all the way up to starting the 5 zones.

Code:
---------------------------------------------
6558 [05.24. - 01:20:07] Starting Log: logs/eqemu_debug_world.log
6558 [05.24. - 01:20:07] [COMMON__THREADS] Starting TCPServerLoop with thread ID -1223058576
6558 [05.24. - 01:20:07] [COMMON__THREADS] Starting TCPServerLoop with thread ID -1231451280
6558 [05.24. - 01:20:07] [WORLD__INIT] Loading server configuration..
6558 [05.24. - 01:20:07] [WORLD__INIT] Log settings loaded from log.ini
6558 [05.24. - 01:20:07] [WORLD__INIT] CURRENT_WORLD_VERSION:EQEmulator 0.8.0
6558 [05.24. - 01:20:07] [WORLD__INIT] Added loginserver eqemulator.net:5998
6558 [05.24. - 01:20:07] [WORLD__INIT] Connecting to MySQL...
6558 [05.24. - 01:20:07] [WORLD__INIT] HTTP world service disabled.
6558 [05.24. - 01:20:07] [WORLD__INIT] Loading variables..
6558 [05.24. - 01:20:07] [WORLD__INIT] Loading zones..
6558 [05.24. - 01:20:07] [COMMON__THREADS] Starting DBAsyncLoop with thread ID -1241515152
6558 [05.24. - 01:20:07] [WORLD__INIT] Clearing groups..
6558 [05.24. - 01:20:07] [WORLD__INIT] Clearing raids..
6558 [05.24. - 01:20:07] [WORLD__INIT] Loading items..
6558 [05.24. - 01:20:09] [WORLD__INIT] Loading guilds..
6558 [05.24. - 01:20:09] [GUILDS__ERROR] Found rank 0 for non-existent guild 1, skipping.
6558 [05.24. - 01:20:09] [GUILDS__ERROR] Found rank 1 for non-existent guild 1, skipping.
6558 [05.24. - 01:20:09] [GUILDS__ERROR] Found rank 2 for non-existent guild 1, skipping.
6558 [05.24. - 01:20:09] [WORLD__INIT] Loaded default rule set 'default'
6558 [05.24. - 01:20:09] [WORLD__INIT] Clearing temporary merchant lists..
6558 [05.24. - 01:20:09] [WORLD__INIT] Loading EQ time of day..
6558 [05.24. - 01:20:09] [WORLD__INIT] Loading launcher list..
6558 [05.24. - 01:20:09] [WORLD__INIT] Reboot zone modes ON
6558 [05.24. - 01:20:09] [WORLD__INIT] Deleted 0 stale player corpses from database
6558 [05.24. - 01:20:09] [WORLD__INIT] Deleted 0 stale player backups from database
6558 [05.24. - 01:20:09] [WORLD__INIT] Loading adventures...
6558 [05.24. - 01:20:09] [WORLD__INIT] Purging expired instances
6558 [05.24. - 01:20:09] [WORLD__INIT_ERR] Failed to start zone (TCP) listener on port 9000:
6558 [05.24. - 01:20:09] [WORLD__INIT_ERR]         bind(): <0
6558 [05.24. - 01:20:09] [COMMON__THREADS] Ending TCPServerLoop with thread ID -1231451280
6558 [05.24. - 01:20:09] [COMMON__THREADS] Ending TCPServerLoop with thread ID -1223058576
but now no one can log onto my server. Any ideas on how to get the proper ip to change the config to?
Reply With Quote
  #5  
Old 05-24-2011, 09:21 AM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

That is a private IP address. Anything (172.16.x.x, 192.168.x.x, 169.x.x.x or 10.x.x.x, etc) that is a private address is not going to work if you're trying to connect to it via the internet.

Go get your public address. If you do not know how to get it from your router/modem then use a public site like http://whatismyipaddress.com/ or one of the hundred other ones of your choice.

However, I did hastily read your post and cut/paste the wrong section. Put your entry back to 'localhost' for the <tcp> tag and update these:

Quote:
<address>1.2.3.4</address>
<localaddress>192.168.x.x</localaddress>
The <address> tag will contain your public address. This is passed to the login server and when a user connects successfully, it will tell it to connect to your server at this address (your public internet address). The <localaddress> is what will be used internally and passed to your zone servers. It may seem funky, but its due to the fact that you're server isn't accessible publicly, but through a router/bridge/something else/etc. because of your setup.

More info here: http://www.eqemulator.net/wiki/wikka...tion#addresses

You *will* need to set these. =)

Beyond that, you're talking about ports being forwarded properly, and that you don't have the router/modem, windows firewall, virtualization software itself, or linux firewall in the way. Ports could be blocked anywhere down that chain.

Try that, and get back,

-orkim
Reply With Quote
  #6  
Old 05-24-2011, 11:42 AM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

Hey,

So I'm trying:
Code:
<address>97.143.11.53</address> 
<localaddress>192.168.158.128</localaddress>
which is adress = ip from whatsmyip (in linux box)
and localaddress - sudo ifconfig (in linux box)

changed the other one back to localhost.

Now im back to the orginal problem =( can log on from the local host but not from any other computer.

I also tried this using 0 firewalls on both computers.

I almost want to say the problem is because im using a evdo 3g air card, but seeing that has no problem allowing users to connect on windows it has to be something in the config.

Alo my Vmware only lets me connect to the internet using NAT (to share the ip with my host) not sure if that coule be a problem.

Thanks,
Sikkun
Reply With Quote
  #7  
Old 05-24-2011, 11:09 PM
wolfwalkereci
Discordant
 
Join Date: Dec 2005
Posts: 435
Default

Congrats on getting past that first major hurdle. Good luck with your project.
Reply With Quote
  #8  
Old 05-25-2011, 12:04 AM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

Between my firestarter (linux), kersplersky (windows), and my routers firewall any other tips for keeping my server safe?
Reply With Quote
  #9  
Old 05-25-2011, 11:30 AM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

Congrats.

For security:

- Shut off any services you aren't using.
- Encrypt all traffic that you can (https instead of http, ssh instead of telnet, etc.) and restrict logins/hosts for services.
- Keep up with OS patches.
- Monitor logs.

Basically, everything you've already heard.

-orkim
Reply With Quote
  #10  
Old 05-25-2011, 12:04 PM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default

As long as you only forwarded the particular ports and only the UDP layer, you should be relatively fine. If you are at home chances are you just have a router which works to an extent. If you have a datacenter server chances are you have to manually put in iptables (port restrictions).

Keep in mind that EQEmu uses TCP to handle traffic between login<->world<->zone.

The EverQuest Client and EQEmu use UDP against each other so thats the only protocol that should be open to everyone.
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:02 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3