Raspberry Pi | Φτιάξε το δικό σου router και επέκτεινε το WiFi δίκτυο στο χώρο σου


Εκτός από το κινητό και τον υπολογιστή μας, στο ίντερνετ συνδέονται πλέον πάρα πολλές συσκευές. Η τηλεόραση, το TV-Box, η κονσόλα παιχνιδιών, ο συναγερμός, οι συσκευές smart home και πολλές άλλες ακόμη, οι οποίες είναι διάσπαρτες μέσα στο χώρο μας. Θα συμφωνήσουμε λοιπόν ότι το WiFi είναι πολύτιμο και πρέπει να καλύπτει το γραφείο ή το σπίτι μας από άκρη σε άκρη, ειδάλλως θα έχουμε προβλήματα στη σύνδεση. Αν έχουμε λοιπόν κανένα περίσσιο Raspberry Pi, μπορούμε να το μετατρέψουμε σε router για να επεκτείνουμε ακόμη περισσότερο το δίκτυό μας!

Εκτός από την επέκταση του δικτύου η οποία είναι σημαντική, ένας ακόμη λόγος για να έχεις δεύτερο router είναι το smart home. Αν έχεις στο χώρο σου συναγερμό, ηλεκτρονικές κλειδαριές, κάμερες και άλλα τέτοια, είναι καλό να τα έχεις συνδέσει σε ένα δεύτερο router και όχι στο κεντρικό σου για λόγους ασφαλείας. Η χρήση επίσης ενός Raspberry Pi έναντι ενός συμβατικού router έχει και άλλα καλά. Για παράδειγμα αν χαλάσει ο υπολογιστής σου, το φοράς σε μία οθόνη και έχεις έναν υπολογιστή για ώρα ανάγκης. Δεν το κάνουν αυτό τα router!

Πριν ξεκινήσουμε σημαντικό είναι να πούμε ότι το Pi θα πρέπει να είναι συνδεδεμένο μέσω Ethernet στο router μας ή σε κάποια Ethernet πρίζα. Ο λόγος είναι γιατί θα μετατρέψουμε το WiFi του σε Hotspot για να συνδέονται οι συσκευές μας επάνω του, οπότε θα χρησιμοποιήσουμε το Ethernet για να τους δώσουμε πρόσβαση στο ίντερνετ. Αν θέλουμε μία πραγματικά ασύρματη λύση, θα πρέπει να το εξοπλίσουμε με μία εξωτερική κεραία Wi-Fi, στην οποία θα κάνουμε ακριβώς τις ίδιες ρυθμίσεις.

Τα βήματα που θα ακολουθήσουμε είναι τα εξής:

  1. Θα εγκαταστήσουμε τα απαραίτητα αρχεία στο Pi
  2. Θα του δώσουμε μία στατική IP
  3. Θα ρυθμίσουμε τον DHCP server του
  4. Θα κάνουμε το WiFi να λειτουργεί σαν Hotspot
  5. Θα κάνουμε το Ethernet την πόρτα πρόσβαση στο ίντερνετ
  6. Θα φτιάξουμε μία γέφυρα μεταξύ WiFi και Ethernet

Διαφήμιση

Εγκαθιστούμε τα απαραίτητα στο Raspberry Pi


Εννοείται κατ' αρχάς ότι έχουμε εγκαταστήσει το Raspbian και ότι το Pi μας έχει πρόσβαση στο ίντερνετ. Ανοίγουμε λοιπόν ένα τερματικό για να κατεβάσουμε τα απαραίτητα προγράμματα, κάτι που γίνεται με την εντολή:

sudo apt install dnsmasq hostapd


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

sudo systemctl stop dnsmasq 
sudo systemctl stop hostapd

Κάνουμε τέλος μία επανεκκίνηση για να εφαρμοστούν οι αλλαγές, με την εντολή:

sudo reboot

Δίνουμε μία στατική IP στο Raspberry Pi


