Entries Tagged as ''

Practical UPnP in Linux

UPnP is a set of protocols that allow the automatic configuration of devices. One of those protocols, the Internet Gateway Device (IGD) protocol, allows software to configure routers for NAT traversal without user-intervention. In other words, with UPnP/IGD, the long and error-prone manual configuration for port-forwarding can be done automatically.

When tasks are done automatically, they are less visible to the user, and users are not comfortable that they are in charge of the process.

For the case of UPnP/IGD, we look into the open-source (LGPL) GUPnP library and the companion tool gupnp-universal-cp. You can install these from source (pick the packages gssdp, gupnp, gupnp-tools, and install in this order), or just install the package gupnp-tools from your package manager (for Debian and Ubuntu, these packages reside in Debian unstable).

Once you have installed the tool, you can start it from Application→Programming→UPnP Universal Control Point. This tool can be used for all things UPnP, however we focus on IGD here.

Once we start the UPnP Universal Control Point, we get the above screen. The tool sends discovery requests to the local network for UPnP-capable devices, and automatically the list gets populated. In the screenshot you can see that a router has been detected, and general information is shown.

If your router does not appear in the list and you are sure that UPnP is enabled on the device, then you might have hit on a known bug, Bug 1078 - Some devices may not work due to User-Agent field in requests. In this case, you need to make a minor edit in the source code and recompile.

Going through the available functions that the router exports, and allows to configure remotely.You can easily distinguish the functions that allow to perform port-forwarding. The one we have highlighted can be used to list the details of the currently active port-forwarding rulers. We right-click and select Invoke, which leads us to…

Action invocation in GUPnP Tool

We just pressed the Invoke button, and since there was a rule with Index 0, the details get filled in for us. Here we can see that Skype has opened a port-forwarding rule for us; when someone from the Internet is connected to port 18210 of this router, the network connection is mapped to the local system with IP address 192.168.1.67.  In the mapping description it shows that Skype was the program that set this rule.

You would normally increase the Mapping Index and click on Invoke, in order to see any additional port mappings. Skype generally opens a few more ports, so there is more to see.

For all the shortcommings, UPnP/IGD is an important network configuration protocol. Due to the lack of an open-source library, applications had to implement UPnP support from scratch. Now with GUPnP, it is much easier to write UPnP-enabled applications.

UPnP/IGD is very important for applications such as Ekiga, Pidgin (file transfers!), Empathy, XChat (for DCC). This has to be done in order to raise the bar in terms of connectivity, and so that it Just works.

«Εσείς, κύριέ μου, έχετε όρεξη για κουβέντα!» Ντρανκ!

Έχει έρθει το guerrila μάρκεντινγκ και στην Ελλάδα. Σε παίρνουν τηλέφωνο και σε πιέζουν να αγοράσεις ένα προϊόν ή μια υπηρεσία χρησιμοποιώντας πολλές επιθετικές τακτικές, μια από αυτές είναι ότι σε ξαφνιάζουν με το τηλεφώνημα και τη γρήγορη ροή του λόγου.

Έχω ακούσει ιστορίες για ηλικιωμένες κυρίες που επιλέγουν νέα συμβόλαια για το τηλέφωνο με 26 ευρώ το μήνα (περιλαμβάνει απεριόριστές κλήσεις) αντί του υπάρχοντος 14 ευρώ το μήνα (ΟΤΕ, 28 ευρώ το δίμηνο), ενώ τα τηλεφωνήματα που κάνουν είναι πολύ λιγότερο από 12 ευρώ (η διαφορά).

Όταν χτύπησε το τηλέφωνο, δεν το έπιασα εγώ. Μετά από λίγα λεπτά με παραξένεψε η σχετική ησυχία. Πάω να δω, «Λέει κάτι για το τηλέφωνο και το Ίντερνετ». Προσφέρομαι να συνεχίσω τη συνομιλία.

