ΚΟΙΝΟΤΗΤΕΣ ΕΛΕΥΘΕΡΟΥ ΛΟΓΙΣΜΙΚΟΥ (ΙII)


(ΣΥΝΕΧΕΙΑ ΑΠΟ 2/06/13)

Πρόσβαση οικιακού server από Internet

Το ελεύθερο λογισμικό προσφέρεται για πολλούς πειραματισμούς. Δεν είμαστε λίγοι αυτοί που αποφασίζουμε να στήσουμε έναν δικό μας server που φιλοξενούμε στο σπίτι μας, ώστε σε αυτόν να σηκώσουμε υπηρεσίες που θα είναι προσβάσιμες από το Internet. Παραδείγματα είναι η δημιουργία ενός web server, ενός ssh server ή ακόμα και ενός VoIP τηλεφωνικού κέντρου! Εδώ θα περιγράψουμε τον τρόπο που μπορούμε να πετύχουμε την επικοινωνία με μία τέτοια οικιακή υπηρεσία από το Internet.

Προαπαιτούμενες γνώσεις

Για την πλήρη κατανόηση του άρθρου απαιτούνται βασικές γνώσεις πάνω στο TCP/IP, τις οποίες ο αναγνώστης μπορεί να βρει στο άρθρο TCP/IP Basics. Θα χρειαστούμε τα βασικά πάνω στα TCP Ports, το NAT και το DNS. Ότι άλλο χρειαστεί θα εξηγηθεί επί τόπου στο παρόν άρθρο.

Το πρόβλημα

Έστω ότι έχουμε έναν υπολογιστή στον οποίο έχουμε στήσει μία υπηρεσία. Για τις ανάγκες του άρθρου θεωρούμε ότι ο υπολογστής αυτός που στο εξής θα αποκαλούμε serverέχει μία IPv4 διεύθυνση 192.168.0.10, το δίκτυο είναι το 192.168.0.0/24, ο router έχει IPv4 διεύθυνση 192.168.0.1 και η υπηρεσία μας είναι το Web service που “ακούει” στην TCP θύρα #80. Επιπλέον, την υπηρεσία DNS server την παρέχει ο router, όπως συμβαίνει στην πλειονότητα των περιπτώσεων στα οικιακά δίκτυα. Τέλος, ο ίδιος ο server έχει δυνατότητα πρόσβαης στο Internet, δηλαδή έχει τις κατάλληλες ρυθμίσεις για default gateway και DNS server. Ο αναγνώστης μπορεί να θεωρήσει τις κατάλληλες αλλαγές στα παραπάνω νούμερα ώστε το παράδειγμα να αντανακλά τη δική του περίπτωση.

Έστω λοιπόν ότι η υπηρεσία λειτουργεί. Αυτό σημαίνει ότι έχοντας έναν υπολογιστή στο τοπικό δίκτυο μπορούμε να ανοίξουμε έναν browser και δίνοντας ως διεύθυνση τοhttp://192.168.0.10 να δούμε το site μας. Αντίστοιχα, θεωρούμε ότι ανάλογα συμβαίνουν σε περίπτωση άλλων υπηρεσιών, όπως πχ το ssh service.

Στο IPv4 υπάρχουν κατηγορίες διευθύνσεων, δύο εκ των οποίων είναι οι δημόσιες (public) και οι ιδιωτικές (private). Οι διευθύνσεις του τοπικού μας δικτύου (LAN) ανήκουν στην κατηγορία των ιδιωτικών διευθύνσεων. Ο router μας από την άλλη, εκτός της ιδιωτικής διεύθυνσης (στο παράδειγμά μας 192.168.0.1) αποκτά μία ακόμα διεύθυνση που ανήκει στην κατηγορία public. Κάθε φορά που συνδέεται στο Internet ο πάροχος του αποδίδει μία public IPv4 διεύθυνση. Με αυτή την public διεύθυνση και με τη χρήση της τεχνολογίας NAT Overload o router καταφέρνει να δίνει πρόσβαση στο Internet σε όλους τους υπολογιστές του τοπικού δικτύου. Ο μηχανισμός αυτός ενεργοποιείται κάθε φορά που ένας εσωτερικός υπολογιστής προσπαθήσει να εκκινήσει μία συνεδρία (session) με μία δημόσια διεύθυνση στο Internet.

