Συνδεση μέσω ZeroTier

καλησπέρα και ξεκινώντας αν δεν ειναι η θεση της εδω(η αναρτηση μου) παρακαλώ να τις αλλαξετε θέση ή να την σβήσετε, ευχαριστω.
Το θέμα ειναι η σύνδεση μεταξύ δύο PC (mint) μέσω client ZeroTier, εχει περαστει και στα δύο , πανευκολα ο client μεσω terminal και υπάρχει επικοινωνία μεταξύ των δύο PC.(γινονται ping αμφότερα)
Εχω ψαξει σχεδόν παντού, αλλά ακρη προς το παρών δεν έβγαλα, μεχρι και ο “κος Shalim” μας δουλευει… :D
Αυτό ομως που θελω να κανω και ξέρω ότι γίνεται, ειναι να συνδέσω (ολοκληρα τα δυο διαφορετικά δύκτια μεταξύ τους) Αν υπήρχε Mikrotik με ARM cpu ή καποιο RasberyPi θα γινόταν , αμεσα, αλλά δεν υπάρχει :frowning: , παρακατω σας δειχνω με την δικιά μου λογική ;) ενα σχημα του συγκεκριμένου δυκτίου.
Καποιος “φίλος” μου ειπε κάτι για Route σε καθε ξεχωριστό ρουτερ με Gateway την απεναντι ΙΡ του ZeroTier, πραγμα που δοκιμασα , αλλα δεν δουλεψε, ισως να μην το καταλαβα και καλά εγω βεβαια…
Αν μπορεί κανεις και εχει τις γνωσεις, και φυσικά θελει , θα τον ευγνομονούσα, γιατι ειναι η μονη λύση που θα δουλεψει για αυτο που θελω, δεν δουλευει ουτε η απευθείας συνδεση μεσω ρουτερ, ουτε VPN (L2TP ή OpenVPN) και εννοείτε δεν θέλω να μπαινω συνεχώς με VNC ή TeamViewer ή AnyDesk.
net
Για οποιον δεν καταλαβε θελω απο το PC1 αφου συνδεομαι μεσω του PC2 ή το αντίθετο, με το δυκτιο ZeroTier, να μπορώ να διαχειρίζομαι ολοκληρο το απέναντι δύκτιο και τα συγκεκριμένα Ρουτερ.
Ευχαριστώ

Δεν γνωρίζω απο ZeroTier αλλά αντι να θέσεις το gateway δοκίμασε με την route(8)

Όλη η υπόθεση έγκειται στο κομμάτι της δρομολόγησης και ένα πολύ καλό εργαλείο για την δουλειά αυτή είναι το route όπως αναφέρει και ο @Asfodelus. Ακολουθεί σεντόνι επεξήγησης και παροχής λύσης στο πρόβλημα. (Προειδοποίησα για το σεντόνι!)

Μικρή εξήγηση:

Κάθε πακέτο στο δίκτυο για να καταφέρει να φτάσει στην επιθυμητή τοποθεσία πρέπει:

  1. να ξέρει την διαδρομή για να πάει (στην περίπτωσή σου τις IP)
  2. να είναι ελεύθερη η διαδρομή αυτή (να μην την μπλοκάρει κάποιο firewall)
  3. εάν υπάρχει ενδιάμεσο hop μέχρι να φτάσει στον προορισμό, να ξέρει να επιστρέψει το πακέτο πίσω στην σωστή IP.

Πιο συγκεκριμένα:

Το PC σου θέλει να στείλει ένα πακέτο σε ένα άλλο PC στο τοπικό δίκτυο. Σε περίπτωση που ανήκουν στο ίδιο subnet κοιτάει να δει στο ARP Table την MAC address του άλλου υπολογιστή για να δρομολογηθεί το πακέτο για εκεί. Σε περίπτωση όμως που βρίσκεται σε άλλο δίκτυο τότε ανεβαίνει ένα επίπεδο (επίπεδο 3 δικτύου) και στέλνει σε μία IP και όχι σε MAC. Αυτό όμως απαιτεί έναν router ο οποίος μετά με την σειρά του να ξέρει που να προωθήσει το πακέτο.

Επί του θεωρητικού πρακτέου:

