English · Ελληνικά
Το φινάλε της σειράς: κάθε post MikroTik συναρμολογημένο στο δίκτυο που πραγματικά χτίζουμε για να ζήσουμε — ένα μικρό ξενοδοχείο. Ένα gateway RB5009, ένα core switch CRS326, δύο APs στην οροφή, τέσσερα VLANs, απομόνωση επισκεπτών που είναι δοκιμασμένη αντί να θεωρείται δεδομένη, δίκαιη κατανομή bandwidth ανά επισκέπτη, και ένα segment CCTV που οι επισκέπτες δεν μπορούν ποτέ να βρουν. Χτίσ' το σε πραγματικό hardware ή εντελώς σε CHR — μετά σπάσ' το όπως κάνουμε πριν το handover.
Αυτό είναι το δίδυμο MikroTik του Cisco campus lab, ρυθμισμένο για το deployment που κάνουμε πιο συχνά: ένα ακίνητο 10–40 δωματίων όπου το δίκτυο πρέπει να κρατά επισκέπτες, προσωπικό, κάμερες, και management αποδεδειγμένα ξεχωριστά πάνω σε hardware που κοστίζει λιγότερο από τα έσοδα μιας νύχτας. Συνθέτει το post VLAN, το post firewall, και το post QoS σε ένα συνεκτικό build — με τις παγίδες ολοκλήρωσης που εμφανίζονται μόνο όταν τα κομμάτια συναντιούνται.
Δεν έχεις hardware; Κανένα πρόβλημα. Τα πάντα εκτός από τα ραδιόφωνα Wi-Fi τρέχουν πανομοιότυπα σε δωρεάν CHR images σε GNS3/EVE-NG — χτίσε το GW και το SW σαν CHRs, κρέμασε test VMs στα VLANs, και αντικατέστησε το τμήμα AP με tagged virtual NICs. Η επαλήθευση και οι δοκιμές βλάβης στο τέλος δουλεύουν και στις δύο περιπτώσεις — και αυτές, όχι το config, είναι το πραγματικό μάθημα.
01
Τέσσερα VLANs, τέσσερα subnets, ένας πίνακας. Όπως πάντα: το σχέδιο είναι το design, το config είναι πληκτρολόγηση.
| VLAN / subnet | Ποιος ζει εδω — και ο κανονας που τον διεπει |
|---|---|
| 10 STAFF — 10.10.10.0/24 | PCs ρεσεψιόν, Wi-Fi γραφείου. Φτάνει internet + θέαση CCTV· όχι mgmt. |
| 20 GUEST — 10.10.20.0/24 | SSID επισκεπτών + ethernet δωματίου. Μόνο internet. Τίποτα εσωτερικό, ποτέ. |
| 30 CCTV — 10.10.30.0/24 | NVR + κάμερες. Καθόλου internet (η απομακρυσμένη θέαση γίνεται μέσω WireGuard). |
| 99 MGMT — 10.10.99.0/24 | Router, switch, APs. Προσβάσιμο μόνο από το ίδιο το MGMT (+ VPN). |
| Gateways | Το GW κατέχει το .1 κάθε subnet σε interfaces VLAN πάνω από το trunk. |
| Uplinks | GW ether1 = fibre, ether2 = Starlink (failover κατά το post Starlink). |
Οι φθηνές κάμερες κάνουν phone home σε clouds που δεν ελέγχεις, τρέχουν firmware που κανείς δεν κάνει patch, και είναι η κλάση συσκευών με τα περισσότερα compromises που βλέπουμε. Η απάντηση του design είναι δομική, όχι αισιόδοξη: το VLAN 30 δεν έχει καθόλου route προς το internet — μια κάμερα που δεν μπορεί να φτάσει το botnet C2 της είναι μια κάμερα της οποίας οι ευπάθειες ως επί το πλείστον δεν έχουν σημασία. Ο ιδιοκτήτης παρακολουθεί το NVR απομακρυσμένα μέσω WireGuard μέσα στο VLAN 30, που δεν χρειάζεται καμία κάμερα να στείλει ποτέ πακέτο προς τα έξω.
02
Ένα bridge, vlan-filtering, hardware offload. Trunks προς το GW και τα δύο APs· access ports για ρεσεψιόν και κάμερες. Η σειρά έχει σημασία — χτίσε τον πίνακα VLAN πριν ενεργοποιήσεις το filtering.
[admin@SW] > /interface/bridge add name=bridge1 vlan-filtering=no ← ON αργότερα, ΤΕΛΕΥΤΑΙΟ # Θύρες: trunk προς GW (ether1), trunks προς APs (ether2-3), # access για ρεσεψιόν (ether10-12, V10) και NVR/κάμερες (ether20-24, V30) [admin@SW] > /interface/bridge/port add bridge=bridge1 interface=ether1 hw=yes [admin@SW] > /interface/bridge/port add bridge=bridge1 interface=ether2 hw=yes [admin@SW] > /interface/bridge/port add bridge=bridge1 interface=ether3 hw=yes [admin@SW] > /interface/bridge/port add bridge=bridge1 interface=ether10 pvid=10 frame-types=admit-only-untagged hw=yes [admin@SW] > /interface/bridge/port add bridge=bridge1 interface=ether20 pvid=30 frame-types=admit-only-untagged hw=yes # …επανέλαβε για το υπόλοιπο κάθε range # Πίνακας VLAN: τα trunks tagged για τα πάντα· τα APs χρειάζονται μόνο guest+staff+mgmt [admin@SW] > /interface/bridge/vlan add bridge=bridge1 vlan-ids=10 tagged=bridge1,ether1,ether2,ether3 untagged=ether10,ether11,ether12 [admin@SW] > /interface/bridge/vlan add bridge=bridge1 vlan-ids=20 tagged=bridge1,ether1,ether2,ether3 [admin@SW] > /interface/bridge/vlan add bridge=bridge1 vlan-ids=30 tagged=bridge1,ether1 untagged=ether20,ether21,ether22,ether23,ether24 [admin@SW] > /interface/bridge/vlan add bridge=bridge1 vlan-ids=99 tagged=bridge1,ether1,ether2,ether3 # Το δικό του mgmt IP του switch ταξιδεύει στο VLAN 99 [admin@SW] > /interface/vlan add name=vlan99-mgmt interface=bridge1 vlan-id=99 [admin@SW] > /ip/address add address=10.10.99.2/24 interface=vlan99-mgmt [admin@SW] > /ip/route add dst-address=0.0.0.0/0 gateway=10.10.99.1 # Επαληθεύτηκαν όλα τα παραπάνω; ΤΩΡΑ γύρνα τον μεγάλο διακόπτη (από VLAN mgmt ή console): [admin@SW] > /interface/bridge set bridge1 vlan-filtering=yes
Πρόσεξε τη λίστα tagged του VLAN 30: μόνο bridge1,ether1. Τα APs δεν έχουν καμία δουλειά να μεταφέρουν κίνηση κάμερας, οπότε ο ορισμός του trunk απλά δεν επεκτείνει το VLAN 30 σε αυτά — segmentation με παράλειψη, επιβεβλημένο σε hardware. Αυτή είναι η ίδια ιδέα "allowed VLAN list" με το switchport trunk allowed vlan της Cisco, και το ίδιο σημείο audit: ένα VLAN φτάνει ακριβώς εκεί που λένε οι λίστες tagged/untagged του, όχι παραπέρα. Ξαναδές αυτές τις λίστες όποτε καλωδιώνεται μια νέα υποδοχή· είναι ο χάρτης του τι μπορεί ποτέ να διαρρεύσει πού.
03
Το GW τερματίζει και τα τέσσερα VLANs σε μία θύρα trunk, σερβίρει DHCP σε τρία από αυτά, και κάνει NAT δύο από αυτά προς το internet. Το CCTV παίρνει DHCP αλλά όχι NAT — αυτός είναι ο κανόνας χωρίς-internet, υλοποιημένος.
# Το ether3 είναι το trunk προς το SW — τα interfaces VLAN ταξιδεύουν απευθείας πάνω του [admin@GW] > /interface/vlan add name=vlan10-staff interface=ether3 vlan-id=10 [admin@GW] > /interface/vlan add name=vlan20-guest interface=ether3 vlan-id=20 [admin@GW] > /interface/vlan add name=vlan30-cctv interface=ether3 vlan-id=30 [admin@GW] > /interface/vlan add name=vlan99-mgmt interface=ether3 vlan-id=99 [admin@GW] > /ip/address add address=10.10.10.1/24 interface=vlan10-staff # …το ίδιο για .20/.30/.99 # Interface lists — το firewall παρακάτω ταιριάζει σε αυτά, όχι σε ωμά interfaces [admin@GW] > /interface/list add name=WAN [admin@GW] > /interface/list add name=LAN [admin@GW] > /interface/list/member add list=WAN interface=ether1 [admin@GW] > /interface/list/member add list=WAN interface=ether2 [admin@GW] > /interface/list/member add list=LAN interface=vlan10-staff # …και τα άλλα τρία VLANs μέσα στο LAN # DHCP ανά VLAN (φαίνεται το guest· staff/cctv ίδιο pattern, mgmt μόνο static) [admin@GW] > /ip/pool add name=pool-guest ranges=10.10.20.50-10.10.20.250 [admin@GW] > /ip/dhcp-server add name=dhcp-guest interface=vlan20-guest address-pool=pool-guest [admin@GW] > /ip/dhcp-server/network add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=10.10.20.1 # NAT: staff και guest βγαίνουν έξω· το CCTV λείπει επιδεικτικά [admin@GW] > /ip/firewall/nat add chain=srcnat action=masquerade src-address=10.10.10.0/24 out-interface-list=WAN [admin@GW] > /ip/firewall/nat add chain=srcnat action=masquerade src-address=10.10.20.0/24 out-interface-list=WAN
Οι δύο θύρες WAN είναι ακριβώς το writeup Starlink failover: recursive default routes με check-gateway=ping που δοκιμάζουν έναν πραγματικό στόχο internet, distances 1 και 10. Επειδή οι κανόνες NAT παραπάνω κάνουν masquerade πάνω στο out-interface-list=WAN αντί για συγκεκριμένη θύρα, οι μεταφράσεις ακολουθούν όποιο uplink είναι ενεργό με μηδέν επιπλέον config — η παγίδα που η εκδοχή Cisco χρειάζεται route-maps γι' αυτήν απλά δεν υπάρχει εδώ.
04
Ο πίνακας του τμήματος 01, μεταφρασμένος μηχανικά στο forward chain. Κάθε πρόταση στο σχέδιο γίνεται ένας ή δύο κανόνες — αυτή η ιχνηλασιμότητα είναι που κάνει το firewall ελέγξιμο.
# Πρώτα το state, όπως πάντα [admin@GW] > /ip/firewall/filter add chain=forward action=fasttrack-connection hw-offload=yes connection-state=established,related comment="fasttrack" [admin@GW] > /ip/firewall/filter add chain=forward action=accept connection-state=established,related [admin@GW] > /ip/firewall/filter add chain=forward action=drop connection-state=invalid # "Οι επισκέπτες φτάνουν το internet και απολύτως τίποτα άλλο" [admin@GW] > /ip/firewall/filter add chain=forward action=accept in-interface=vlan20-guest out-interface-list=WAN comment="guest to internet" [admin@GW] > /ip/firewall/filter add chain=forward action=drop in-interface=vlan20-guest comment="guest to anywhere else: NO" # "Το προσωπικό φτάνει internet + θέαση CCTV" (μόνο web/rtsp του NVR, όχι οι κάμερες) [admin@GW] > /ip/firewall/filter add chain=forward action=accept in-interface=vlan10-staff out-interface-list=WAN [admin@GW] > /ip/firewall/filter add chain=forward action=accept in-interface=vlan10-staff dst-address=10.10.30.10 protocol=tcp dst-port=80,443,554 comment="staff to NVR" # "CCTV: χωρίς internet" δεν χρειάζεται κανόνα — χωρίς NAT + το τελικό drop το κάνει. Ζώνη ΚΑΙ τιράντες: [admin@GW] > /ip/firewall/filter add chain=forward action=drop in-interface=vlan30-cctv out-interface-list=WAN comment="cctv never phones home" # Ο τοίχος [admin@GW] > /ip/firewall/filter add chain=forward action=drop comment="drop all else"
Ο κανόνας drop για τους επισκέπτες μπλοκάρει κίνηση guest→LAN, αλλά ο ίδιος ο router φτάνεται μέσω του input chain — ένας επισκέπτης μπορεί ακόμα να χτυπήσει το 10.10.10.1 (gateway του staff = ίδιος router!) για DNS ή WinBox εκτός αν το input είναι κι αυτό scoped. Στο input chain, δέξου DNS μόνο in-interface=vlan20-guest dst-address=10.10.20.1, και management μόνο από το MGMT. Ένα VLAN επισκεπτών που μπορεί να κάνει WinBox στον router μέσω της διεύθυνσης staff-side είναι η πιο κοινή τρύπα που βρίσκουμε σε "τμηματοποιημένα" δίκτυα ξενοδοχείων — το forward chain ήταν τέλειο και κανείς δεν σκέφτηκε το input.
05
Δύο SSIDs σε κάθε AP: το Hotel-Guest προσγειώνεται στο VLAN 20, το Hotel-Staff στο VLAN 10, πάνω στο ίδιο καλώδιο trunk. Μετά το PCQ κάνει σαράντα επισκέπτες να μοιράζονται το uplink σαν ενήλικες.
# Το bridge του AP είναι VLAN-aware όπως το switch· το uplink του είναι trunk. # Κάθε SSID παίρνει ένα vlan-id — τα frames γίνονται tagged πριν χτυπήσουν το καλώδιο: [admin@AP-1] > /interface/wifi add name=wifi-guest master-interface=wifi1 configuration.ssid="Hotel-Guest" security.passphrase="summer-in-crete" datapath.bridge=bridge1 datapath.vlan-id=20 disabled=no [admin@AP-1] > /interface/wifi add name=wifi-staff master-interface=wifi1 configuration.ssid="Hotel-Staff" security.passphrase="********" datapath.bridge=bridge1 datapath.vlan-id=10 disabled=no # IP mgmt του AP στο vlan99, ίδιο pattern με το switch. Επανέλαβε στο AP-2 — # ίδια SSIDs, ίδια passphrases, ώστε οι συσκευές να κάνουν roam ανάμεσα σε πτέρυγες.
# Κάθε επισκέπτης παίρνει ίσο μερίδιο· ένας torrenter δεν μπορεί πια να καταπιεί το ξενοδοχείο [admin@GW] > /queue/type add name=pcq-down kind=pcq pcq-classifier=dst-address pcq-rate=20M [admin@GW] > /queue/type add name=pcq-up kind=pcq pcq-classifier=src-address pcq-rate=10M [admin@GW] > /queue/simple add name=guest-fairness target=10.10.20.0/24 max-limit=300M/300M queue=pcq-up/pcq-down # ΚΡΙΣΙΜΟ: εξαίρεσε τους επισκέπτες από το fasttrack αλλιώς αυτό το queue δεν βλέπει τίποτα — # όρισε το scope του κανόνα fasttrack ακριβώς όπως το Option B του post firewall.
06
Αυτό το checklist είναι κυριολεκτικά αυτό που τρέχουμε πριν ένα ακίνητο πάει live. Ένα δίκτυο που δεν έχει αποτύχει μπροστά σου θα αποτύχει μπροστά σε επισκέπτες.
| Test | Συνθηκη επιτυχιας |
|---|---|
| SSID επισκεπτών → DHCP | Διεύθυνση από 10.10.20.x, το internet δουλεύει, speedtest σχηματισμένο από PCQ. |
| Guest → 10.10.10.0/24, .30.x, .99.x | Όλα νεκρά· οι μετρητές guest-drop αυξάνονται όσο προσπαθείς. |
| Guest → 10.10.10.1 (WinBox/DNS) | Νεκρό — η τρύπα input-chain από το τμήμα 04 είναι κλειστή. |
| Staff → NVR :443/:554 | Δουλεύει· staff → απευθείας σε IP κάμερας δεν δουλεύει. |
| Κάμερα → 8.8.8.8 | Νεκρό. Το /ip/firewall/filter print stats δείχνει το "cctv never phones home" να μετράει. |
| Δύο laptops σε guest, και τα δύο κάνουν speedtest | Το καθένα παίρνει ~το μισό της pool guest — ορατή η δικαιοσύνη PCQ. |
Δοκιμή 1 — τράβα την ίνα. Συνεχές ping από μια συσκευή επισκέπτη· τα recursive routes κάνουν failover στο Starlink μέσα σε δευτερόλεπτα, και επειδή το NAT κάνει masquerade πάνω στη λίστα WAN, οι established συνδέσεις ξαναφτιάχνονται χωρίς να αγγίξεις config. Ξανασύνδεσέ το, δες το να κάνει fail back.
Δοκιμή 2 — κάνε reboot το switch. Όλα πέφτουν (single core — αυτό είναι το ειλικρινές trade-off αυτού του tier design), και όλα πρέπει να επιστρέψουν μόνα τους μέσα σε δύο λεπτά: τα leases DHCP ανανεώνονται, τα APs ξανακάνουν tag τα SSIDs, οι κάμερες επανασυνδέονται στο NVR. Οτιδήποτε χρειάζεται άνθρωπο μετά από ένα power blip είναι bug configuration — βρες το τώρα, όχι μετά το επόμενο brownout νησιού.
Δοκιμή 3 — κακός επισκέπτης. Από το VLAN επισκεπτών τρέξε ένα επιθετικό scan (nmap -A 10.10.0.0/16 από το laptop σου). Δες το να μη βρίσκει τίποτα εκτός από την IP gateway των επισκεπτών, και δες τους μετρητές drop να ανεβαίνουν. Αποθήκευσε αυτό το output του scan — είναι η απόδειξη segmentation για τον ιδιοκτήτη, σε μορφή που καταλαβαίνει ακόμα και ένας μη τεχνικός πελάτης.
Βασικα Συμπερασματα
Αυτό το lab είναι ακριβώς το δίκτυο που χτίζω για πραγματικά ξενοδοχεία και βίλες — segmentation που μπορώ να αποδείξω, Wi-Fi επισκεπτών που αντέχει στην υψηλή σεζόν, και κάμερες που δεν μπορούν να κάνουν phone home κάπου που δεν πρέπει.
Κλεισε μια Discovery Call →