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 where the green and purple hosts see nothing of each other.
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.
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
http://savannah.gnu.org/maintenance/UsingGit
Use the standard autofoo:
./configure make make install
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 =
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