Eισαγωγη στο Port Forward

Ζουμε σε μια εποχη που το Internet ειναι πια αναγκαιο και οχι πολυτελεια. Απο υπηρεσιες οπως το ηλεκτρονικο ταχυδρομειο μεχρι τις ιστοσελιδες κοινονικης δικτυωσης και απο τις φορολογικες μας δηλωσεις στο Taxis μεχρι και το Κτηματολογιο δεν μπορουμε παρα να κανουε μερικα κλικ στον υπολογιστη μας και να συνδεθουμε στην καταλληλη ιστοσελιδα.

Το πως δημιουργειται μια ιστοσελιδα ομως και πως βγαινει στον “αερα” δεν ειναι κατι το μαγικο. Βασικες πτυχες του θεματος θα τις καλυψουμε σε αυτο το αρθρο αλλα το κεφαλαιο της Τεχνολογιας των Δικτυων τοπικης (Local Area Networks) και ευρυας περιοχης (Wide Area Networks) ειναι παρα πολυ μεγαλο και συμαντικο. Σε ορισμενα σημεια να ειναι και λιγο μπερδεμενο αλλα ελπιζω με το αρθρο αυτο να ξεκαθαριστουν μερικα πραγματα.

Σχετικη ορολογια

Για να μπορεσετε να καταλαβετε την “γλωσσα” που θα χρησιμοποιησω θα παραθεσω εδω την σχετικη ορολογια την οποια θα χρησιμοποιησω ετσι ωστε αν σε καποιο σημειο τα πραγματα δεν γινονται κατανοητα να μπορειτε τουλαχιστον να ανατρεξετε και να ξεδιαλυνετε οτι απορειες μπορει να εχετε.

  • Δρομολογητης (router): Μια συσκευη που παιζει τον ρολο του τροχονομου στο δικτυο μας. Δηλαδη στελνει τις πληροφοριες στις αντιστοιχες συσκευες απο τις οποιες και ζητηθηκαν.
  • Εσωτερικη IP Διευθυνση (Internal IP Address): Ειναι μια ομαδα αριθμων διαφορετικοι για καθε συσκευη συνδεδεμενη στο δυκτιο του σπιτου μας ή της επιχειρησης μας. Συνηθως αυτες οριζονται αυτοματα απο τον δρομολογιτη του δικτιου μας.
  • Εξωτερικη IP Διευθυνση (External IP Address): Ακριβως το ιδιο με την εσωτερικη IP Διευθυνση με την διαφορα οτι αυτη η IP διευθυνση οριζεται απο τον Παροχεα μας και οριζεται μονο για τον δρομολογιτη μας.
  • Τοιχος Προστασιας (Firewall): ειναι μια λειτουργια του δρομολογητη που προστατευει το εσωτερικο μας δυκτιο απο την μη εξουσιοδοτημενη προσβαση σε συσκευες και πορους του εσωτερικου μας δικτυου.
  • DNS (Domain Name Services): ειναι μια υπηρεσια του διαδικτυου που μετατρεπει μια εξωτερικη IP διευθυνση σε μια διευθυνση που ειναι ευκολη για ανθρωπους. Για παραδειγμα το DNS μετατρεπει το www.gnutechie.com στην IP διευθυνση (παραδειγματος χαριν) 10.20.30.40 Το κεφαιλαιο DNS ειναι τεραστιο και περιπλοκο οποτε για τις αναγκες μας θα κρατησουμε μονο αυτη την βασικη μετατροπη.
  • Διακομιστης (Server): Λογισμικο που προσφερει πληροφοριες σε αλλα προγραμματα που τρεχουν σε αλλους υπολογιστες μεσα στο τοπικο μας δικτυο. Παραδειγμα τετοιου λογισμικου ειναι οι διακομηστες ιστοσελιδων (web servers) Nginx και Apache2 . Οταν ο ορος διακομιστης αναφερεται σε υπολογιστες, εννοουμε υπολογιστες που δεν χρησιμοποιουνται κανονικα αλλα δεν εχουν συνδεδεμενα περιφεριακα (δηλαδη χωρις οθονη, πληκτρολογιο η/και ποντικι) και το λειτουργικο τους συστημα εχει μονο τις εφαρμογες εκεινες που χρειαζεται για να λειτουργισει ενα λογισμικο διακομιστη, 24 ωρες το 24αωρο χωρις διακοπη.
  • Προγραμμα-πελατης (Client): Λογισμικο που αιτηται και δεχεται πληροφοριες απο ενα διακομιστη. Παραδειγμα προγραμματος-πελατη ειναι οι φυλλομετριτες (web browsers) οπως ο Firefox και ο Chrome. Οι φυλλομετριτες αιτουνται ιστοσελιδες απο τους διακομιστες ιστοσελιδων των οποιων τις εξωτερικες IP διευθυνσεις βρησκουν μεσω του DNS.

