What is UPnP Proxy?

On aspect of UPnP is the simplicity of "Plug-N-Play" part from a user perspective.
It should be as simple as just plugging in the device or application and it works.
It sometimes it does, it really does.

On part of the technological magic that tries to make this happen is called multicast,
each device and application calls out to all others in a "I'm Here, I'm Here!" fashion.
One limitation of this technology, as implemented in IPv4, is that it generally
is subnet local, so different networks can not easily talk to each other this way.
Here is where UPnP proxy comes in - it can act as a bridge between multiple networks
making it appear as just one big network to other UPnP clients.

Two distinct subnets
Two distinct subnets where the green and purple hosts see nothing of each other.

Bridged subnets
Add a UPnP Proxy daemon to each of the networks and connect those to proxies
to create a bridge and now the hosts in both the green and the purple networks
see each other and can access each other.

How to use UPnP Proxy?

Download

Latest release 0.3:
upnpproxy-0.3.tar.bz2
upnpproxy-0.3.tar.bz2.sig

All releases

The source is also available from git:

git clone git://git.savannah.nongnu.org/upnpproxy.git

More information

http://savannah.gnu.org/maintenance/UsingGit

Installation

Use the standard autofoo:

./configure
make
make install

Setup

You need to install the UPnP Proxy daemon on a machine on each and every network that
you wish to join.
Then each of the proxies need to be told of each other, this is done by giving a list
of the other proxies (called servers in the daemon) to connect to.
Copy the example doc/upnpproxy.conf file to $HOME/.config/ or /etc
and make sure to modify the servers list.
The config file is otherwise documenting it self:

## Comma or space seperated kist of servers to connect to, has no default.
servers = otherhost:24232

## Log destination, can either be syslog: or 
# (default is syslog:info)
# log = syslog:daemon
# log = /var/log/upnpproxy.log

## Which IP to send multicast messages from (default is empty)
# bind_multicast =

## Which IP to listen for server connections on (default is empty)
# bind_server =

## Port to listen for server connections on (default is 24232)
# server_port = 24232

## Whick IP to listen for tunnel connections on (default is empty)
# Should really be the same as bind_server.
# bind_tunnels =

## Port range to use for tunnel connections between servers
#  (default is 24235-24240).
# first_tunnel_port = 24235
# last_tunnel_port = 24240

## Which IP to listen for clients connection to proxied services
#  (default is empty). Should really be the same as bind_multicast.
# bind_services =

And then...?

UPnP Proxy was written because I needed it. It is feature complete for what I needed
it to do. But it still has some issues left which is why it still has alpha status.
But if you find a use for it and think it would be that much better if it just could
do this also, don't hesitate to send a patch or even pitch the idea - it might just
be that I had not though of that awesome feature! ;)

See the
project page for more information and tools.

Regards, Joel Klinghed