
There is nothing mysterious about NoFirewall Tunnel . Generally the firewall rejects the incoming calls. At the same time the outgoing calls pass through. Of course the firewalls are different and the filtering methods are also different. The program NoFirewall Tunnel is designed for (or rather against) the firewalls that allow outgoing connections. Typical outgoing connection is the surfing the net with Internet browser. If we run TCP server within the zone protected by the firewall, the firewall stops all incoming to this server calls. However if the client is located inside this zone, the firewall does not care about this client, especially if the client runs on the same with the server computer. The concept behind NoFirewall Tunnel is to create a passthrough client on the server computer. This client establishes the connection to passthrough remote server (Remember the firewall allows for the outgoing connections). The real client connects to the remote passthrough server , at the same time this passthrough server is already connected to the passthrough client . This client connects to the real server. The actual connection occurs within the zone protected by the firewall.
If your firewall does not allow for outgoing calls, the NoFirewall Client can connect via ProxyConnector component.[if socks proxy is available]
Features
Protocol TCP/IP NoFirewall Tunnel supports multiple ports.
The data from all the ports are channeled through a single port (control port)
Scheduled connection.
When to use NoFirewall Tunnel
If you have firewall related problems.
Retrofitting - if you already have the network application and do not want to change anything (or can not change)
If do not want to open the ports on the firewall. (or do not have access to them)
For instance you can run Remoteadmin on your corporate computer and control it from home.
Operation
Start you target application (the server you want to connect to).
Start NoFirewall client. Select Settings. Select the Control port (any free port will do)
Select the connection option : The client may connect at the specific time or keep connecting by a time interval.
Type in the server address. (your home computer IP, if you do not have static IP, use dynamic IP programs) then click ok.
Click Connect or select "Scheduled connection".
Remote computer setup
Start NoFirewall server . Click settings. Select the ports which your client(and the server) uses.
Select control port (same as the server control port) Leave the shift ports unticked. It is option for running (basically testing) the whole system on the same computer. OS does not allow for same multiple listening ports (even if it would, how to differentiate between the real server and passthrough server?). The system increments the port by 1. (only passthrough client port [Example : the clent is set to 4898 and the server is set to 4899, the Tunnel port to be selected is 4898])
Example
Running popular Remoteadmin program within the corporate environment
The Remoteadmin server starts automatically upon the installation. Start the NoFirewall client on the computer where the Remoteadmin server is. Select the control port (say 11000) Type in the IP address (or the name of the other computer). Select connection options (like connection attempt every 5 min) Click Start.
On the other computer start NoFirewall server. Select the Control port (11000) . Do not check shift ports. Select the application port which is 4899 (RemoteAdming default). Click Start. Wait for the client to connect. (The client attemps to connect every 5 min) When connected, start RemoteAdming client. When configuring RemoteAdmin client, type "localhost" as the name of the server. Same technique applies if you connect to standard .NET remoting applications.
NoFirewall Tunnel is distributed as .Net component (server and client) or the application (server and client) Multiple instanses are allowed for these components.
Client interface:
public void ConnectControlClient(string Url, int port);
public void Disconnect();
public bool RPCClientConnected;
public bool PassClientConnected;
public NFClient(Control ctl, ArrayList AllRegisteredObjects, int Timeout);
Server interface:
public bool ShiftPorts;
public void AddPort(int Port);
public void RemovePort(int Port);
public event DelegateObjRx StatusEvent; public NFServer(Control ctl, ArrayList AllRegisteredObjects, int Timeout);
public void Start(int ControlPort, ArrayList AppPorts);
public void Stop();
public void AddPort(int Port);
public void RemovePort(int Port);