Συνδέονται τα δύο pc μέσω του vpn και βλέπουν κανονικά το ένα το άλλο. Μέχρι εδώ όλα καλά.
Από εκεί και πέρα αν θέλεις να στείλεις από το pc1 σε έναν εκτυπωτή που ανήκει στο δίκτυο 2, θα πρέπει να γίνει αυτό μέσω του pc2. (νομίζω αρκετά κατανοητό μιας και είναι ο μόνος τρόπος επικοινωνίας των 2 δικτύων).
Έστω λοιπόν τα εξής.
PC1_IP: 192.168.192.51
PC2_IP: 192.168.192.209
Printer_IP(on_net_2): 192.168.1.32

Ελπίζω το PC_1 να μην έχει σχέση με τοπικές διευθύνσεις του δικτύου 192.168.1.0/24 γιατί μετά περιπλέκεται το πράγμα.

Αυτό λοιπόν για να επιτευχθεί πρέπει να στείλει ένα πακέτο η 192.168.192.51 στην 192.168.1.32.
Αν δώσεις την εντολή ip r (συντόμευση του ip route show) θα δείς τα routes που έχει το pc σου. Λογικά δεν έχει κάποιο route για να “φτάσει” στην άλλη διεύθυνση. Οπότε πρέπει να δώσεις την εντολή:

ip route add 192.168.1.0/24 via dev tunX

Όπου tunX το interface που φτιάχνει VPN.
Τώρα λοιπόν ξέρει το pc σου πως να στείλει ένα πακέτο στο απέναντι δίκτυο. Το στέλνει μέσω το PC2. Το PC2 με την σειρά του βλέπει που πρέπει να στείλει το πακέτο, και επειδή έχει και μία local ip σε εκείνο το δίκτυο, το routing table του έχει ήδη την διαδρομή για να φτάσει στον εκτυπωτή.

Τώρα αρχίζουν τα ζόρια!
Το πακέτο έφτασε μια χαρά εκεί που έπρεπε! Πρέπει τώρα να βρει τον δρόμο να γυρίσει πίσω.

Ο εκτυπωτής βλέπει διεύθυνση αποστολέα την διεύθυνση 192.168.192.51. Αυτή η διεύθυνση όμως δεν είναι ούτε στο τοπικό του δίκτυο ούτε υπάρχει στο routing table του… Άρα προσπαθεί να στείλει την απάντηση σε αυτή την διεύθυνση αλλά επειδή δεν ξέρει την διαδρομή, το πακέτο δεν θα πάει ποτέ.

Μία λύση στο πρόβλημα

Και γράφω μία γιατί προφανώς όπως στις περισσότερες περιπτώσεις δεν υπάρχει μοναδική λύση.

Όταν το PC2 θα στείλει το πακέτο στον εκτυπωτή, θα “πειράξει” την διεύθυνση αποστολέα και θα βάλει στην θέση της την δική του. Έτσι ο εκτυπωτής θα ξέρει να επιστρέψει τα πακέτα σε αυτόν.

Το PC2 λοιπόν θα δουλέψει ως router στην περίπτωσή μας.
Για να γίνει αυτό πρέπει:

  1. Να επιτρέπει ο kernel την προώθηση δικτυακών πακέτων.
  2. Να επιτρέπει το firewall την προώθηση πακέτων για τις διευθύνσεις που θέλεις.
  3. Να δηλώνεται στο firewall η αλλαγή της διεύθυνσης.

Προώθηση πακέτων

Για να δεις αν είναι ενεργοποιημένη δίνεις την εντολή:

cat /proc/sys/net/ipv4/ip_forward

By default οι περισσότερες διανομές το έχουν απενεργοποιημένο, άρα θα δεις την τιμή 0.

Για να το ενεργοποιήσεις υπάρχουν οι ακόλουθοι τρόποι:

sudo sysctl -w net.ipv4.ip_forward=1

ή

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

ή

sudo nano /etc/sysctl.conf

και μέσα στο αρχείο που θα ανοίξει βάζεις την παρακάτω καταχώρηση.

net.ipv4.ip_forward = 1

