Xiaomi Summer Salles 2019 InfoQuest

Techblog Tutorials: Έξυπνο σπίτι – απομακρυσμένη πρόσβαση με port forwarding [Part III]

0

Techblog Tutorials logo

Στο πρηγούμενο Techblog Tutorial δείξαμε το βασικό configuration για το Raspberry Pi 3 αλλά και το Home Assistant, συνδέσαμε την λάμπα Xiaomi Yeelight Color και δημιουργήσαμε τον πρώτο αυτοματισμό.

Στο τρίτο και στο τέταρτο part θα ασχοληθούμε με την απομακρυσμένη πρόσβαση. Θα αναλύσουμε 2 τρόπους (ένα σε κάθε part) με τους οποίους μπορούμε να επικοινωνήσουμε με το Home Assistant από οποιοδήποτε δίκτυο. Σε αυτό το part θα δούμε το port forwarding.

Στόχος
Eξοικίωση με την βασική λειτουργία του ρούτερ και χρήση του port forwarding για απομακρυσμένη πρόσβαση στο Home Assistant.

Ας δούμε την βασική λειτουργία του ρούτερ μας με λίγα λόγια:

Techblog Tutorials Part III 2

Το ρούτερ έχει μια λειτουργία που ονομάζεται Network Address Translation ή NAT. Μέσα στο δίκτυό σας, οι υπολογιστές έχουν διευθύνσεις, όπως το 192.168.0.44. Το ρούτερ εκχωρεί αυτόματα μια τέτοια διεύθυνση σε κάθε υπολογιστή που είναι συνδεδεμένος και αυτές οι διευθύνσεις χρησιμοποιούνται για να επικοινωνούν οι υπολογιστές στο δίκτυό μεταξύ τους αλλά και με το ρούτερ. Διαθέτει ξεχωριστό interface που το συνδέει με το διαδίκτυο και αυτό το interface έχει μια διαφορετική διεύθυνση (12.34.56.78 στην εικόνα) η οποία δίνεται από τον πάροχο σας και χρησιμοποιείται για να επικοινωνήσει με άλλους υπολογιστές στο διαδίκτυο.

Κάθε φορά που ένας υπολογιστής στο εσωτερικό του δικτύου σας θέλει να συνδεθεί με έναν υπολογιστή στο διαδίκτυο, αποστέλλει την αίτηση σύνδεσης στο router και στη συνέχεια, το ρούτερ λαμβάνει αυτό το αίτημα σύνδεσης και αλλάζει την τοπική διεύθυνση του υπολογιστή σας στην IP που σας έδωσε ο πάροχος, έτσι ώστε η απάντηση να σταλεί στο ρούτερ. Στη συνέχεια, σημειώνει σε ένα πίνακα (πίνακας NAT) ότι η σύνδεση ξεκίνησε μεταξύ των δύο υπολογιστών.

Όταν έρθει η απάντηση από τον απομακρυσμένο υπολογιστή, το ρούτερ κοιτάζει τον πίνακα ΝΑΤ, βλέπει ότι ή σύνδεση ξεκίνησε από τον προσωπικό μας υπολογιστή και αλλάζει την διεύθυνση που θα μεταφερθεί η απάντηση, χρησιμοποιώντας την τοπική IP του υπολογιστή μας. Με αυτόν τον τρόπο, το ρούτερ ξέρει κάθε φορά σε ποιον υπολογιστή να προωθήσει τις απαντήσεις.

Port forwarding

Techblog Tutorials Part III 3

Εξηγήσαμε παραπάνω την βασική λειτουργία του ρούτερ μας. Τι γίνεται όμως στην περίπτωση που φτάσει ένα αίτημα αίτημα (είτε αυτό είναι απλό http request, αίτημα από video game ή application) στο ρούτερ μας και το ρούτερ μας δεν γνωρίζει σε ποιον υπολογιστή να το προωθήσει;

Το ρούτερ δεν γνωρίζει που να προωθήσει το αίτημα, γιατί αυτό ξεκίνησε εκτός του δικτύου μας και δεν περιέχει την τοπική διεύθυνση κάποιου υπολογιστή μέσα στο δίκτυο μας.

Αυτό το πρόβλημα έρχεται να λύσει το port forwarding.

Στην δική μας περίπτωση, θέλουμε να μπορούμε να στέλνουνε ένα συγκεκριμένο αίτημα στο ρούτερ μας και αυτό να το προωθεί στο Raspberry Pi 3 ώστε να μπορούμε να έχουμε πρόσβαση στο Home Assistant.

Για να γίνει αυτό, το ρούτερ πρέπει κάπως να γνωρίζει ότι αυτό το αίτημα πρέπει να προωθηθεί στο RPi3. Για αυτό το σκοπό, χρησιμοποιούμε ένα port. Το port δεν είναι κάτι άλλο πέρα από ένα νούμερο, το οποίο όμως λειτουργεί σε αυτή τη περίπτωση σαν δείκτης του που πρέπει να μεταφερθεί το αίτημα.

Το port forwarding στο ρούτερ, σας επιτρέπει να ορίσετε ένα port ή ένα εύρος από ports και μία IP ενός τοπικού υπολογιστή. Όλα τα αιτήματα σε αυτό το port (ή σε αυτό το εύρος) θα προωθούνται στον υπολογιστή που έχει αυτήν την διεύθυνση.

Προσοχή: Το port forwarding δεν είναι η πιο ασφαλής μέθοδος. Όταν ανοίγουμε port, το δίκτυο μας γίνεται πιο ευάλωτο σε επιθέσεις. Αν σας απασχολεί, θα μπορούσατε να κωδικοποιήσετε την σύνδεση σας με το Let’s Encrypt.