Ας υποθέσουμε τώρα ότι ένας υπολογιστής σε έναν χώρο έξω από το τοπικό μας δίκτυο θελήσει να αποκτήσει πρόσβαση στην υπηρεσία που έχουμε στήσει στον οικιακό μας server μέσω Internet. Ο server μας δεν διαθέτει δημόσια διεύθυνση, παρά μόνο ιδιωτική η οποία ως γνωστόν δεν είναι έγκυρη στο Internet. Το ερώτημα είναι αν μπορεί αυτός ο υπολογιστής να επικοινωνήσει τελικά με τον server μας ώστε να δει τις ιστοσελίδες που φιλοξενούνται σε αυτόν (ή όποια άλλη υπηρεσία έχουμε εγκαταστήσει). Η απάντηση είναι “Όχι” και αυτό οφείλεται στους παρακάτω λόγους:

  1. Ο router μας δεν έχει κάποια πληροφόρηση για το πώς και σε ποιά τοπική διεύθυνση του LAN να προωθήσει τις εισερχόμενες συνεδρίες (incomming sessions) από το Internet.
  2. Ο router πιθανώς διαθέτει κάποιο ενεργοποιημένο firewall που έτσι κι αλλιώς απαγορεύει τις εισερχόμενες συνδέσεις στον router πριν φτάσουν σε κάποιο άλλο μηχανισμό του όπως πχ το Static NAT.
  3. Κάθε φορά που ο router συνδέεται στο Internet μέσω του παρόχου του αποδίδεται μία διαφορετική IPv4 public IP διεύθυνση, την οποία συνήθως αποκαλούμε Dynamic real IP. Έτσι, ο απομακρυσμένος υπολογιστής δεν έχει κάποιο τρόπο να γνωρίζει ποιά είναι η διεύθυνσή μας την κάθε χρονική στιγμή.

Παρακάτω θα εξεταστούν οι τρόποι με τους οποίους μπορούμε να υπερπηδήσουμε τα παραπάνω εμπόδια και να “βγάλουμε” εντέλει την υπηρεσία μας στο Internet.

Firewalls

Οι περισσότεροι routers ενσωματώνουν λειτουργίες firewalling. Ένα firewall τυπικά είναι ανεξάρτητο από την διαδικασία του Static NAT που περιγράφεται παρακάτω. Ωστόσο, πολλοί οικιακοί routers έχουν συμπτύξει το firewalling με το static NAT ώστε να διευκολυνθούν οι αρχάριοι οικιακοί χρήστες με μη τεχνικές γνώσεις. Επειδή όμως εδώ πρέπει να τα γράφουμε σωστά χωρίς να προκαλούμε παρερμηνίες, αποσαφηνίζουμε ότι άλλη λειτουργία το firewall και άλλη το Static NAT.

Πριν προχωρήσουμε λοιπόν πρέπει να επιτρέψουμε από το firewall τις εισερχόμενες συνδέσεις στο WAN interface μας στην TCP θύρα #80 ή σε όποια άλλη “ακούει” η υπηρεσία μας. Αν το router που διαθέτουμε ενσωματώνει την υπηρεσία firewall με αυτή του Static NAT, που είναι το συνηθέστερο, τότε παρακάμπτουμε αυτό το βήμα και προχωράμε παρακάτω.

Static NAT

Παραπάνω αναφέραμε τον μηχανισμό NAT Overload που είναι ένα υποσύνολο του μηχανισμού NAT. Το Static NAT, που αναφέρεται συχνά και ως PAT (Port Address Translation), είναι άλλο ένα υποσύνολο του ΝΑΤ, που μας επιτρέπει να αντιστοιχήσουμε μία ή περισσότερες TCP ή UDP θύρες της δημόσιας IPv4 διεύθυνσής μας με μία ή περισσότερες αντίστοιχες θύρες μας ιδιωτικής IP διεύθυνσης του LAN μας.