Αν επιλέξεις το τελευταίο τρόπο, τότε κάνεις την αλλαγή μόνιμη και όχι μόνο για το running session. Για να ισχύει όμως ΚΑΙ από το running session δίνεις και την παρακάτω εντολή:

sudo sysctl -p

Firewall forwarding

Για να μπορεί να κάνει forward τα πακέτα το firewall πρέπει να δώσεις:

sudo iptables -A FORWARD -j ACCEPT

το οποίο όμως ΔΕΝ το συνιστώ μιας και θα προωθεί ΟΠΟΙΟΔΗΠΟΤΕ πακέτο πάει σε αυτό το μηχάνημα. Για να είναι πιο specific και ασφαλή τα πράγματα μπορείς να δώσεις:

sudo iptables -A FORWARD -s 192.168.192.51 -j ACCEPT

και για το κομμάτι της επιστροφής:

sudo iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT

IP Masquerading

Τέλος πρέπει να αλλάξει η διεύθυνση στο πακέτο.

sudo iptables -t NAT -A POSTROUTING -s 192.168.192.51 -o LOCAL_INTERFACE -j MASQUERADE

όπου local interface το interface που έχει την local ip (πχ. 192.168.1.x)
Μετά και από αυτό το βήμα θα πρέπει το PC_1 να μπορεί να στείλει σε όλες τις IP ανήκουν στο δίκτυο 192.168.1.0/24 και να λάβει πίσω, όλα μέσω του VPN και του forwarding που ρυθμίσαμε.

ΟΛΕΣ ΟΙ ΑΛΛΑΓΕΣ ΕΙΝΑΙ ΠΡΟΣΩΡΙΝΕΣ ΚΑΙ ΣΕ ΕΠΟΜΕΝΟ BOOT ΘΑ ΧΑΘΟΥΝ ΚΑΙ ΔΕΝ ΘΑ ΔΟΥΛΕΥΕΙ ΑΥΤΌ ΠΟΥ ΦΤΙΑΧΤΗΚΕ. Για να γίνουν μόνιμες μπορείς να γράψεις ένα μικρό script που να τα κάνει αυτόματα όλα αυτά.

Οι παρούσες οδηγίες είναι ανεξάρτητες του ZeroTier και μπορούν να εφαρμοστούν για να ενώσουν οποιαδήποτε 2 δίκτυα.

Με την παραπάνω διαδικασία έχεις κάνει router το pc2, άρα έχει πρόσβαση το pc1 στο net2. Αν θέλεις να γίνεται και το αντίστοιχο για το pc2 και net1 πρέπει να κάνεις αντίστοιχα αυτό στο pc1.

Πιθανόν το zero tier να έχει κάποια “built in” ιδιότητα που να υλοποιεί τα παραπάνω και να μην χρειάζεται να τα κάνεις the hard way. Παρ όλα αυτά ακόμα και έτσι καλό είναι να ξέρεις τι γίνεται για να καταλαβαίνεις, και σε περίπτωση που κάτι δεν δουλεύει να μπορείς να κάνεις ένα στοιχειώδες debugging.

Με χαρά να απαντήσω στην απορία είτε δική σου είτε κάποιου που το διάβασε αυτό. Γενικά είχα στο μυαλό μου να γράψω έναν οδηγό γι αυτά, και ίσως πάρω τμήματα αυτής της απάντησης και να το κάνω όταν βρω χρόνο.

Σόρρυ αν κούρασα με τα τόσα πολλά! Ελπίζω να βοήθησα!

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

1ον ΣΕ ΕΥΧΑΡΙΣΤΩ !!!
2ον Respect , τοσο για τις γνώσεις σου, όσο και για τον προσωπικό σου χρόνο που αφιέρωσες γαι να απαντήσεις, σε έναν αγνωστο που ψάχνεται για κάτι.
3oν Οντως έχει το ιδιο το ZeroTier εντός του control του, ενα (μικροσύστημα Route) , αλλά ότι και να έχω κάνει, παρόλο που οι οδηγίες ειναι πανευκολες) δεν δούλεψε. πχ έχει σημειο που μπορείς να κανεις μονιμο route απο μια διευθυνση Ζ/Τ σε μια άλλη διευθυνση του δικτύου σου μέσω ενός G/W.