Domain Name System (DNS)

Techblog Tutorials Part III 4

Στο κομμάτι που εξηγήσαμε τα βασικά του ρούτερ, αναφερθήκαμε στην IP που μας δίνει ο πάροχος. Αυτή η IP είναι dynamic (οι πάροχοι προσφέρουν και static IP αλλά συνήθως χρεώνεται), δηλαδή υπο προυποθέσεις, μπορεί να αλλάξει, όπως για παράδειγμα όταν κάνουμε restart το ρούτερ μας. Αυτό δημιουργεί πρόβλημα για την δική μας περίπτωση μιας και θέλουμε να ξέρουμε κάθε στιγμή σε ποια IP θα στέλνουμε το αίτημα μας για να επικοινωνήσουμε με το ρούτερ μας και κατ’επέκταση με το RPi3 και το ΗΑ.

Στην πραγματικότητα, δεν χρησιμοποιούμε IPs για να πλοηγηθούμε στο Ιντερνετ, αλλά domain names. Το techblog.gr είναι ένα domain name και αντιστοιχεί σε μία IP. Όταν πληκτρολογούμε την διεύθυνση μιας ιστοσελίδας το domain name μεταφράζεται σε IP. Ποιος κάνει αυτή τη μετάφραση; Το DNS.

Το DNS είναι ένα σύστημα που χρησιμοποιείται για την μετάφραση των domain names σε IPs. Αν κάποιος έχει static IP από τον πάροχο του, μπορεί να επικοινωνεί πάντα χρησιμοποιώντας αυτήν την συγκεκριμένη IP. Τι γίνεται όμως όταν η IP αυτή μπορεί να αλλάζει όπως στην δική μας περίπτωση; Πως θα ξέρει ο DNS ότι η IP του ρούτερ μας έχει αλλάξει;

Με Dynamic DNS. Το DDNS είναι μία μέθοδος με την οποία ανιχνεύουμε την αλλαγή της IP στο ρούτερ μας και ενημερώνουμε το domain name μας με την καινούρια IP. Για να γίνει αυτό, μας δίνεται ένα domain name και αντιστοιχίζεται στην IP μας ενώ στον υπολογιστή εγκαθιστούμε μία εφαρμογή η οποία αυτό που κάνει ουσιαστικα΄είναι να ελέγχει αν η IP έχει αλλάξει. Αν έχει αλλάξει, ενημερώνει τον domain name με την καινούργια IP. Μία υπηρεσία σαν αυτή, που προσφέρεται δωρεάν, είναι το DuckDNS.

Techblog Tutorials Part III 5

Πάμε να δούμε πως ενεργοποιούμε το port forwarding και να ρυθμίσουμε το DuckDNS:

Step 1: Ενεργοποίηση Port forwarding
Ανάλογα με το ρούτερ, τo port forwarding μπορεί να βρίσκεται σε διαφορετικά σημεία, κάτω από διαφορετικές ρυθμίσεις. Μπορείτε να βρείτε πως το ενεργοποιείτε για το δικό σας ρούτερ εδώ.

Το μόνο που πρέπει να κάνετε για την δική μας περίπτωση είναι να διαλέξετε ένα port (π.χ 8123) και να βάλετε σαν destination IP (μπορεί να ονομάζεται διαφορετικά στο δικό σας ρούτερ) την IP του RPi3.

Step 2 – Eγγραφή στο DuckDNS
Κάνουμε εγγραφή χρησιμοποιώντας έναν από τους τρόπους που μας δίνονται στο DuckDNS.

Step 3 – Διαλέγουμε domain name
Όταν ολοκληρώσουμε την εγγραφή μας, δίνεται η δυνατότητα να προσθέσουμε domain name. Διαλέγουμε το όνομα που επιθυμούμε. Αυτό θα είναι το όνομα που θα χρησιμοποιούμε στον browser μας για να συνδεθούμε στο HA.

Techblog Tutorials Part III 6

Step 4 – Εγκατάσταση DuckDNS στο Raspberry
Aκολουθούμε τον οδηγό που βρίσκουμε εδώ. Για να εμφανιστεί ο οδηγός, επιλέγουμε το linux cron και επιλέγουμε το domain name που δηλώσαμε στο step 2, στο first step όπως φαίνεται στην εικόνα:

Techblog Tutorials Part III 7

Όταν επιλέξετε το domain σας, εμφανίζεται ο οδηγός:

Techblog Tutorials Part III 8

Ολοκληρώσαμε το port forwarding, ρυθμίσαμε το duckdns και πλέον μπορούμε να έχουμε πρόσβαση στο HA στη διεύθυνση myname.duckdns.org:port όπου myname βάζετε το domain name που δηλώσατε στο duckdns και όπου port, το port που χρησιμοποιήσατε στο port forwarding.

Στο επόμενο Part (IV) θα επανέλθουμε στο remote access, δείχνοντας πως μπορούμε να το πετύχουμε χρησιμοποιώντας το Tor για μεγαλύτερη ασφάλεια.

Ερωτήσεις και παρατηρήσεις όπως πάντα στα σχόλια!

Techblog Tutorials: Έξυπνο σπίτι, απομακρυσμένη πρόσβαση με Tor [Part IV]

Σχόλια

avatar
  Παρακολουθήστε τα σχόλια  
Να ειδοποιηθώ όταν

Αυτός ο ιστότοπος χρησιμοποιεί cookies για να βελτιώσει την εμπειρία χρήσης. Αποδοχή Περισσότερα