«Σας απαλάσσουμε από το πάγιο του ΟΤΕ. Με την υπηρεσία μας μπορείτε να παίρνετε τηλέφωνο δωρεάν στην Ελλάδα και το εξωτερικό. Ακόμα, σας βάζουμε και Ιντερνετ. Και πολλά άλλα, που σας τα λέω από το τηλέφωνο αλλά είμαι σίγουρη ότι δε θα τα θυμάστε όταν γράφεται την κατάντια μας στο ιστολόγιό σας.»

«Με ενδιαφέρει το κομμάτι για το Διαδίκτυο. Μπορείτε να μού πείτε περισσότερα;»

διαβάζει μερικές παραγράφους με τυπικές πληροφορίες, που φυσικά δεν μπαίνουν σε λεπτομέρειες

κάνω μερικές τεχνικές ερωτήσεις

κάνει προσπάθεια για απαντήσεις

«Μπορείτε να μου πείτε τι διαφορά έχει η υπηρεσία σας από άλλες παρόμοιες; Βλέπω ότι έχετε ακριβώς τις ίδιες τιμές. Γιατί να προτιμήσω εσάς;»

κάποια λεπτομέρεια που δεν θυμάμαι. Ας είναι καλά ο ΟΤΕ, δεν υπάρχει διαφοροποίηση παρά μόνο όταν το δίκτυο είναι ιδιόκτητο. (Λάθος, το δίκτυο ήταν ιδιόκτητο. Ακόμα και με ιδιόκτητο, το ίδιο αποτέλεσμα στις τιμές)

εδώ ρωτώ για το χρόνο που χρειάζεται για την ενεργοποίηση (δεν υπάρχει εγγύηση για το πότε θα λειτουργήσει η γραμμή), δεν υπάρχει εγγύηση για το πόσο χρόνο θα είναι η τηλεφωνική γραμμή εκτός λειτουργίας, δεν υπάρχει εγγύηση, δεν υπάρχει εγγύηση, …

«Ποια είναι η διαδικασία για να αγοράσω την υπηρεσία σας; Πως θα μάθω τις λεπτομέρειες του συμβολαίου;»

«Θα μου δώσετε τα στοιχεία σας και θα έρθει ο κούριερ να σας δώσει το συμβόλαιο να υπογράψετε»

«Είναι διαθέσιμο το συμβόλαιο για να το διαβάσω πιο νωρίς; Για παράδειγμα, κάποιος δικτυακός τόπος;»

«…»

«Εννοώ είναι διαθέσιμο το συμβόλαιο σε ηλεκτρονική μορφή στο Ίντερνετ;»

«Αα. Το συμβόλαιο θα το φέρει ο κούριερ. Μόνο ο κούριερ το έχει. Θα το δείτε εκείνη τη στιγμή.»

«Θα διαβάσω το συμβόλαιο όσο περιμένει ο κούριερ;»

«Ναι»

«Θα περιμένει ο κούριερ εμένα να διαβάσω το συμβόλαιο; Αν χρειάζομαι 20 με 30 λεπτά;»

«Τι λέτε τώρα; Ο κούριερ πάει σε 50 σπίτια την ημέρα. Σε 2 λεπτά μπορείτε να το ρίξετε μια ματιά και να το υπογράψετε!»

Όταν κάποιος λέει “Θα κάνω μισό λεπτό”, εννοεί ότι θα γυρίσει μετά από μισή ώρα ή περισσότερο. Όταν κάποιος λέει “Έχεις δύο λεπτά χρόνο”, εννοεί ότι 20 δευτερόλεπτα είναι το ανώτατο χρονικό όριο πριν πάρει το στυλό και σε πιέσει να υπογράψεις.

«Δεν έχω τη δυνατότητα να υπογράψω ένα συμβόλαιο που δεν έχω δει πριν, και που πρέπει να αφιερώσω τόσο λίγο χρόνο για να το διαβάσω.»

«Εσείς, κύριέ μου, έχετε όρεξη για κουβέντα!» Ντρανκ!