Archive
a way to control a remote host behind a NAT
requisites:
* the managing part can open a couple of ports on a public internet host
* the managed part can execute a process
under these circumstances, the managing part will be able to take the control of the managed part’s host.
How?
Using a little trick, based on nc (1) and pipe(2). Man is your friend, as usual.
In particular, you will have to execute two instances of nc, listening on two ports, reciprocally binded by a couple of pipes (bidirectional pipe, in the follow), on the public host of the managing part.
And you will have to execute two instances of nc, the first connecting to the port of the (managed) service you want to export, the second one connectiong to one of the ports you’ve created in the step before.
Doing so, you will have a socket binded to the managed part’s service, on a public host.
An image is worth all the words above
Continuing with the explication, you will find at least a problem: There’s no software which implements a bidirectional pipe. So I’ve made it. It’s pretty unuseful, except in this case. Then, I’ve added to it a pair of functionalities, and now it is available. 🙂
How have I thought such a thing? Somewhen ago, somebody told me that Apple’s iChat offers you the opportunity to manage a remote host. So, I’ve told myself that I was able to implement the same mechanism to manage a parent’s computer.
Will it be available in pidgin, soon? 😉