Πάντως όσο το ψάχνω, το συγκεκριμένο σύστημα, (ZeroTier) τόσο καταλαβαίνω τις δυνατότητές του και πόσο μπροστά είναι απο αλλα (τυπου VPN) συστήματα, απλά πρέπει να το κατανοήσω πλήρως, αλλιώς θα “πληρώσω” μαλλον για να πάρω ενα mikrotik με ARM cpu, και θα τελειώσει το θέμα.
Και ξανά σε ευχαριστώ πολύ, όσο το αν θα τα καταφέρω, θα δείξει … :D

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

@Anthemous τα pc1 και pc2 είναι στο ίδιο zero tier network (με το ίδιο id);
Πώς θέλεις να συνδεθείς από το ένα pc στο άλλο, με γραφικό περιβάλλον, ή μέσω cli;

Απλά, ειναι συνδεμένα τα 2 PC , στο ιδιο εννοείτε ZeroTier network(Στο ίδιο δηλαδή ID) σε διαφορετικές πόλεις ομως.
Γινονται ping , μεταξύ τους, αλλά μεχρι εκεί, εγω θα ηθελα να να εχω πρόσβαση στο υπόλοιπο δύκτιο, πχ σε ενα router ή εκτυπωτή ή άλλο PC. Ειτε με ssh είτε με το “winbox του mikrotik” είτε με web interface σε ενα απλό ρουτερ , παρόχου.Κάπου σε ενα forum ειδα μια περιπτωση που ταιριάζει πολύ με την δικιά μου, αλλά ενώ το δοκίμασα, δεν μου δούλεψε, παρακατω σου εχω την εικόνα, απο εκει:


Ευχαριστώ

Πρόσφατα χρειάστηκε να μπω στο Web interface του router των γονιών που είναι σε άλλη πόλη.

  1. Είχα ήδη το pc στο πατρικό κουμπωμένο στο zerotier

  2. Είχα NoMachine στο PC τους

Όποτε το μόνο που χρειάστηκε είναι να ανοίξω το δικό μου NoMachine, να συνδεθώ στο PC και εκει να ανοίξω τον browser να δω το ρουτερ και να ρυθμίσω και τον εκτυπωτή.

Το ίδιο έκανα και για το laptop που κάνει αυτόματα backup σε ένα απομακρυσμένο raspberry pi. Είναι κουμπωμένο σε zerotier, και μέσω του Rpi ρύθμισα ένα δίσκο που είναι κουμπωμένο σε Router

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

Μια μικρή προσθήκη: αυτό γίνεται και χωρίς script. Πχ σε ubuntu υπάρχει το iptables-persistent, το οποίο μετά την εγκατάσταση φορτώνει τους ίδιους κανόνες με κάθε boot.

sudo apt install iptables-persistent
3 «Μου αρέσει»

Αφού θέλεις να το προσθέσουμε, να το πούμε και αυτό σωστά μήπως κάποιος θέλει να το ακολουθήσει.

Το όνομα του πακέτου είναι:

iptables-persistent

Το πακέτο το χρησιμοποιούσα σε κάποιους server μέχρι που ψάχτηκα να δω λίγο τι κάνει. Είναι απλά ένα systemd service το οποίο πάνω κάτω τρέχει την εντολή.

iptables-restore < /etc/iptables.rules

Εσύ με την εντολή iptables-save μπορείς να σώσεις σε όποιο αρχείο θέλεις τους κανόνες και μετά “λες” στην iptables-restore να διαβάζει από εκείνο το αρχείο.