Πως βγαινει μια ιστοσελιδα στον “αέρα” (δηλαδη ειναι προσβασιμη απο το Internet)

Οταν καλουμε μια ιστοσελιδα στον φυλλομετρητη μας (Browser) στην ουσια στελνουμε ενα αιτημα για την συγκεκριμενη σελιδα στον διακομιστή της ιστοσελιδας (web server). Ο διακομιστης περιμένει και ακουει τα αιτηματα απο διαφορους φυλλομετρητες σε ενα συγκεκριμενο σημειο του δικτυου το οποιο ονομαζουμε θυρα.

Για γινει λιγο πιο απλα κατανοητο φανταστειτε ενα τοπικο δικτυο σαν αυτο του σπιτιου σας, σαν ενα οικοδομικο τετραγωνο… ο καθε υπολογιστης ειναι μια πολυκατοικια… και οι θυρες του καθε υπολογιστη ειναι τα αντιστοιχα διαμερισματα.

Οι θυρες μας χρησιμευουν για να διαφοροποιησουμε διαφορους διακομιστες, αλλα και διαφορετικα αιτηματα απο διαφορετικους υπολογιστες και διαφορετικους πελατες. Οπως καταλαβατε σε εναν υπολογιστη-διακομιστη μπορουμε να εχουμε παραπανω απο ενα λογισμικο διακομιστη και οι θυρες μας επιτρεπουν να στελνουμε αιτηματα για δεδομενα σε πολλαπλους διακομιστες χωρις πιθανοτητες να μπερδευτουν τα αιτηματα μας οταν φτανουν στον ιδιο υπολογιστη.

Μολις ο διακομιστης λαβει το αιτημα και δει οτι οι σελιδες και οι εικονες και τα αρχεια που ζητησε ο χρηστης υπαρχουν στο διακομιστη τοτε στελνει τα δεδομενα πισω στον φυλλομετριτη του χρηστη που εκανε το αιτημα και κλεινει την συνδεση μολις ολοκληρωθει η μεταφορα των δεδομενων.

Υπαρχουν θυρες οι οποιες ειναι προκαθορισμενες για συγκεκριμενες εφαρμογες… για παραδειγμα για τον διακομιστη βασεων δεδομενων MariaDB η τυπικη θυρα (εαν δεν την αλλαξουμε εξεπειτηδες - και υπαρχουν περιπτωσεις που αυτο ειναι επιθυμητο), ειναι η 3306. Για την υπηρεσια απομακρυσμενης προσβασης των Microsoft Windows (γνωστο ως Remote Desktop Protocol ή RDP) η τυπικη θυρα ειναι η 3389. Για τους διακομιστες ιστοσελιδων με το προτυπο HTTP , η τυπικη θυρα ειναι η 80 και για το ασφαλες προτυπο HTTPS ειναι η 443 και παει λεγοντας.

Τι ακριβως ειναι το Port Forward;