Όλα τα router έχουν μία στατική IP, έτσι και το Pi θα πρέπει να πάρει τη δική του. Αυτό γίνεται προσθέτοντας τις σωστές πληροφορίες στο αρχείο "dhcpcd.conf". Ανοίγουμε λοιπόν το αρχείο με την εντολή:

sudo nano /etc/dhcpcd.conf

Σημαντική σημείωση 1:
Το "nano" ανοίγει τα αρχεία μας μέσα στο τερματικό. Αν για κάποιο λόγο θέλουμε να τα ανοίξουμε σε έναν επεξεργαστή κειμένου, μπορούμε να χρησιμοποιήσουμε το "leafpad" που είναι ο προεγκατεστημένος στο Raspberry Pi. Η εντολή λοιπόν θα είναι η εξής: "sudo leafpad /etc/dhcpcd.conf"


Βρίσκουμε μέσα στο αρχείο το "interface wlan0" και το αντικαθιστούμε με τα εξής:

interface wlan0
    static ip_address=192.168.5.1/24
    nohook wpa_supplicant

Σημαντική σημείωση 2:
Στο παράδειγμά μας η static IP του router θα είναι η "192.168.5.1", οπότε οι IP όλων των συσκευών που θα συνδεθούν επάνω του θα έχουν τη μορφή "192.168.5.x".



Αποθηκεύουμε και κλείνουμε το αρχείο και για να εφαρμοστούν οι ρυθμίσεις και κάνουμε επανεκκίνηση στην υπηρεσία "dhcpcd" με την εντολή:

sudo service dhcpcd restart
 

Ρυθμίζουμε τον DHCP server του Raspberry Pi


Τώρα θα πρέπει να δώσουμε στη συσκευή μας τις πληροφορίες του δικτύου που στήνουμε, όπως για παράδειγμα το εύρος των IP που θα δίνονται στις συσκευές μας και το subnet mask. Όλα αυτά περιλαμβάνονται ήδη στο αρχείο "dnsmasq.conf", το οποίο όμως δε θα πειράξουμε. Αντ' αυτού θα το κάνουμε backup και θα δημιουργήσουμε ένα νέο.

Μετονομάζουμε το αρχείο που υπάρχει ήδη για να το έχουμε σε περίπτωση ανάγκης με την εντολή:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  

Δημιουργούμε το νέο αρχείο με την εντολή:

sudo nano /etc/dnsmasq.conf

Προσθέτουμε τα ακόλουθα στο αρχείο μας:

interface=wlan0      # Use the require wireless interface - usually wlan0
    dhcp-range=192.168.5.2,192.168.5.20,255.255.255.0,24h


Το αποθηκεύουμε και το κλείνουμε.

Σημαντική σημείωση 3:
Με το αρχείο αυτό λέμε στην ουσία ότι το WiFi του router μας θα μπορεί να δώσει 19 διευθύνσεις IP, από την "192.168.5.2" έως "192.168.5.20". Αυτό σημαίνει ότι υπάρχουν 19 θέσεις για 19 συσκευές. Μπορούμε εννοείται να βάλουμε λιγότερες αλλά όχι περισσότερες, γιατί το Pi δε θα τις σηκώνει όλες ταυτόχρονα. Δηλώνουμε επίσης ότι το subnet mask θα είναι το "255.255.255.0" και ότι οι IP θα αλλάζουν ανά 24 ώρες.

Διαφήμιση

Ρυθμίζουμε το Wi-Fi στο Raspberry Pi


Το επόμενο βήμα είναι να ρυθμίσουμε το access point, δηλαδή τις πληροφορίες που χρειάζεται το Wi-Fi του Pi για να λειτουργεί σωστά. Πρέπει δηλαδή μεταξύ άλλων να του πούμε σε ποια μπάντα και σε ποιο κανάλι θα εκπέμπει και να του δώσουμε ένα όνομα εκπομπής και ένα κωδικό σύνδεσης.

Ανοίγουμε το αρχείο "hostapd.conf" με την εντολή:

sudo nano /etc/hostapd/hostapd.conf

Αντιγράφουμε στο αρχείο μας τα ακόλουθα:

interface=wlan0
bridge=br0
driver=nl80211
ssid=Chris
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=kwdikos
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP


Το αποθηκεύουμε και το κλείνουμε.

Σημαντική σημείωση 4:
Με τα παραπάνω λέμε ότι το δίκτυό μας θα ονομάζεται "Chris" (ssid=Chris), ο κωδικός για να συνδεθούμε θα είναι "kwdikos" (wpa_passphrase=kwdikos), θα εκπέμπει στο κανάλι 7 (channel=7) και στη συχνότητα 2.4GHz (hw_mode=g).


Άλλες επιλογές όσον αφορά τη συχνότητα εκπομπής είναι οι εξής:
  • a = IEEE 802.11a (5 GHz)
  • b = IEEE 802.11b (2.4 GHz)
  • g = IEEE 802.11g (2.4 GHz)
  • ad = IEEE 802.11ad (60 GHz).

Τώρα πρέπει να πούμε στο στο σύστημα να χρησιμοποιεί αυτό το αρχείο ως προεπιλεγμένο. Ανοίγουμε το default "hostapd" με την εντολή:

sudo nano /etc/default/hostapd

Βρίσκουμε τη γραμμή με το δείκτη "DAEMON_CONF" και την αντικαθιστούμε με αυτό:

DAEMON_CONF="/etc/hostapd/hostapd.conf"


Ρυθμίζουμε τη θύρα Ethernet του Raspberry Pi


Το WiFi του Raspberry Pi είναι έτοιμο να υποδεχτεί τις συσκευές μας και τώρα πρέπει να ρυθμίσουμε τη θύρα Ethernet, μέσω της οποίας θα έχουν πρόσβαση στο ίντερνετ. Όπως είπαμε και στην αρχή λοιπόν, θα πρέπει να συνδέσουμε το Pi στο router ή σε μία πρίζα Ethernet με το αντίστοιχο καλώδιο.

Για να το καταφέρουμε ανοίγουμε το αρχείο "sysctl.conf" με την εντολή:

sudo nano /etc/sysctl.conf

Σβήνουμε το "#" μπροστά από τη γραμμή:

net.ipv4.ip_forward=1