Επίσης έχει και μία συνθήκη σε περίπτωση που κάνεις αλλαγές την ώρα που τρέχει το μηχάνημα ώστε να δώσεις systemctl reload ... και να διαβάσει και τους καινούργιους κανόνες. (Να κάνει δηλαδή flush τους παλιούς και ξανά restore το καινούργιο αρχείο.
Επίσης σε άλλες διανομές (π.χ. Arch) το πακέτο υπάρχει ήδη (όχι με αυτή την ονομασία) και δουλεύει απλά ενεργοποιώντας το.

Καλά έκανες και το επεσήμανες γιατί κάποιος που δεν είναι σε θέση να τα κάνει χεράτα μπορεί να εξυπηρετηθεί από αυτά τα services μια χαρά.

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

Όπως αναφέρει και ο @cerebrux, για την απομακρυσμένη πρόσβαση με την εφαρμογή No Machine(mx), αντίστοιχα:

Αν όλες οι συσκευές είναι συνδεδεμένες στο ίδιο zerotier network (id) και το κουτάκι επιλογής είναι “τσεκαρισμένο” μπορούμε να συνδεθούμε απομακρυσμένα είτε με ssh, είτε με xrdp, x2goserver κλπ, κλπ.

Παρακάτω έχω συνδεθεί από την εργασία στο android κινητό μου, με την εφαρμογή afreerdp του fdroid, στον “διακομιστή” dietpi του σπιτιού μου και στο ρούτερ…

Η χαρά του linux!!!
Η ίδια διαδικασία βέβαια ισχύει και για τα windows.

Επίσης έχω εγκαταστήσει την εφαρμογή για android του zerotier από το play store.

Επομένως ίσως χρειάζεται κάποια ρύθμιση, ή επανεγκατάσταση ο xrdp server(remmina)…

Και το προσωπικό σου “cloud” είναι έτοιμο!
(Ευχής έργον…Κάποιος από το φόρουμ που γνωρίζει καλύτερα το DietPi θα μπορούσε να αναλύσει τα πλεονεκτήματα του.)

Στιγμιότυπα από android smartphone:


Εικόνα 1. DietPi (Bullseye 11) σε rpi4.


Εικόνα 2. DietPi lxde.


Εικόνα 3. Ρυθμίσεις εφαρμογής aFreeRDP.


Εικόνα 4. Εφαρμογή zerotier one στο play store.


Εικόνα 5. Διεπαφή δρομολογητή.


Εικόνα 6. Σύνδεση ssh μέσω Termux εφαρμογής android από το F-droid.(παράδειγμα προς αποφυγήν η σύνδεση με τον χρήστη root)

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

Να είσαστε καλά όλοι σας που προσπαθείσατε να απαντήσετε στην ερώτηση, αλλά μαλλον ή εγώ (το πιο πιθανών ;) ) να μην τα εξήγεισα καλά ή εσεις να μην τα καταλάβατε…
Ειπα οτι η συνδεση μεταξύ των δύο PC γινεται κανονικά, ειτε μεσω SSH , ειτε μεσω οποιούδηποτε Remote Controle, (οπως και να λέγεται , ειτε ειναι δωρεαν ειτε σαν το teamViewer…) To θεμα ειναι να μην χρειαζεται να μπαινω πρώτα στο PC και μετά στα αλλα Devices, αλλά κατευθείαν στα άλλα Devices. Απλά το γνωρίζω οτι θα πρεπει να ειναι ανοιχτό το PC, αλλά μονο σαν (γεφυρα, μονο σαν βοηθός για τον client), πχ χθες στήνοντας εναν FTP server και client αντίστοιχα στα δυο PC , δεν αντιμετώπισα ουτε ενα πρόβλημα, και ειχα και καλή ταχύτητα).
Θα το πώ ξανά και τελευταια φορά για να μην σας ζαλίζω ;)
Αν γίνεται να ελεγχω χωρις να μπαινω πρωτα με οποιονδήποτε τροπο στο PC,(αφορά πιο πολύ αγαπητέ cerebrux, εσενα αυτο, γιατι καταλαβα πολύ καλά και προχθες και τωρα , τι θες να πεις, αλλα δεν ειναι το ζητούμενο αυτο), παρα μόνο στο webinterface του Router , είτε με το Winbox σε ενα Mikrotik. Aπλό και κατανοητό νομίζω και ξερω οτι γινεται , αλλά το πώς ειναι το θεμα… Ξανα Σας ευχαριστώ, για τις προσπάθειες.

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

Όντως, συγγνώμη για το typo. Έκανα edit και το ποστ επειδή υπήρχε κι άλλο ένα λάθος.