Για να ειναι προσβασιμο ενα λογισμικο διακομιστη απο το Internet θα πρεπει η θυρα στην οποια ακουει τα αιτηματα για δεδομενα να μην μπλοκαρετε απο τον δρομολογητη (router) της εταιριας σας ή του σπιτιου σας και καθε αιτημα απο το Internet να πηγαινει κατευθειαν στον υπολογιστη που τρεχει το λογισμικο του διακομιστη.

Με τις προκαθορισμενες ριθμησεις ενας router δεν θα αφησει εναν διακομιστη που τρέχει σε καποιο υπολογιστη σας να βγει στον αερα (δηλαδη εκτως του τοπικου σας δικτυου).

Για να ειναι προσβασιμο πρεπει να ορισουμε ενα port forward στον δρομολογητη μας. Στην ουσια λεμε στον δρομολογητη μας οτι οταν εντοπισει αιτημα απο αλλον υπολογιστη ή διακομιστη και να το περασει κατευθειαν στον αναλογο υπολογιστη ανοιγοντας στην ουσια μια “τρυπα” στο τοιχος προστασιας μας. Θα μπορουσε κανεις επισεις να το σκευτει σαν ενα ειδος μεταβιβασης της θυρας στην οποια τρεχει το λογισμικο του διακομιστη μας απο το εσωτερικο του δικτιου μας στο εξωτερικο του.

Σε αυτο το σημειο πρεπει να εφυστησω την προσοχη στο γεγονος οτι εαν ανοιξουμε παρα πολλες τετοιες “τρυπες” το δικτυο μας θα ειναι ευαλωτο σε επιθέσεις. Αρα χρειαζεται προσοχη και ενα σχεδιο οταν βλεπουμε την αναγκη για να κανουμε αυτη την διαδικασια ετσι ωστε να μειωσουμε στο ανθρωπινος ελαχιστο την εκτιθεμενη επιφανεια του δικτυου μας. Αλλα αυτο ειναι παλι μεγαλο κεφαλαιο.

Πως γίνεται; Ειναι η ιδια διαδικασια για ολες τις συσκευες;

Η διαδικασια του Port forward ειναι διαφορετικη για ολους τους δρομολογητες. Πριν ακομα ξεκινησουμε χρειαζομαστε να ξερουμε μερικα πραγματα.

  • Την μαρκα και το μοντελο του δρομολογητη μας. Αυτο το βρησκουμε αν εχουμε ακομα το κουτι του καπου… ή αν ειναι δυνατον και προσβασιμος στο κατω μερος του οπως φαινεται στην παρακατω φωτογραφια:

  • Την εσωτερικη IP διευθυνση του υπολογιστη που τρεχει το λογισμικο του διακομιστη μας.

  • Την θυρα στην οποια “ακουει” το λογισμικο-διακομιστης.

  • Το ειδος της θυρας. Υπαρχουν 3 περιπτωσεις… η θυρα να ειναι τυπου TCP, η θυρα να ειναι τυπου UDP και η τριτη περιπτωση ειναι να υπαρχουν δυο θυρες με το ιδιο νουμερο μια με τυπο TCP και η αλλη με τυπο UDP.

Επειδη για καθε δρομολογητη η διαδικασια ισως διαφερει λιγο, υπαρχει μια πολυ χρησιμη ιστοσελδια που βρησκεται στην διευθυνση https://portforward.com με ενα μεγαλο ογκο πληροφοριων οσον αφορα τα δικτυακα θεματα.

Στην συγκεκριμενη ιστοσελιδα θα πρεπει να κανουμε κλικ στο συνδεσμο “List of all Routers” και μετα να κατεβουμε κατω και να βρουμε την μαρκα και το μοντελο του δρομολογητη μας (σε αυτη την περιπτωση τον TP-Link TL-WR1043ND)

