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, 01:53 PM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

You should now be able to connect to your server from the internet. Have a friend, or someone outside your LAN, confirm that they can connect. I do not see why a 3g card would be an issue as long as your connection is outside the LAN the eqemu server is running on.

If not, it must be ports that are not forwarded properly. Port 9000, and all zone ports (viewable in the database) must be forwarded.

Can you confirm this works?
Reply With Quote
  #8  
Old 05-24-2011, 03:12 PM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

Currently you can not log onto the server outside of the lan.

I have a feeling it has something to do with Vmware's NAT connection, I don't know if there is anyone that has there server running on vmware that has any hints??
Reply With Quote
  #9  
Old 05-24-2011, 08:16 PM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

Ok so I moved my computer to an actual network just to see what would happen. I have the ports 7000-7100 and 9000 forwarded on the router and my Windows server lets people outside of the LAN connect.

Vmware Linux on the other hand...grrr

I have the vmware set to a bridged connection and I made my Ip (Windows) static.

if I do a ipconfig (Windows) I'm told my ip is: 192.168.2.150
if I do a ifconfig (Linux) I'm told my ip is: 192.168.2.5
whats my ip on both gives me: 70.126.158.125

my eqemuconfig:
Code:
<!-- DO NOT EDIT ANY LINES BETWEEN HERE AND THE DATABASE SECTION -->

		 <address>70.126.158.125</address>
		   <localaddress>192.168.2.5</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" />
and so on. I can see the server listed from computers outside of the LAN but they just go back to the login screen after a minute of trying to connect.

Unless im missing what you are trying to get me to do completely, I believe vmware is blocking something...just have no clue how to get it to stop.
Reply With Quote
  #10  
Old 05-24-2011, 09:24 PM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

Your ports on your router are forwarded to 192.168.2.5?

Or are they forwarded to 192.168.2.150?
Reply With Quote
  #11  
Old 05-24-2011, 09:30 PM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

I forwarded them to 150
Reply With Quote
  #12  
Old 05-24-2011, 09:40 PM
orkim
Sarnak
 
Join Date: Sep 2008
Location: -
Posts: 31
Default

Well, that's a problem. Forward them to the linux VM. 192.168.2.5

-orkim
Reply With Quote
  #13  
Old 05-24-2011, 10:39 PM
Sikkun
Sarnak
 
Join Date: Apr 2011
Posts: 30
Default

Haha, it worked!!

=)

Now I assume if I set up the NAT to forward just like I did on the router (when using the air card) it would work on that. But since im about to have real internet getting it to work over an ethernet connection is more important anyway.

Thank you very much for all your help!
Sikkun
Reply With Quote
  #14  
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
  #15  
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
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 03:48 AM.


 

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