Archived

This forum has been archived. Please start a new discussion on GitHub.

Bidirectional Connections problems with glacier

OK, I'm having trouble with clients over the Internet connecting. I'm using bidirectional connections with glacier and session management. Clients in LAN can connect fine though (and everything works like it should). I can have the same clients over the internet connect to me with differnt programs that I know work. I think this is a problem with my configuration file. Here are the details:

I run the server behind a NAT firewall, but i forward all ports (its basically DMZ'd). I think that since Glacier doesn't have the external IP addresses that it might be the big problem because I remember reading that Glacier has to sit between the external and internal networks, which it isn't, directly -- but still has the access to.
My External IP address is: 10.0.0.1
My internal IP address is: 192.168.1.1 (but I have it bind to all addresses, not including the external address 10.0.0.1 -- the physical router forwards request to the internal address)

My configuration file for both the client and server looks like:
GameSessionManager.Endpoints=tcp -p 8221:udp -p 8221
GameSession.Client.GameSessionReceiver=callback:tcp -h 10.0.0.1 -p 8221:udp -h 10.0.0.1 -p 8221
GameSession.Client.Endpoints=tcp -h 10.0.0.1:udp -h 10.0.0.1
GameSession.Client.Callback.Endpoints=tcp: -h 10.0.0.1 -p 8221

#configuration
Ice.Warn.Connections=0
Ice.Trace.Network=0
#Ice.Trace.Protocol=1

#router and starter settings
Glacier.Router.Endpoints=default
Glacier.Router.SessionManager=GameSessionManager:tcp -h 10.0.0.1 -p 8221
Glacier.Router.Client.Endpoints=tcp -h 69.202.70.80:udp -h 10.0.0.1
Glacier.Router.Trace.Client=2
Glacier.Router.Trace.RoutingTable=1

Glacier.Starter.PermissionsVerifier=PermissionsVerifier:tcp -h 10.0.0.180 -p 8221
Glacier.Starter.AddUserToAllowCategories=1
Glacier.Starter.Endpoints=tcp -h 10.0.0.1 -p 11000
Glacier.Starter.PropertiesOverride=Ice.ServerIdleTime=60
Disregard the bad formatting (tabs between some words), it's not like that in the configuration file.

**EDIT: To clarify, GameSessionManager is the server object adapter, and GameSession is the client session and GameSessionReceiver is the client object adapter running under glacier (follows the glacier callback demo) **

The client seems to catch an exception at:
Ice.ConnectFailedException: Connect failed: connection refused
   at IceInternal.ProxyFactory.checkRetryAfterException(LocalException ex, Int32 cnt)
   at Ice.ObjectPrxHelperBase.__handleException(LocalException ex, Int32 cnt)
   at Ice.ObjectPrxHelperBase.ice_isA(String __id, Context __context)
   at Ice.ObjectPrxHelperBase.ice_isA(String __id)
   at Glacier.StarterPrxHelper.checkedCast(ObjectPrx b)

So do you have any suggestions for me? Even if this exception implies I improperally have configured my physical network, do you see anything else wrong with the configuration file itself? If you need the code, I can give you that too, but since it works for clients in the same network, I assumed it works.

Thanks so much for your responses!

Comments

  • marc
    marc Florida
    You are using an old version of Glacier which is not supported anymore. Glacier has been replaced by Glacier2. Furthermore, new versions of Ice have a "PublishedEndpoints" property, which allows you to run Glacier2 behind a firewall and port-forward from the firewall to Glacier2. Please see the Ice user manual for details.

    Note that Glacier2 does not support UDP.
  • Alright, thanks for the information, didn't know Glacier was now unsupported.