Η ιστοσελιδα μας προτρεπει να χρησιμοποιησουμε προγραμματα που παρεχει για την πιο ευκολη ριθμηση του δρομολογητη μας… αλλα δεν ειναι απαραιτητο. Πηγαινουμε τον φυλλομετρητη μας στην εσωτερικη διευθυνση του δρομολογητη μας (που συνηθως ειναι ειτε 192.168.0.1 ή 192.168.1.1 αναλογα με τον δρομολογητη) και εκει βαζουμε το ονομα χρηστη (συνηθως ειναι admin) και τον κωδικο ασφαλειας. Μολις μπουμε μεσα ακολουθουμε τα βηματα που βλεπουμε στην σελιδα του https://portforward.com για τον δρομολογητη μας.

  • Κανουμε Κλικ στο συνδεσμο “Forwarding”

  • Κανουμε κλικ στο κουμπι “Add New” στην ενοτητα “Virtual Server”

  • Και στα πεδια που θα εμφανιστουν, εισαγουμε στο Service port τον αριθμο της θυρας, (πχ 3389 για το RDP), στο πεδιο “IP Address” την διευθυνση του υπολογιστη που τρεχει το λογισμικο διακομιστη (πχ 192.168.1.101) στο πεδιο “Protocol” εκει βαζουμε ειτε ALL (που σημαινει TCP και UDP), ειτε TCP, ειτε UDP. Στο Πεδιο Status βαζουμε ή Enabled για να το ενεργοποιησουμε ειτε Disabled για να το απενεργοποιησουμε οταν δεν το χρειαζομαστε… και στο τελος κανουμε κλικ στο “Save” για να αποθηκευσουμε τις αλλαγες μας.

Για να δουμε αν η διαδικασια μας ειναι πρεπει να κανουμε εναν ελεγχο για το αν η θυρα μας ειναι ανοιχτη. Αυτον τον ελεγχο μπορουμε να τον κανουμε στην ιστοσελιδα https://www.whatismyip.com/port-scanner/ στην οποια μπορουμε να ελεγξουμε αν η συγκεκριμενη θυρα που ανοιξαμε με το port forward ειναι ανοιχτη ή οχι.

Συμπερασμα

Το Port Forward ειναι ενα εργαλειο πολυ συμαντικο, πολυ χρησιμο αλλα αν δεν το χρησιμοποιησουμε με υπευθυνοτητα και καθαρο μυαλο ειναι παρα παρα πολυ επικυνδινο. Πρεπει πριν καταφυγουμε σε αυτες τις λυσεις να εχουμε ξεκαθαρισει οτι οντως χρειαζομαστε port forward γιατι αν τα κανουμε φιρδυν μιρδυν τοτε εινα σαν να δινουμε τα κλειδια του σπιτιου μας σε ξενους.

11 «Μου αρέσει»

Ένα σημαντικό ζήτημα σε περίπτωση που γίνουν επιτυχώς όλα τα βήματα, αλλά πάλι η θύρα μας δεν φαίνεται ανοιχτή από το port scanner , είναι το αν ο πάροχος επιτρέπει να κάνουμε port forward, δηλαδή αν έχει ορίσει την ip μας ως private ή public. Σε περίπτωση λοιπόν που η θύρα δεν ανοίγει, παίρνουμε ένα τηλέφωνο την τεχνική υποστήριξη του παρόχου μας και λέμε ότι θέλουμε να κάνουμε port forward. Ο τεχνικός θα μας ρωτήσει αν θέλουμε να οριστεί η IP μας ως public, αν δεν είναι ήδη και με τη συγκατάθεση μας θα κάνει τις αντίστοιχες ενέργειες.

4 «Μου αρέσει»

