Κυριακή 13 Σεπτεμβρίου 2015

Σύνδεση συσκευών στο διαδίκτυο διαμέσου τοπικού δικτύου. (Πρώτο άρθρο)

Ίσως ο τίτλος να μην λέει και πολλά αλλά δεν μου έβγαινε καλύτερος.

Μετά απο δοκιμές που έκανα με κάποια VMs(Virtual Machines)linux στον okeano, σκέφτηκα ένα σενάριο το οποίο σε καποιους μπορεί να φανεί ενδιαφέρον, ενώ σε κάποιους άλλους αδιάφορο. Αρχικά έφτιαξα ενα δίκτυο ακριβώς όπως είναι στην παρακάτω εικόνα......
Η ιδέα μου είναι η εξής: Να καταργήσω την απευθείας σύνδεση με ipv6 στο PC2, και διαμέσου του τοπικού δικτύου, το PC2 να μπορεί να έχει πρόσβαση στο internet με public ip την 83.212.1.100.
Πρέπει όμως να κάνουμε μια σύντομη ανάλυση για να δούμε πως θα λειτουργήσει το δίκτυο αυτό.
Το βασικό που πρέπει να αναφερθεί είναι οτι το PC1 πρέπει να παίξει το ρόλο router. Ποιός είναι ο ρόλος ενός router; Να δρομολογεί τα πακέτα απο ένα δίκτυο σε ένα άλλο και να κάνει ΝΑΤ. Και τι είναι το NAT;
O ISP (Internet Service Provider) προσφέρει  μόνο μια public ipv4 σε κάθε πελάτη, επειδή δεν γίνεται κάθε συσκευή να παίρνει την ίδια public ip γίνεται το εξης: To router παίρνει μια στατική ip (πχ192.168.1.1), δημιουργεί ένα τοπικό δίκτυο, π.χ 192.168.1.0/24 και είναι συνδεδεμένες δύο συσκευές. Η πρώτη συσκευή έχει την ip 192.168.1.2 και η δεύτερη συσκευή έχει την ip 192.168.1.3. Όταν μια συσκευή θέλει να συνδεθεί σε κάποιο εξωτερικό δίκτυο στέλνει ένα αίτημα στον router και του λέει για παράδειγμα, "Θέλω να με συνδέσεις με το Google (http://64.233.166.94:80)" άρα χρησημοποιεί τον router σαν gateway. O router αντικαθιστά την δικη του ip (192.168.1.1) με την public ip, δίνει και ένα τυχαίο port και συνδέει τη συσκευή στο δίκτυο.
π.χ.
From: 192.168.1.1,   Port: 12345
To:  64.233.166.94,  Port: 80
Μετά το ΝΑΤ
From: 83.212.1.100, Port: 54321
To: 64.233.166.94,  Port: 80


Πριν κάνουμε τη ρύθμιση FIREWALL στο PC1 πρέπει να κάνουμε enable forwarding απο linux kernel. Θα χρησημοποιήσουμε iptables rules.

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


Τα πακέτα θέλουμε να πηγαίνουν και να έρχονται απο το interface eth1 στο eth2 και αντίστροφα. Άρα στο chain FORWARD θα κάνουμε ACCEPT τα πακέτα με input eth1 και output eth2 αλλά και αντίστροφα.

iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT

iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT


Στη συνέχεια θα κάνουμε θα κάνουμε  ΝΑΤ και Masquerade.
iptables -t nat -A POSTROUTING -s 192.168.0.3 -o eth1 -j MASQUERADE
Με τον παραπάνω κανόνα κάνουμε NAT και λέμε το εξής "Οτι πακέτα έρχονται απο το PC με διεύθυνση 192.168.0.3 να πηγαίνουν στο network interface eth1"

Αφου τελειώσουμε με αυτό πάμε στο δεύτερο PC και του λέμε να δρομολογεί τα πακέτα στο PC1 το οποία την προκειμένη περίπτωση παίζει τον ρόλο του router. Άρα θα oρίσουμε το PC1 σαν gateway, με τον εξής κανόνα:

route add default gw 192.168.0.2 eth1

Και τώρα βλέπουμε  το PC2 να κάνει ping σε οποιοδήποτε εξωτερικό δίκτυο

Αυτό μπορεί να γίνει με παραπάνω απο 2 υπολογιστές αρκεί να προσέξετε τα rules και routes .

Ευχαριστώ!


Συντάκτης: Τσίρκας Γεώργιος

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου