Εμφάνιση αναρτήσεων με ετικέτα iptables. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα iptables. Εμφάνιση όλων των αναρτήσεων

Πέμπτη 17 Σεπτεμβρίου 2015

Βάζοντας και VPN μέσα.....

Στον προηγούμενο άρθρο περιγράψαμε  πως μπορεί μια συσκευή που είναι συνδεδεμένη  σε ένα τοπικό δίκτυο να βγει έξω στο διαδίκτυο από έναν τοπικό υπολογιστή που έχει πρόσβαση στο ίντερνετ κάνοντας τον να λειτουργεί σαν ρούτερ.
 Σήμερα, μιας και επιδίωξα να δώσω 1 δολάριο για να δοκιμάσω ένα Amazon Instance VM (Debian) για ένα χρόνο, είπα να το φτιάξω VPN server και να παίξω με ένα παρόμοιο σενάριο που σκέφτηκα.
Αυτό που σκέφτηκα είναι το εξής: Εφόσον συνδέσω στο VPN το PC "fidron" , και έχει την public ip τoυ amazon, δηλαδή την 52.89.58.61, να παίξει τον ρόλο του ρούτερ ξανά, και να μοιράζει όλο το traffic σε όσες συσκευές βρίσκονται στο δίκτυο 192.168.0.0/24.
Aς πούμε οτι θέλω το PC "hydron" να πάρει public ip την 52.89.58.61
Να τονίσω ότι όταν τρέχει το OpenVPN στον "fidron" αλλά και σε οποιαδήποτε συσκευή, το default network interface που τρέχει είναι το tun0.

Ξέχασα να αναφέρω στο προηγούμενο  άρθρο, ότι αν το default policy του iptables είναι accept τότε δεν χρειάζεται να κάνουμε forward τα πακέτα απο το ένα interface στο άλλο.

Πάμε να ενεργοποιήσουμε ipv4 forward με την εντολή echo 1 > /proc/sys/net/ipv4/ip_forward

Αρχικά για να συνδέεται το δίκτυο 10.8.0.0/24 στο internet πρέπει στο "zirium" Virtual Machine δώσουμε το εξής iptables rule...

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Με αυτόν τον κανόνα του λέμε: "Ότι πακέτο έρχεται από το υποδίκτυο 10.8.0.0/24 να πηγαίνει από το eth0 network interface" το οποίο βγαίνει στο διαδίκτυο και παίρνει την παραπάνω public ip.
Από εδώ και πέρα, ότι συσκευή είναι συνδεδεμένη στο υποδίκτυο 10.8.0.0/24 θα έχει public ip , την διεύθυνση του Amazon VM

Πάμε στην μοναδική συσκευή (VM okeano) που έχουμε συνδέσει άμεσα πάνω στο VPN παίρνοντας την ip 10.8.0.6 στo tun0 network interface.



Πληκτρολογώντας την παραπάνω εντολή στην εικόνα βλέπουμε ότι έχουμε την public ip του vm amazon πράγμα που σημαίνει ότι όλα μέχρι στιγμής βαίνουν καλώς.

Φτάσαμε στο καλύτερο τώρα. Έστω ότι είμαστε συνδεδεμένοι σε ενα VPN απο ένα PC και θέλω να το πασάρω και στις άλλες συσκευές του τοπικού δικτύου πως θα γίνει;

Όπως είπαμε και στο προηγούμενο άρθρο θα πρέπει αυτό το pc να παίξει τον ρόλο του router;

Θα δώσουμε τον εξής κανόνα iptables:

 iptables -t nat -A POSTROUTING -s 192.168.0.3 -o tun0 -j MASQUERADE

Με τον παραπάνω κανόνα του λέμε: "Ότι πακέτο έρχεται απο το υποδίκτυο 192.168.0.0/24 να πηγαίνει στο tun0 network interface" δηλαδή στο υποδίκτυο του VPN.

Και στη συνέχεια πάμε στις συσκευές του υποδικτύου 192.168.0.0/24 και δηλώνουμε σε κάθε συσκευή , οτι θα έχουν για default gateway(προεπιλεγμένη πύλη) το 192.168.0.2. Η εντολή είναι αυτή:

route add default gw 192.168.0.2 eth1



Υ.Γ
Το άρθρο ήταν παρόμοιο με το προηγούμενο... κάποιος όμως που δεν καταλαβαίνει τα iptables μπορεί να βοηθηθεί.

 Αναμένονται πολλά άλλα άρθρα που σχετίζονται με linux, δίκτυα, προγραμματισμό, ασφάλεια κλπ.

Ευχαριστώ.

Κυριακή 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 .

Ευχαριστώ!


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