IceStorm with subsciber behind dynamic NAT

in Help Center
Hi all,
I'm developing an app with many subscribers installed behind ADSL routers. The publisher and IceStorm server have public IPs. I have a problem to receive message from IceStorm because subscribers are prive IPs, therefore IceStorm can not send message to. The ADSL routers only allow outgoing connections and are dynamic IPs, so I can not configure a NAT solution as refered in this post and this.
So anyone has another solution?
Thank you very much!
I'm developing an app with many subscribers installed behind ADSL routers. The publisher and IceStorm server have public IPs. I have a problem to receive message from IceStorm because subscribers are prive IPs, therefore IceStorm can not send message to. The ADSL routers only allow outgoing connections and are dynamic IPs, so I can not configure a NAT solution as refered in this post and this.
So anyone has another solution?
Thank you very much!
0
Comments
You can use Glacier2 to solve that issue. Basically Glacier2 will allow you to receive invocations over the connection opened by the client. For details about Glacier2 read:
- Teach Yourself Glacier2 in 10 Minutes
- Glacier2 - Ice 3.4
There are also several Glacier2 demos included in Ice distribution, if you still have doubts after reading that, ask here again.I have the same problem.
my network very simple:
Subscriber(192.168.1.10) -- NAT ..... NAT <==> internate -- Public IP Server( 61.1.x.y)(Glacier2, IceStorm, Publisher all in same server )
I run Clock demo:
At Server side: ( IP: 61.1.x.y)
config.glacier2:
Glacier2.InstanceName=DemoGlacier2
Glacier2.Client.Endpoints=tcp -h 61.1.x.y -p 4063
Glacier2.Server.Endpoints=tcp -h localhost
......
config.icebox: (No change)
config.service: (No change)
config.pub: (No change)
At Client Side : (IP: dynamic 192.168.1.x)
config.sub:
Ice.Default.Router=DemoGlacier2/router:tcp -p 4063 -h 61.1.x.y
Clock.Subscriber.Endpoints=tcp
......
please help me! thanks in advance!
I have changed my subscriber according the Glacier2 callback demo client program!
In my internet environment, the Glacier2 callback program work well!
but the
I have changed my subscriber according the Glacier2 callback demo client program!
In my internet environment, the Glacier2 callback program work well!
but the icestorm Subscriber can not work.
The code looks fine. Do you get errors on the subscriber side? Did you enable tracing on the Glacier2 router to try to see if publisher messages were being sent to the Glacier2 router by IceStorm? Setting the following properties in the Glacier2 router configuration file should help to track down the issue: Cheers,
Benoit.
Thank you for your quick reply.
I trace the Glacier2 , log
why the glacier2 only received the message the operation = tick, but don't forward to my subscriber?
In my working environment, I must connect to internet through many times NAT that I can not control.
I only know the localhost IP and the public internet IP.
Can Glacier2 & IceStorm work?
the Icestorm log:
-- 07/01/13 18:20:37.100 icebox.exe-IceStorm: Network: failed to establish tcp connection
local address: <not available>
remote address: 192.168.0.10:25474
Network.cpp:2348: Ice::ConnectFailedException:
connect failed: 信号灯超时时间已到 (The semaphore timeout period has expired)
-- 07/01/13 18:20:37.101 icebox.exe-IceStorm: Network: trying to establish tcp connection to 192.168.0.10:25474
Something is actually missing from your client code. The identity of the subscriber should be created with the Glacier2.Application.createCallbackIdentity method or you should use Glacier2.Application.addWithUUID method to register the servant with the Glacier2 session object adapter:
Or just the following if you don't need to configure the identity:
The Glacier2 router should be able to route back the "tick" requests after this change. You must also make sure to subscribe to the topic with the proxy returned by the addWithUUID method. This proxy contains the Glacier2 router server endpoints and IceStorm should therefore not try to connect to the local IP address of your client but to the Glacier2 router server endpoints.
Cheers,
Benoit.
Wonderful, It is what I want to do!!!!!!!!
thanks, thank you very much!!!!