English · Ελληνικά
Οι δύο υπηρεσίες που κάνουν ένα LAN χρησιμοποιήσιμο: το μοίρασμα διευθύνσεων αυτόματα, και το μοίρασμα ενός δημόσιου IP σε όλο το γραφείο. DHCP pools, relay, PAT overload, και static NAT για port forwarding — με τις εντολές επαλήθευσης που κάνουν το troubleshooting γρήγορο.
Δύο υπηρεσίες μετατρέπουν έναν γυμνό router σε λειτουργική πύλη internet. Το DHCP δίνει σε κάθε συσκευή IP, gateway, και DNS server αυτόματα — κανείς δεν ρυθμίζει ένα laptop στο χέρι. Το NAT μεταφράζει τις πολλές ιδιωτικές διευθύνσεις από πίσω σου στη μία (ή λίγες) δημόσιες διευθύνσεις που σου έδωσε ο ISP, ώστε όλο το γραφείο να μοιράζεται ένα μοναδικό IP WAN.
Στην πράξη θα χρησιμοποιείς μία γεύση NAT συνέχεια — το PAT, «NAT overload», που κάνει multiplex ολόκληρο το LAN σε ένα δημόσιο IP παρακολουθώντας αριθμούς port — και περιστασιακά το αντίστροφό του, το static NAT, για να δημοσιεύσεις έναν εσωτερικό server στο internet (port forwarding). Αυτό το tutorial τα χτίζει όλα σε έναν router IOS, μετά τα αντιστοιχίζει στα ισοδύναμα MikroTik. Αν έχεις στήσει masquerade και dst-nat σε RouterOS, ήδη ξέρεις τα σχήματα.
01
Ένας router Cisco κάνει τέλειο DHCP server για ένα μικρό site. Εξαίρεσε πρώτα τις static διευθύνσεις, μετά όρισε ένα pool — network, gateway, DNS, lease time.
# 1. Κράτησε τις διευθύνσεις που το DHCP ΔΕΝ πρέπει να μοιράσει (gateway, servers, εκτυπωτές) R1(config)# ip dhcp excluded-address 192.168.1.1 192.168.1.20 # 2. Όρισε το pool R1(config)# ip dhcp pool LAN R1(dhcp-config)# network 192.168.1.0 255.255.255.0 R1(dhcp-config)# default-router 192.168.1.1 R1(dhcp-config)# dns-server 1.1.1.1 8.8.8.8 R1(dhcp-config)# domain-name lab.lan R1(dhcp-config)# lease 0 12 0 # 0 μέρες, 12 ώρες, 0 λεπτά R1(dhcp-config)# end
Η δήλωση network κάνει τον router πρόθυμο να κάνει lease κάθε διεύθυνση σε αυτό το subnet — μαζί με το gateway σου .1 και τυχόν static servers — εκτός αν τα έχεις εξαιρέσει. Αν παραλείψεις το ip dhcp excluded-address, το DHCP θα δώσει ευχαρίστως σε έναν client το ίδιο IP με τον router σου ή έναν εκτυπωτή, και θα κυνηγάς ένα φάντασμα διπλής διεύθυνσης για μια ώρα. Εξαίρεσε πρώτα το static block, κάθε φορά.
R1# show ip dhcp binding IP address Client-ID/Hardware Lease expiration Type 192.168.1.21 0100.1a2b.3c4d.5e Jul 12 2026 09:14 PM Automatic 192.168.1.22 0100.1a2b.3c4d.6f Jul 12 2026 09:15 PM Automatic R1# show ip dhcp pool Pool LAN : Total addresses : 254 Leased addresses : 2 Excluded addresses : 20 # Οι συγκρούσεις (μια διεύθυνση που το DHCP βρήκε ήδη σε χρήση) εμφανίζονται εδώ: R1# show ip dhcp conflict
02
Το DHCP χρησιμοποιεί broadcasts, και οι router δεν προωθούν broadcasts. Οπότε ένας client στο VLAN 20 δεν φτάνει έναν DHCP server στο VLAN 10 — εκτός αν η πύλη κάνει relay το αίτημα. Αυτό είναι το ip helper-address.
# Στο interface/SVI που βλέπει τους CLIENTS (το default gateway τους), # δείξε στη unicast διεύθυνση του DHCP server: R1(config)# interface vlan 20 R1(config-if)# ip helper-address 192.168.10.5 R1(config-if)# end # Ο router τώρα μετατρέπει το DHCP broadcast του client σε unicast προς # 192.168.10.5, σφραγίζοντας το source subnet ώστε ο server να διαλέξει το σωστό pool.
Το πιο συχνό λάθος relay είναι να βάλεις το ip helper-address στο λάθος interface. Ανήκει στο interface πιο κοντά στους clients — αυτό που δέχεται το broadcast τους — δείχνοντας στον server. Ένα helper ανά subnet client. Και το ip helper-address κάνει relay περισσότερα από DHCP by default (TFTP, DNS, NTP και μερικά ακόμα)· αν θέλεις μόνο DHCP, κλάδεψε τα υπόλοιπα με no ip forward-protocol udp <port>.
03
Το NAT μπερδεύει τον κόσμο εξαιτίας τεσσάρων όρων που ακούγονται παρόμοιοι. Καρφωσέ τους μία φορά και κάθε εντολή NAT διαβάζεται καθαρά. Το inside/outside αφορά ποια πλευρά του router· το local/global αφορά ποια διεύθυνση — ιδιωτική ή δημόσια.
| Ορος | Σημαινει |
|---|---|
| inside local | Το ιδιωτικό IP που έχει πραγματικά ένας host (192.168.1.10). |
| inside global | Το δημόσιο IP με το οποίο ο κόσμος βλέπει αυτόν τον host (203.0.113.7). |
| outside global | Ένα δημόσιο IP έξω στο internet (π.χ. ένας web server που επισκέπτεσαι). |
| inside interface | Το πόδι του router που βλέπει το LAN σου — σημειωμένο ip nat inside. |
| outside interface | Το πόδι του router που βλέπει το WAN — σημειωμένο ip nat outside. |
Κάθε config NAT ξεκινάει με τον ίδιο τρόπο: πες στον router ποιο interface είναι inside και ποιο outside. Τίποτα δεν μεταφράζεται μέχρι να το κάνεις.
R1(config)# interface GigabitEthernet0/1 R1(config-if)# ip nat inside # πλευρά LAN R1(config-if)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip nat outside # πλευρά WAN R1(config-if)# end
04
Αυτό είναι το NAT που θα ρυθμίζεις το 95% του χρόνου. Το PAT (NAT overload) αντιστοιχίζει κάθε inside host στο μοναδικό δημόσιο IP στο interface WAN σου, κρατώντας τις ροές χωριστές με αριθμό port. Είναι ακριβώς αυτό που κάνει ο router του σπιτιού σου.
# 1. Ένα access-list που περιγράφει ΠΟΙΟΣ επιτρέπεται να μεταφράζεται (το LAN) R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255 # (το 0.0.0.255 είναι η wildcard mask — το αντίστροφο του 255.255.255.0) # 2. Μετάφρασε αυτή τη λίστα, overloaded στο IP του interface outside R1(config)# ip nat inside source list 1 interface GigabitEthernet0/0 overload R1(config)# end # Το "overload" είναι η λέξη-κλειδί που μετατρέπει το NAT σε PAT (port multiplexing). # Κάθε host του LAN φτάνει τώρα το internet ως το δημόσιο IP του interface WAN.
Το NAT μεταφράζει διευθύνσεις· δεν δρομολογεί πακέτα. Αν ο router δεν φτάνει ήδη το internet — ένα default route ip route 0.0.0.0 0.0.0.0 <next-hop> έξω από το interface outside — τότε η μεταφρασμένη κίνηση δεν πάει ακόμα πουθενά. Ομοίως, αν ξεχάσεις το ip nat inside/outside στα interfaces, ο κανόνας ip nat inside source δεν ταιριάζει τίποτα και οι hosts δεν παίρνουν καμία μετάφραση. Interfaces σημειωμένα, route παρόν, μετά NAT.
05
Το PAT αφήνει τους inside hosts να φτάνουν έξω. Για να αφήσεις το έξω να φτάσει ΜΕΣΑ — δημοσίευσε έναν web server, έναν mail server, ένα NVR καμερών — χρειάζεσαι μια static αντιστοίχιση: ένα σταθερό δημόσιο IP:port σε ένα σταθερό ιδιωτικό IP:port.
# Δημοσίευσε το εσωτερικό 192.168.1.10:443 ως το port 443 του IP WAN R1(config)# ip nat inside source static tcp 192.168.1.10 443 interface GigabitEthernet0/0 443 # Ή, αν έχεις ένα εφεδρικό αποκλειστικό δημόσιο IP, αντιστοίχισέ το ολόκληρο: R1(config)# ip nat inside source static 192.168.1.10 203.0.113.8 R1(config)# end # Θυμήσου ότι το firewall/ACL πρέπει ακόμα να ΕΠΙΤΡΕΨΕΙ την εισερχόμενη κίνηση — # το NAT ανοίγει τη μετάφραση διεύθυνσης, όχι την πόρτα.
Προτίμησε τη μορφή tcp <ip> <port> interface … <port> από το να αντιστοιχίσεις ολόκληρη διεύθυνση όποτε μπορείς. Το να εκθέσεις μία θύρα υπηρεσίας (443) είναι πολύ μικρότερη επιφάνεια επίθεσης από το να δημοσιεύσεις έναν ολόκληρο host στο internet. Και πάντα συνδύαζε ένα static NAT με ένα inbound ACL που επιτρέπει μόνο αυτό το port από τις πηγές που το χρειάζονται — ένα προωθημένο port RDP ή κάμερας ανοιχτό σε όλο το internet είναι μία από τις πιο σαρωμένες τρύπες που υπάρχουν.
06
Δύο εντολές απαντούν σχεδόν σε κάθε ερώτημα NAT: τι μεταφράζεται τώρα, και γίνονται καν μεταφράσεις.
R1# show ip nat translations Pro Inside global Inside local Outside local Outside global tcp 203.0.113.7:1044 192.168.1.10:1044 93.184.216.34:443 93.184.216.34:443 tcp 203.0.113.7:443 192.168.1.10:443 --- --- # Πάνω γραμμή: ένας host που φτάνει έξω (PAT). Κάτω: το static port-forward σου. R1# show ip nat statistics Total active translations: 2 (1 static, 1 dynamic; 1 extended) Outside interfaces: GigabitEthernet0/0 Inside interfaces: GigabitEthernet0/1 Hits: 1523 Misses: 0 # Παρακολούθησε τις μεταφράσεις να γίνονται ζωντανά (κλείσ' το ΤΗΝ ΩΡΑ που τελειώσεις): R1# debug ip nat R1# undebug all # Καθάρισε τον δυναμικό πίνακα για να ξεκινήσεις καθαρά (οι static εγγραφές μένουν): R1# clear ip nat translation *
Ένας άδειος δυναμικός πίνακας ενώ οι hosts θα έπρεπε να είναι online σημαίνει σχεδόν πάντα ένα από τρία πράγματα: τα interfaces δεν είναι σημειωμένα ip nat inside/outside· το access-list δεν ταιριάζει με το source subnet (έλεγξε τη wildcard mask — 0.0.0.255, όχι 255.255.255.0)· ή δεν υπάρχει route προς το outside. Οι static εγγραφές εμφανίζονται πάντα ακόμα και με μηδενική κίνηση, οπότε αν το static forward σου είναι στη λίστα αλλά δεν εμφανίζονται δυναμικές εγγραφές, υποψιάσου το ACL ή τη σήμανση inside/outside.
07
Αν έχεις στήσει masquerade και dst-nat σε RouterOS, το NAT της Cisco είναι η ίδια έννοια με διαφορετικές λέξεις-κλειδιά. Ορίστε η απευθείας αντιστοίχιση.
| MikroTik / RouterOS | Cisco IOS |
|---|---|
| /ip pool + /ip dhcp-server | ip dhcp pool + ip dhcp excluded-address |
| dhcp-relay | ip helper-address |
| action=masquerade (srcnat) | ip nat inside source list … overload (PAT) |
| action=src-nat to-addresses=<pub> | ip nat inside source static <local> <global> |
| action=dst-nat (port forward) | ip nat inside source static tcp … interface … <port> |
| /ip firewall connection tracking | show ip nat translations |
Στο MikroTik, το NAT είναι μια ενέργεια firewall — ένας κανόνας στην αλυσίδα srcnat/dstnat, αξιολογούμενος μαζί με όλα τα υπόλοιπα. Στη Cisco, το NAT είναι δικό του υποσύστημα: σημειώνεις τα interfaces inside/outside και γράφεις κανόνες ip nat ξεχωριστά από το ACL/firewall. Ίδιο αποτέλεσμα, διαφορετικό νοητικό μοντέλο. Όταν τρέχουμε μεικτά sites — ένα edge MikroTik και core Cisco, κοινό σε SMB της Κρήτης — αυτός ο πίνακας είναι αυτό που κρατάει τα δύο ξεκάθαρα στο μυαλό όλων.
Συμπερασματα
network προσφέρει ολόκληρο το subnet· το ip dhcp excluded-address είναι το μόνο πράγμα που εμποδίζει το DHCP από το να κάνει lease το gateway και τους servers σου κάτω από τα πόδια σου.ip helper-address πάει στο interface που βλέπει τους clients, δείχνοντας σε κεντρικό DHCP server. Ένα ανά subnet client.ip nat διαβάζεται καθαρά μετά από αυτό.ip nat inside/outside δεν υπάρχει μετάφραση, όσο σωστοί κι αν είναι οι κανόνες. Interfaces σημειωμένα → route παρόν → κανόνας NAT.ip nat inside source list … interface … overload βάζει όλο το γραφείο πίσω από ένα δημόσιο IP.show ip nat translations (τι είναι αντιστοιχισμένο) και το show ip nat statistics (γίνεται καν) — ένας άδειος πίνακας δείχνει κατευθείαν στη σήμανση interface, το wildcard του ACL, ή ένα route που λείπει.Ρυθμίζω DHCP, NAT, και port-forwarding σε edges Cisco και MikroTik με τους κανόνες firewall που πραγματικά προστατεύουν ό,τι δημοσιεύεται, και τεκμηριώνω κάθε αντιστοίχιση ώστε κανείς να μη χρειαστεί να την κάνει reverse-engineer σε έναν χρόνο.
Κλεισε μια Discovery Call →