OK αυτο μου ακουγεται λιγο καινουργιο… γιατι απ’οτι ξερω… και αν ειμαι λαθος παιδια διορθωστε με (μπορει να μου εχει ξεφυγει κατι στην θεωρια μου και τις γνωσεις μου)… η IP του δρομολογιτη (του router, που παιρνει απο τον παροχεα της συνδεσης μας στο Internet), ειναι παντα public απλα μπορει να μην αφηνει ο δρομολογιτης τα pings να απαντηθουν οταν προερχονται απο αλλους υπολογιστες που δεν ειναι στο εσωτερικο μας δικτυο. Μηπως με private ή public αναφερονται σε στατικες και δυναμικες IP διευθυνσεις και μας εχουν λιγο μπουρδουκλωσει;

Οταν πηγαινουμε σε καποιον διακομιστη για να δουμε μια ιστοσελιδα η IP του δρομολογιτη μας φαινεται και οχι η IP του υπολογιστη μας στο εσωτερικο μας δικτυο.

Κατα την εμπειρια μου τα παρακατω σεναρια ειναι αυτα κατα τα οποια δεν θα βρει καποιος ανοιχτη θυρα μετα απο port forward:

  • το λογισμικο διακομιστη να μην ειναι σεταρισμενο στην θυρα που χρησιμοποιησαμε για το port forward
  • το λογισμικο διακομιστη να μην τρεχει
  • ο δρομολογιτης να απαιτει παραπανω βηματα για να εχουμε επιτυχημενο port forward.
  • ο παροχεας να μην επιτρεπει την θυρα (για λογους οικονομικους ή ασφαλειας) και να την κλεινει αυτοματα.

Το λέω από προσωπική εμπειρία όταν είχα προσπαθήσει να κάνω port forwarding για να στήσω ssh στο σταθερό μου, ώστε να μπαίνω από λάπτοπ. Δεν είμαι ακριβώς σίγουρος τι διαφορά έχουν μια private και μια public για τον πάροχο, αλλά σίγουρα είναι άλλο πράγμα από το static/ dynamic.

Συγκεκριμένα τότε είχα Wind, είχα κάνει όλα τα βήματα και ήμουν σίγουρος πως από πλευράς μου δεν είχα κάποιο λάθος. Τους παίρνω λοιπόν τηλεφωνώ και το πρώτο πράγμα που μου λέει είναι πως ή Ιp είναι private και αν θέλω να την κάνω Public, άλλιως το forwarding δεν θα δουλέψει. Με το που την κάνει public χωρίς να αλλάξω παραπάνω ρυθμίσεις δούλεψε κανονικά.

Παράλληλα όμως η διευθυνσιοδοτηση ήταν δυναμική πράγμα που δεν άλλαξε. Για στατική IP συνήθως οι πάροχοι χρεώνουν επιπλέον. Για private/ public δεν έχει κάποια επιβάρυνση.

Θυμασαι μηπως τι IP ειχες οταν ειχες private IP με την Wind και τι IP οταν την εκανες Public? Επησεις τι δρομολογητη ειχες με την Wind?

Θα σε γελάσω για τις Ip, γιατί δεν θυμάμαι. Ένα tp-link δούλευα που ήταν σκέτο ρούτερ και ένα δεύτερο tp-link ως modem σε bridge mode (γιατί δεν είχε διαχείριση arp binding, οπότε αγόρασα το πρωτο για να έχω το NAT από εκείνο).

Τώρα για την wind φαντάζομαι πως ίσως κρατάνε κάποιους πελάτες πίσω από κάποιο δικό τους ρούτερ ή κάτι τέλος πάντων (υποδίκτυο) στο οποίο τους δίνουν private IP και τους βγάζουν έξω όλους μαζί σε μια IP. Ενώ αν ζητήσεις να σου δίνουν ξεχωριστά μια public και να σε βγάζουν έξω κατευθείαν. Οπότε αν υπάρχει άλλη ένα επίπεδο δικτύου ενδιάμεσα για αυτό να κόβει το port forwarding. Βέβαια μόνο εικασίες μπορώ να κάνω.

OK Κατι τετοιο βγαζει νοημα (εστω και σαν εικασια).

1 «Μου αρέσει»