Στην προκειμένη περίπτωση, αυτό που πρέπει να κάνουμε είναι να αντιστοιχίσουμε την TCP θύρα 80 της public IP διεύθυνσης με την TCP θύρα 80 της ιδιωτικής διεύθυνσης 192.168.0.10 . Έτσι, όταν ο router δέχεται ένα αίτημα από το Internet στη θύρα 80 θα το προωθεί μέσω του μηχανισμού Static NAT στον server μας, δίνοντας έτσι τη δυνατότητα να δει κάποιος το site μας μέσω του Internet.

Ο μηχανισμός του NAT είναι αρκετά πιο πολύπλοκος από την παραπάνω περιγραφή, τηρώντας session tables, TCP αντιστοιχίες μεταξύ LAN IPs και WAN IP, κλπ. Ωστόσο, όλα αυτά δεν μας απασχολούν στην παρούσα περίπτωση.

Dynamic DNS

Το τελευταίο βήμα είναι να δημιουργήσουμε έναν τρόπο πρόσβασης στην υπηρεσία μας χωρίς να απαιτούμε από τον χρήστη να γνωρίζει την public IP διεύθυνση του router μας κάθε φορά. Η υπηρεσία DNS (Domain Name System) είναι αυτή που μετατρέπει τις IP διευθύνσεις σε FQDN διευθύνσεις. Ένα παράδειγμα FQDN διεύθυνσης είναι το foss.ntua.gr .

Ωστόσο, το DNS απαιτεί την χειροκίνητη δημιουργία μίας καταγραφής στο σύστημα, κάτι που δεν διευκολύνει στην περίπτωσή μας, όπου η public IP του router μας μπορεί να αλλάζει ιδιαίτερα συχνά, έως και αρκετές φορές μέσα στη μέρα. Για το λόγο αυτό υπάρχει η υπηρεσία Dynamic DNS. Αυτή απαιτεί έναν agent, ένα πρόγραμμα δηλαδή που κάθε 1-2 λεπτά ελέγχει την public IP του router και ανανεώνει αυτόματα την καταχώρηση DNS. Για να μπορούν να διαδίδονται γρήγορα οι ενημερώσεις το TTL ορίζεται συνήθως στο 1 λεπτό.

Υπάρχουν αρκετές δωρεάν υπηρεσίες Dynamic DNS. Δύο ιδιαίτερα γνωστές είναι οι παρακάτω.

Αρκετοί routers διαθέτουν ενσωματωμένους agents για τις γνωστότερες υπηρεσίες Dynamic DNS. Σε περίπτωση που ο router μας δεν διαθέτει τέτοια λειτουργία, μπορούμε να εγκαταστήσουμε στον server μας τον agent που δίνει η υπηρεσία, ο οποίος συνήθως διατίθεται για τα περισσότερα γνωστά λειτουργικά (Windows, Linux, FreeBSD, MacOS, κλπ).

Με αυτόν τον τρόπο, μπορεί κάποιος να αποκτήσει πρόσβαση στην υπηρεσία μας χρησιμοποιώντας το FQDN που μας δίνει η υπηρεσία Dynamic DNS (πχ myhome.dyndns.org).

Γιατί δεν μπορώ να χρησιμοποιήσω τη Dynamic DNS διεύθυνση από τον υπολογιστή μου στο σπίτι;

Κάτι που ίσως παρατηρήσει κανείς είναι ότι αν επιχειρήσει να συνδεθεί στην υπηρεσία χρησιμοποιώντας το FQDN του Dynamic DNS ενώ βρίσκεται ήδη εντός του οικαικού του δικτύου, αντί να δει την ιστοσελίδα του server του είτε η σύνδεση θα αποτύχει είτε θα δει την διαχειριστική σελίδα του router του. Αυτό είναι απόλυτα φυσιολογικό, όπως εξηγείται παρακάτω.

