Gwyn SkoneSoftwarewhither

Whither

Whither system was developed to allow one public Internal server port to be relayed to any one of a team of 'worker' hosts, so that processing load could be distributed and, where these services are interactive, multiple connections could be used simultaneously. Originally, this was used with a listening VNC viewer setup, where three listening viewers were exposed through a single standard port, and unrelated incoming connections would appear on different viewer machines where possible.

The system is installed in two parts:

Whither
is a Windows service, installed and running on a machine visible to the public Internet. This opens the configured ports, receives incoming connections, and relays all data to the selected worker. It also provides a private Telnet-style configuration interface.
Hither
is a simple desktop program that runs on each 'worker' host — those that actually handle the incoming connections — allowing them to request exclusive handling of certain connection clients, and showing the current list of all active allocations.

A third, optional, program called Thither can be installed on client computers to listen for connection requests posted by the Whither server, and run a command line in response. This might be used to automatically, remotely start reverse connections when it is not possible to connect directly. Note that it cannot run arbitrary commands: the client user is in full control of whether and what commands are run.

Download (ZIP format)

To install, run it on the server machine with administrative rights and the /INSTALL command line argument. It should then appear in the Services Manager, from where it can be started and/or configured to run automatically. By default, it will use a configuration file called WhitherConfig.txt in the system's ProgramData directory. A basic sample configuration is shown below.

Hither is a standalone program and can be run from any location. The first time it is run on one of the workers, right-click its notification area icon, and click Change Server. Specify the name and private port number of the Whither server, and the worker name for this host, and click OK. These settings are stored in the registry, so Hither can then be run again in the future from any folder.

Sample Whither configuration file

This configures two worker names, 'Test1' and 'Test2', both of which can offer the 'Telnet' service on internal port 23, but Test2 is limited to 3 different concurrent connections. The server offers that service to the public Internet on port 23. The IPv6 loopback address is identified as the client 'Self', and anything in the 123.45.67.0/24 subnet is identfied as 'Someone'. The internal port used for Hither to communicate on is 2323, and connection requests for Thither clients will be created in C:\inetpub\wwwroot\whither (which should be a web-accessible path).
object TWhitherServer
  PrivatePort = 2323
  CallsPath = 'C:\inetpub\wwwroot\whither'
  object Someone: TClient
    IPMask4 = '123.45.67.*'
  end
  object Self: TClient
    IPMask6 = '0:0:0:0:0:0:0:1'
  end
  object Telnet: TServicePort
    Port = 23
    TCP = True
  end
  object Test1: TWorker
    MaxConnections = 0
    Ports = <
      item
        Tag = 23
        ObjRef = Telnet
      end>
  end
  object Test2: TWorker
    MaxConnections = 3
    Ports = <
      item
        Tag = 23
        ObjRef = Telnet
      end>
  end
end