Σημαντική σημείωση 5:
Οι γραμμές που έχουν τη δίεση (#) μπροστά αποτελούν σχόλια / σημειώσεις μέσα στο αρχείο τους και δε "διαβάζονται" ως κώδικας από το σύστημα. Αν θέλουμε λοιπόν να χρησιμοποιήσουμε κάποια από αυτές τις παραμέτρους, αφαιρούμε απλά τη δίεση.



Προσθέτουμε τον ακόλουθο κανόνα στο iptables:

sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE


Αποθηκεύουμε τον κανόνα με την εντολή:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Τέλος πρέπει να προσθέσουμε τον κανόνα στο "boot", για να ξεκινάνε όλα με το που ανοίγουμε το Raspberry Pi. Ανοίγουμε το αρχείο "rc.local" με την εντολή:

sudo nano /etc/rc.local

Προσθέτουμε την ακόλουθη γραμμή, ακριβώς πάνω από το "exit 0":

iptables-restore < /etc/iptables.ipv4.nat

Φτιάχνουμε τη γέφυρα μεταξύ Wi-Fi και Ethernet


Για το τέλος θα πρέπει να φτιάξουμε μία γέφυρα μεταξύ WiFi και Ethernet για να μην "μπερδεύεται" το βασικό μας router και δίνει IP διευθύνσεις και στα δύο. Κάνουμε λοιπόν εγκατάσταση ένα ακόμη πακέτο με την εντολή:

sudo apt install bridge-utils

Για να πούμε στη συσκευή μας να μην παίρνει IP το WiFi και το Ethernet, ανοίγουμε το αρχείο "dhcpcd.conf" με την εντολή:

sudo nano /etc/dhcpcd.conf

Προσθέτουμε τις ακόλουθες γραμμές στο τέλος του αρχείου, αλλά πάνω από άλλες γραμμές με το δείκτη "interface":

denyinterfaces wlan0
denyinterfaces eth0

Προσθέτουμε τη γέφυρα με όνομα "br0" με την εντολή:

sudo brctl addbr br0

Σημαντική σημείωση 6:
Η γέφυρα πρέπει να δηλωθεί και στο αρχείο "hostapd.conf". Το έχουμε κάνει ήδη σε προηγούμενο βήμα (bridge=br0).


Συνδέουμε το Ethernet (eth0) στη γέφυρα που φτιάξαμε με την εντολή:

sudo brctl addif br0 eth0

Τέλος ανοίγουμε το αρχείο "interfaces" με την εντολής:

sudo nano /etc/network/interfaces

και προσθέτουμε τις ακόλουθες γραμμές στο τέλος του αρχείου:

# Bridge setup
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0


Ξεκινάμε την υπηρεσία με τις ακόλουθες εντολές:

sudo systemctl start hostapd
sudo systemctl start dnsmasq

Κάνουμε επανεκκίνηση και είμαστε έτοιμοι να χαρούμε το νέο μας router!

Εν κατακλείδι


Το Raspberry Pi έχει τα άθλια χαρακτηριστικά στοιχεία ενός smartphone του 2012. Mας έχει αποδείξει όμως ότι μπορεί να κάνει ένα σωρό δουλειές στο σπίτι ή το γραφείο μας, οπότε είναι χρήσιμο να έχουμε ένα στην κατοχή μας. Ειδικά η μετατροπή του σε router είναι κάτι που δεν περιμένεις και αποτελεί μία ευχάριστη έκπληξη όσον αφορά τις δυνατότητές του. Εννοείται ότι  έχουμε πολλά να δούμε ακόμη, μιας και η κοινότητα που ασχολείται με το Pi, έχει φτάσει σε τρελά επίπεδα τη χρήση του.

Pro tip:
Για όλα τα project που έχουμε κάνει μέχρι στιγμής και που θα κάνουμε με το Raspberry Pi, πάντα παίρνουμε ένα backup από τη microSD κάρτα του και το αποθηκεύουμε σε ένα σκληρό δίσκο. Έτσι ανάλογα με τη χρήση, δε χρειάζεται κάθε φορά να κάνουμε όλη τη διαδικασία από την αρχή. Απλά φλασάρουμε στη microSD το backup μας και σε λίγα λεπτά είμαστε έτοιμοι.

Σχόλια

Δείτε επίσης...

Android | Γιατί δε θα αγόραζα ποτέ smartphone της OnePlus

Φεύγω από την Google (μέρος 15) | ''Ξηλώνουμε'' τα Google apps από το Android

Ιδιωτικό απόρρητο | Το αφελές επιχείρημα του ''Δεν έχω τίποτα να κρύψω''

Docker (μέρος 7) | Στήνουμε έναν reverse proxy για τα container μας με το Traefik

Μάθε παιδί μου Linux (μέρος 11) | Δίσκοι, κατατμήσεις και σύστημα αρχείων (filesystem)

Ubuntu Touch 2020 review | Μια πραγματική mobile GNU/Linux διανομή έτοιμη για καθημερινή χρήση

Απόρρητο | ''Μπερδεύουμε'' τον αλγόριθμο Google και Facebook με ψεύτικες πληροφορίες

Android | Περιόρισε την παρακολούθηση των εφαρμογών και κόψε τις διαφημίσεις με το TrackerControl

Docker (μέρος 1) | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Android | Βάλε στην ''απομόνωση'' τις εφαρμογές που δεν εμπιστεύεσαι με το Shelter