Η FQDN αντιστοιχεί στην public IP του router. Επομένως, ο υπολογιστής θα προσπαθήσει να συνδεθεί σε αυτή εκκινώντας ένα session μέσα από το LAN. Για να ενεργοποιηθεί όμως ο μηχανισμός του Static NAT θα πρέπει το session να εκκινήσει από το Internet και όχι από το LAN. Συνεπώς, ο μηχανισμός σε αυτή την περίπτωση δεν ενεργοποιείται και επομένως τα πακέτα δεν προωθούνται στον server. Ανάλογα με την υλοποίηση του NAT στο εσωετρικό του router, η σύνδεση είτε δεν θα πραγματοποιηθεί ποτέ, οπότε ο χρήστης θα λάβει ένα μήνυμα time-out, είτε απλά θα δρομολογηθεί στον ίδιο τον router, οπότε ο χρήστης θα δει την διαχειριστική σελίδα του router.

Για να αποφευχθεί αυτό το πρόβλημα η πιο απλή λύση είναι ο ίδιος ο χρήστης να χρησιμοποιεί την εσωτερική IP διεύθυνση, πχ 192.168.0.10 , όταν βρίσκεται εντός του οικιακού του LAN. Μία άλλη, πιο περίπλοκη, λύση είναι να δημιουργήσει μία νέα ζώνη DNS μέσα στον DNS server του η οποία θα αναφέρεται μόνο στην FQDN myhome.dyndns.org και όπου η μόνη καταχώρηση θα είναι ένα A record με τιμή 192.168.0.10 . Αυτό όμως προϋποθέτει ότι υπάρχει υπηρεσία DNS μέσα στο LAN που παρέχεται από έναν server και όχι από τον router και επίσης απαιτεί αρκετές γνώσεις. Η περιγραφή όμως αυτής της διαδικασίας ξεφεύγει από τους σκοπούς του παρόντος άρθρου.

Το IPv6 θα καταργήσει την ανάγκη για NAT

Το IPv6 είναι ο αντικαταστάτης του IPv4. Το σημαντικότερο πλεονέκτημά του έναντι του προκατόχου του είναι ότι διαθέτει πολλές εκατομύρια φορές των διευθύνσεων του IPv4. Αν σκεφτούμε ότι οι private IPv4 διευθύνσεις χρησιμποιούνται ευρέως εξαιτίας των ελάχιστων διαθέσιμων public, τότε θα καταλάβουμε ότι η αφθονία των IPv6 διευθύνσεων καταργεί την ανάγκη της ευρείας χρήσης private διευθύνσεων. Επομένως και την ανάγκη για NAT. Παράλληλα όμως θα αυξηθούν οι ανάγκες σε firewalls, routing και DNS. Ουδέν καλόν αμιγές κακού!🙂

Συμπεράσματα

Το ελεύθερο λογισμικό, εκτός από σοβαρά και αξιόπιστα εργαλεία, προσφέρει και ένα απέραντο playground για τους επίδοξους ITs και service providers όλων των επιπέδων! Με τις DSL που υπάρχουν πλέον σε κάθε σπίτι η παροχή homemade υπηρεσιών στο Internet είναι πιο εφικτή από ποτέ. Επιπλέον, οι σύγχρονοι οικιακοί routers παρέχουν τόσες ευκολίες που οι απαραίτητες ρυθμίσεις είναι σχεδόν παιχνιδάκι. Στο παρόν άρθρο, πέραν της επεξήγησης της διαδικασίας, είχαμε την ευκαιρία να αναλύσουμε λίγο εκτενέστερα και σε περισσότερο τεχνικό επίπεδο το όλο θέμα, καθώς και να αναφέρουμε τεχνολογίες για τις οποίες ο αναγνώστης μπορεί να αναζητήσει περισσότερες πληροφορίες στο net.

Μην κάθεστε λοιπόν, υπάρχουν δημιουργικότεροι τρόποι να αξιοποιήσετε την DSL γραμμή σας από το απλό downloading και το browsing.

(ΣΥΝΕΧΙΖΕΤΑΙ)

ΠΗΓΗ  https://foss.ntua.gr/

About sooteris kyritsis

Job title: (f)PHELLOW OF SOPHIA Profession: RESEARCHER Company: ANTHROOPISMOS Favorite quote: "ITS TIME FOR KOSMOPOLITANS(=HELLINES) TO FLY IN SPACE." Interested in: Activity Partners, Friends Fashion: Classic Humor: Friendly Places lived: EN THE HIGHLANDS OF KOSMOS THROUGH THE DARKNESS OF AMENTHE
This entry was posted in Computers and Internet and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s