Πίσω στο blog

English  ·  Ελληνικά

Cisco / IOS  ·  Tutorial  ·  Ιουλιος 2026

Cisco IOS
DHCP & NAT/PAT

Οι δύο υπηρεσίες που κάνουν ένα LAN χρησιμοποιήσιμο: το μοίρασμα διευθύνσεων αυτόματα, και το μοίρασμα ενός δημόσιου IP σε όλο το γραφείο. DHCP pools, relay, PAT overload, και static NAT για port forwarding — με τις εντολές επαλήθευσης που κάνουν το troubleshooting γρήγορο.

Cisco IOS DHCP NAT PAT Port Forwarding Router CCNA

192.168.1.10 192.168.1.11 192.168.1.12 inside (ιδιωτικό) R1 PAT overload 203.0.113.7 outside (ένα δημόσιο IP) Πολλοί ιδιωτικοί hosts → ένα δημόσιο IP. Ο router παρακολουθεί κάθε ροή με αριθμό port ώστε οι απαντήσεις να βρίσκουν τον δρόμο τους σπίτι.

Δύο υπηρεσίες μετατρέπουν έναν γυμνό 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

DHCP Server σε IOS

Ένας router Cisco κάνει τέλειο DHCP server για ένα μικρό site. Εξαίρεσε πρώτα τις static διευθύνσεις, μετά όρισε ένα pool — network, gateway, DNS, lease time.

IOS — ενα DHCP pool για το LAN
# 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
⚠ Παγιδα — Εξαιρεσε ΠΡΙΝ Βασιστεις στο Pool

Η δήλωση network κάνει τον router πρόθυμο να κάνει lease κάθε διεύθυνση σε αυτό το subnet — μαζί με το gateway σου .1 και τυχόν static servers — εκτός αν τα έχεις εξαιρέσει. Αν παραλείψεις το ip dhcp excluded-address, το DHCP θα δώσει ευχαρίστως σε έναν client το ίδιο IP με τον router σου ή έναν εκτυπωτή, και θα κυνηγάς ένα φάντασμα διπλής διεύθυνσης για μια ώρα. Εξαίρεσε πρώτα το static block, κάθε φορά.

Επαληθευσε τα Leases Ασφαλες να το Τρεξεις

IOS — επιβεβαιωσε οτι το DHCP μοιραζει διευθυνσεις
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 Relay — Οταν ο Server Ειναι Αλλου

Το DHCP χρησιμοποιεί broadcasts, και οι router δεν προωθούν broadcasts. Οπότε ένας client στο VLAN 20 δεν φτάνει έναν DHCP server στο VLAN 10 — εκτός αν η πύλη κάνει relay το αίτημα. Αυτό είναι το ip helper-address.

IOS — relay DHCP απο ενα subnet client σε κεντρικο server
# Στο 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.
💡 Pro Tip — Το helper-address Παει στην Πλευρα του Client, Οχι του Server

Το πιο συχνό λάθος 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 μπερδεύει τον κόσμο εξαιτίας τεσσάρων όρων που ακούγονται παρόμοιοι. Καρφωσέ τους μία φορά και κάθε εντολή 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. Τίποτα δεν μεταφράζεται μέχρι να το κάνεις.

IOS — σημειωσε τα interfaces (παντα το βημα ενα)
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

PAT — Ενα Δημοσιο IP για Ολο το LAN

Αυτό είναι το NAT που θα ρυθμίζεις το 95% του χρόνου. Το PAT (NAT overload) αντιστοιχίζει κάθε inside host στο μοναδικό δημόσιο IP στο interface WAN σου, κρατώντας τις ροές χωριστές με αριθμό port. Είναι ακριβώς αυτό που κάνει ο router του σπιτιού σου.

IOS — PAT overload στο IP του interface WAN
# 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.
⚠ Παγιδα — Χωρις Route, Χωρις NAT

Το 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

Static NAT — Port Forwarding

Το PAT αφήνει τους inside hosts να φτάνουν έξω. Για να αφήσεις το έξω να φτάσει ΜΕΣΑ — δημοσίευσε έναν web server, έναν mail server, ένα NVR καμερών — χρειάζεσαι μια static αντιστοίχιση: ένα σταθερό δημόσιο IP:port σε ένα σταθερό ιδιωτικό IP:port.

IOS — προωθησε ενα δημοσιο port σε εσωτερικο server
# Δημοσίευσε το εσωτερικό 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 ανοίγει τη μετάφραση διεύθυνσης, όχι την πόρτα.
💡 Pro Tip — Προωθησε Μονο το Ακριβες Port που Εννοεις