Το επεσήμανα περισσότερο επειδή προσωπικά θεωρώ καλύτερη πρακτική να χρησιμοποιούμε εργαλεία όταν υπάρχουν αντί να κάνουμε τα πράγματα με το χέρι. Βέβαια η συγκεκριμένη περίπτωση ίσως δεν είναι από τα καλύτερα παραδείγματα όσον αφορά το τι μπορεί να πάει στραβά. Προσωπικά έχει τύχει να μού την πουν στη δουλειά όταν κάνω πράγματα με το χέρι που μπορούν να γίνουν με εργαλεία :stuck_out_tongue:

Πέρα από αυτό, πολύ ωραία και ενημερωτικά ποστ πάντως.

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

Αν δεν μπορείς να κανεις εγκατάσταση κάποιο «client» η υπηρεσία στην συσκευή (ρουτερ, εκτυπωτής κλπ) το οποίο αναλαμβάνει να στέλνει στον zerotier cloud λογαριασμό κάθε λεπτό ένα «εδώ είμαι ζωντανός ακόμα κραταω την IP που μου έδωσες», δεν βλέπω άλλο τρόπο να το κανεις χωρίς ενδιάμεσο φορέα

Μου αρέσει να χρησιμοποιώ ωραία εργαλεία που μου λύνουν τα χέρια και δεν χρειάζεται να ανακαλύπτω τον τροχό από το μηδέν. Αλλά αυτό προϋποθέτει καλή κατανόηση της λειτουργίας του εργαλείου!

Για τον εξής απλούστατο λόγο(από προσωπική εμπειρία). Έχεις υλοποιήσει ένα σύστημα στην δουλειά σου που εξυπηρετεί 15.000 άτομα καθημερινά. Και ξαφνικά κάτι δεν δουλεύει! Έχεις τον διευθυντή σου πάνω από το κεφάλι σου να θέλει το λιγότερο δυνατό downtime και παράλληλα να θέλει να του εξηγήσεις τι έγινε και τι πήγε στραβά, και εσύ να είσαι κολλημένος σε κάποιο εργαλείο το οποίο λίγο πολύ είναι black-box… Το συγκεκριμένο ίσως να μην ήταν το καλύτερο παράδειγμα αλλά προτιμώ να καταλαβαίνω τι γίνεται για να είμαι σε θέση να αποκαθιστώ το γρηγορότερο βλάβες κλπ.

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

Ευχαριστώ όλους που προσπάθησαν και δώσαν καποιες λύσεις.
Η πραγματική λύση όμως για μένα και αυτο ακριβώς που είχα στο νού μου, εγινε πραγματικότητα τελικά με την αγορά (δυστυχώς) ενός mikrotik router με ARM cpu, το οποίο αντικατέστησε το προηγούμενο mikrotik που υπήρχε στο ένα ακρο του συγκεκριμένου δυκτίου.
Εγινε update στην version 7 , προσθέθηκε το extra πακέτο του zerotier , έγινε μια πανεύκολη εγκατάσταση με 3 εντολές στο terminal του mikrotik και εβουαλά , συνθέθηκαν οι δύο απομακρυσμένες πόλεις χωρίς κανένα πρόβλημα , λές και είναι στο διπλανό δωμάτιο, τόσο από ταχύτητα όσο και απο ασφάλεια , την λύση αυτη την βρίσκω πολύ καλή μεχρι στιγμής.
Τοσο το mikrotik , στειρίζεται σε Linux, όσο και το Zerotier που ειναι καθαρά υπηρεσία δυκτίου, δεν μπορώ να φανταστω ότι θα ειναι πουθενά αλλού εκτος από καποιο σύστημα Linux.
Κόστος Mikrotik Router με CPU Arm = 71€,
Χρόνος υλοποίησης, λιγότερο απο 10 λεπτά.
Και τέλος παρακάτω έχω ένα λινκ προς το site της ZeroTier , που αρκετοί ίσως βρούν ενδιαφέρων :
Zerotier
Ευχαριστω όλους σας για τις οποιεσδήποτε απαντησεις, το θέμα μου θεωρείται Λήξαν . :)

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

Αυτό το νήμα έκλεισε αυτόματα 2 ημέρες μετά την τελευταία απάντηση. Δεν επιτρέπονται πλέον νέες απαντήσεις.