Προτίμησε τη μορφή tcp <ip> <port> interface … <port> από το να αντιστοιχίσεις ολόκληρη διεύθυνση όποτε μπορείς. Το να εκθέσεις μία θύρα υπηρεσίας (443) είναι πολύ μικρότερη επιφάνεια επίθεσης από το να δημοσιεύσεις έναν ολόκληρο host στο internet. Και πάντα συνδύαζε ένα static NAT με ένα inbound ACL που επιτρέπει μόνο αυτό το port από τις πηγές που το χρειάζονται — ένα προωθημένο port RDP ή κάμερας ανοιχτό σε όλο το internet είναι μία από τις πιο σαρωμένες τρύπες που υπάρχουν.

06

Επαληθευσε & Κανε Troubleshooting στο NAT Ασφαλες να το Τρεξεις

Δύο εντολές απαντούν σχεδόν σε κάθε ερώτημα NAT: τι μεταφράζεται τώρα, και γίνονται καν μεταφράσεις.

IOS — ο πινακας μεταφρασεων 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 *
⚠ Παγιδα — Το "show ip nat translations" Ειναι Αδειο

Ένας άδειος δυναμικός πίνακας ενώ οι 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

MikroTik ↔ Cisco — Οι Ιδιες Δυο Δουλειες

Αν έχεις στήσει masquerade και dst-nat σε RouterOS, το NAT της Cisco είναι η ίδια έννοια με διαφορετικές λέξεις-κλειδιά. Ορίστε η απευθείας αντιστοίχιση.

MikroTik / RouterOSCisco IOS
/ip pool + /ip dhcp-serverip dhcp pool + ip dhcp excluded-address
dhcp-relayip 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 trackingshow ip nat translations
💡 Η Πραγματικη Διαφορα

Στο MikroTik, το NAT είναι μια ενέργεια firewall — ένας κανόνας στην αλυσίδα srcnat/dstnat, αξιολογούμενος μαζί με όλα τα υπόλοιπα. Στη Cisco, το NAT είναι δικό του υποσύστημα: σημειώνεις τα interfaces inside/outside και γράφεις κανόνες ip nat ξεχωριστά από το ACL/firewall. Ίδιο αποτέλεσμα, διαφορετικό νοητικό μοντέλο. Όταν τρέχουμε μεικτά sites — ένα edge MikroTik και core Cisco, κοινό σε SMB της Κρήτης — αυτός ο πίνακας είναι αυτό που κρατάει τα δύο ξεκάθαρα στο μυαλό όλων.

Συμπερασματα

  1. Εξαίρεσε τις static διευθύνσεις πριν βασιστείς σε ένα DHCP pool. Η δήλωση network προσφέρει ολόκληρο το subnet· το ip dhcp excluded-address είναι το μόνο πράγμα που εμποδίζει το DHCP από το να κάνει lease το gateway και τους servers σου κάτω από τα πόδια σου.
  2. Οι router δεν προωθούν broadcasts — γι' αυτό υπάρχει το relay. Το ip helper-address πάει στο interface που βλέπει τους clients, δείχνοντας σε κεντρικό DHCP server. Ένα ανά subnet client.
  3. Μάθε τους τέσσερις όρους NAT μία φορά. inside/outside = ποια πλευρά του router· local/global = ιδιωτική/δημόσια διεύθυνση. Κάθε εντολή ip nat διαβάζεται καθαρά μετά από αυτό.
  4. Σημείωσε πρώτα τα interfaces. Χωρίς ip nat inside/outside δεν υπάρχει μετάφραση, όσο σωστοί κι αν είναι οι κανόνες. Interfaces σημειωμένα → route παρόν → κανόνας NAT.
  5. Το PAT (overload) είναι το καθημερινό NAT. Ένα ACL για το LAN συν ip nat inside source list … interface … overload βάζει όλο το γραφείο πίσω από ένα δημόσιο IP.
  6. Το static NAT δημοσιεύει προς τα μέσα — προώθησε το ακριβές port, και βάλε firewall. Το NAT ανοίγει τη μετάφραση, όχι την πόρτα· συνδύαζε κάθε port-forward με ένα inbound ACL περιορισμένο σε ακριβώς αυτή την υπηρεσία και πηγή.
  7. Δύο εντολές show κάνουν debug σχεδόν τα πάντα. Το show ip nat translations (τι είναι αντιστοιχισμένο) και το show ip nat statistics (γίνεται καν) — ένας άδειος πίνακας δείχνει κατευθείαν στη σήμανση interface, το wildcard του ACL, ή ένα route που λείπει.

Στηνεις πυλη για γραφειο, ξενοδοχειο ή SMB στην Κρητη;

Ρυθμίζω DHCP, NAT, και port-forwarding σε edges Cisco και MikroTik με τους κανόνες firewall που πραγματικά προστατεύουν ό,τι δημοσιεύεται, και τεκμηριώνω κάθε αντιστοίχιση ώστε κανείς να μη χρειαστεί να την κάνει reverse-engineer σε έναν χρόνο.

Κλεισε μια Discovery Call →