A hálózati címfordítás (NAT) az IP-csomagok fejlécében szereplő IP-címadatok módosítását jelenti a forgalomirányító eszközön való áthaladás során.
A NAT-nak két típusa van:
- NAT
- Statikus NAT: A NAT legegyszerűbb típusa az IP-címek egy az egyben történő fordítását biztosítja. Gyakran egy az egyhez NAT-nak is nevezik. Ennél a NAT-típusnál csak az IP-címeket, az IP-fejléc ellenőrző összegét és az IP-címet tartalmazó magasabb szintű ellenőrző összegeket kell megváltoztatni. A csomag többi része érintetlenül hagyható (legalábbis az alapvető TCP/UDP funkciók esetében, néhány magasabb szintű protokoll további fordítást igényelhet). Az alapvető NAT-ok akkor használhatók, ha két, egymással nem kompatibilis címzésű IP-hálózatot kell összekapcsolni. A statikus NAT esetében a fordítások már a statikus NAT parancs(ok) konfigurálásakor léteznek a NAT fordítási táblában, és mindaddig a fordítási táblában maradnak, amíg a statikus NAT parancs(ok) törlésre nem kerülnek.
- Dinamikus NAT: A dinamikus NAT rendelkezik néhány hasonlósággal és különbséggel a statikus NAT-hoz képest. A statikus NAT-hoz hasonlóan a NAT-útválasztó egy-az-egyhez leképezést hoz létre egy belső helyi és egy belső globális cím között, és megváltoztatja az IP-címeket a csomagokban, amikor azok kilépnek és belépnek a belső hálózatba. A belső helyi címnek a belső globális címhez való hozzárendelése azonban dinamikusan történik. A dinamikus NAT létrehozza a lehetséges belső globális címek egy csoportját, és meghatározza a megfelelési kritériumokat annak meghatározására, hogy mely belső helyi IP-címeket kell lefordítani a NAT segítségével. A dinamikus bejegyzés mindaddig a táblázatban marad, amíg a forgalom alkalmanként áramlik. A dinamikus NAT esetén a fordítások addig nem léteznek a NAT-táblában, amíg az útválasztó nem kap fordítást igénylő forgalmat. A dinamikus fordítások rendelkeznek egy időkorlátos időszakkal, amely után törlődnek a fordítási táblából.
- PAT
- Statikus PAT: A statikus PAT fordítások lehetővé teszik, hogy egy globális cím adott UDP vagy TCP portját egy helyi cím adott portjára fordítsák. A statikus PAT ugyanaz, mint a statikus NAT, azzal a különbséggel, hogy lehetővé teszi a protokoll (TCP vagy UDP) és a port megadását a valós és a leképezett címekhez. A statikus PAT lehetővé teszi, hogy ugyanazt a leképezett címet több különböző statikus utasításban is azonosítsa, feltéve, hogy a port minden utasításnál más és más. Ugyanazt a leképezett címet nem használhatja több statikus NAT-kijelentéshez. Statikus PAT esetén a fordítások már a statikus PAT-parancs(ok) konfigurálásakor léteznek a NAT fordítási táblában, és mindaddig a fordítási táblában maradnak, amíg a statikus PAT-parancs(ok) törlésre nem kerülnek.
- NAT-túlterhelés vagy PAT: Gyakori, hogy egy teljes, általában privát IP-címtartományt, általában magán IP-címekből álló IP-címtartományt egy másik (általában nyilvános) címtartományban lévő egyetlen IP-cím (vagy bizonyos esetekben IP-címek kis csoportja) mögé rejtünk. Az ilyen típusú NAT-ot PAT túlterhelésnek nevezik. A dinamikus bejegyzés addig marad a táblázatban, amíg a forgalom alkalmanként áramlik. A túlterheléses PAT esetén a fordítások nem léteznek a NAT-táblában, amíg az útválasztó nem kap fordítást igénylő forgalmat. A fordításoknak van egy időkorlátos időszakuk, amely után törlődnek a fordítási táblából.
Példa #1: Statikus forrás NAT
Hogyan fordítja le a 172.16.0.5 IP-címet a 10.16.0.5 ip-címre.
Az ip nat inside meghatározása:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Az ip nat outside meghatározása:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
A statikus NAT bejegyzés meghatározása:
ip nat inside source static 172.16.0.5 10.16.0.5
A statikus NAT esetén a fordítás már a statikus NAT parancs konfigurálásakor létezik a NAT fordítási táblában, és a statikus NAT parancs törléséig a fordítási táblában marad:
Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#
Ha az ügyfél ICMP-csomagot vagy HTTP-kérést küld a webkiszolgálónak, a nat-táblában:
Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 10.16.0.5:1 172.16.0.5:1 10.0.0.100:1 10.0.0.100:1tcp 10.16.0.5:56080 172.16.0.5:56080 10.0.0.100:80 10.0.0.100:80--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#
Emlékezzen: Mivel a leképezett cím statikus NAT esetén minden egyes egymást követő kapcsolatnál ugyanaz, és létezik egy állandó fordítási szabály, a statikus NAT lehetővé teszi, hogy a célhálózaton lévő hosztok forgalmat kezdeményezzenek egy lefordított állomás felé (ha létezik olyan hozzáférési lista, amely ezt lehetővé teszi).
2. példa: Dinamikus forrás NAT
Hogyan fordítja le a 172.16.0.0/28 hálózatot a 10.16.0.0.0/29 hálózatra.
Az ip nat inside meghatározása:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Az ip nat outside meghatározása:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
A NAT fordításban használt nat pool meghatározása:
Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29
Melyik hálózat kerül fordításra:
Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15
A dinamikus forrás NAT meghatározása:
Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip
A dinamikus NAT esetén a fordítások nem léteznek a NAT-táblában, amíg az útválasztó nem kap fordítást igénylő forgalmat.
Ciscozine#sh ip nat translationsCiscozine#
de ha néhány csomag megfelel az ACL-nek..
Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globalicmp 10.0.16.1:2 172.16.0.1:2 10.0.0.100:2 10.0.0.100:2tcp 10.0.16.2:35694 172.16.0.2:35694 10.0.0.100:80 10.0.0.100:80tcp 10.0.16.1:56185 172.16.0.1:56185 10.0.0.100:80 10.0.0.100:80--- 10.0.16.1 172.16.0.1 --- ------ 10.0.16.2 172.16.0.2 --- ---Ciscozine#
Megjegyzés: Ha egy újabb csomag érkezik egy újabb belső állomásról, és NAT-bejegyzésre van szüksége, de az összes összevont IP-cím használatban van, az útválasztó egyszerűen elveti a csomagot.
Ez ellenőrizhető a “debug ip nat” engedélyezésével.
Feb 12 19:26:09.895: NAT: translation failed (E), dropping packet s=172.16.0.5 d=10.0.0.100
A felhasználónak újra kell próbálkoznia, amíg egy NAT-bejegyzés le nem jár, ekkor a NAT funkció a következő csomagot küldő állomásnál működik. Lényegében a belső globális címkészletnek akkorának kell lennie, mint az egyidejűleg az internetet egyszerre használni kívánó hostok maximális száma – kivéve, ha PAT-ot használunk.
Emlékezzünk: A fő különbség a dinamikus NAT és a statikus NAT címtartománya között az, hogy a statikus NAT lehetővé teszi, hogy egy távoli állomás kapcsolatot kezdeményezzen egy lefordított állomással (ha létezik olyan hozzáférési lista, amely ezt lehetővé teszi), míg a dinamikus NAT nem. A statikus NAT esetén ugyanannyi leképezett címre van szükség, mint valódi címre.
3. példa: Statikus PAT
Hogyan lehet két különböző szolgáltatást az interneten közzétenni:
- A webkiszolgáló (172.16.0.5) a 80-as tcp porton hallgat; ez a szerver a 88.88.88.88.88:80 nyilvános címen válaszol az internetről (kívülről).
- Az SSH szerver (172.16.0.6) a 22-es tcp porton hallgat; ez a szerver a 88.88.88.88 nyilvános címen válaszol.88:666 az internetről (kívülről) .
Az ip nat inside meghatározása:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Az ip nat outside meghatározása:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
A statikus PAT meghatározása:
A webszerver a 80-as tcp porton válaszol a “külső” interfészen.
ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80
Az SSH-kiszolgáló a 666-os tcp porton válaszol a ‘külső’ interfészen ; ebben az esetben a valódi portot (22 tcp) a 666-os tcp portra fordítja, amikor az internetről kérés érkezik.
ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666
A statikus NAT-hoz hasonlóan a statikus PAT fordítás is létezik a NAT fordítási táblázatban, amint a statikus PAT parancsot konfigurálja, és a statikus PAT parancs törléséig a fordítási táblázatban marad.
Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#
Ha egy internetes ügyfél HTTP-kérést vagy SSH-kapcsolatot küld (a 666-os tcp porton), a nat-táblában:
Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 56.56.56.56:54686 56.56.56.56:54686tcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 56.56.56.56:33704 56.56.56.56:33704tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#
4. példa: PAT – NAT-túlterhelés
Hogyan oszthat meg egy internetkapcsolatot.
Meghatározza az ip nat inside:
Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside
Meghatározza az ip nat outside:
Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside
Meghatározza, hogy melyik hálózat lesz lefordítva:
Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255
Meghatározza a NAT Overload:
Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload
A dinamikus NAT-hoz hasonlóan a fordítások nem léteznek a NAT-táblában, amíg az útválasztó nem kap fordítást igénylő forgalmat:
Ciscozine#sh ip nat translationsCiscozine#
de ha néhány csomag megfelel az ACL-nek..
Ciscozine#show ip nat translationsPro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:7921 172.16.0.2:7921 95.100.96.233:443 95.100.96.233:443tcp 88.88.88.88:8651 172.16.0.5:8651 173.194.44.18:80 173.194.44.18:80tcp 88.88.88.88:8652 172.16.0.111:8652 173.194.44.18:443 173.194.44.18:443tcp 88.88.88.88:8653 172.16.0.223:8653 173.194.70.84:443 173.194.70.84:443udp 88.88.88.88:64116 172.16.0.222:64116 8.8.8.8:53 8.8.8.8:53udp 88.88.88.88:64756 172.16.0.223:64756 8.8.4.4:53 8.8.4.4:53Ciscozine#
Léteznek más NAT/PAT típusok is?
A válasz IGEN! A NAT/PAT egyik széles körben használt típusa az ip nat outside source; ez a parancs lehetővé teszi a “külső” interfészen belépő és a “belső” interfészen kilépő csomagok forráscímének lefordítását.
Egyszerűbben, ha az első példát nézzük #1
A parancs:
ip nat outside source static 10.0.0.100 192.168.0.100
átfordítja a 10.0.0.100-at a 192.168.0.100-ra , így a kliensnek a 192.168.0-t kell hívnia.100 ip-címet, hogy kapcsolatba lépjen a szerverhálóval, és nem a 10.0.0.100-at.
Egy másik particoláris nat-típus az ip nat inside destination, amelyet akkor használnak, ha több belső eszköz azonos szerverek tükrözött tartalommal, amelyek kívülről egyetlen szerver terheléselosztásának tűnnek.
Egy olyan címkészletet határoz meg, amely a valódi hosztok címeit tartalmazza “type rotary” végződéssel, így a szerverek round-robin módon állnak rendelkezésre. A hozzáférési lista most a virtuális állomás IP-címét engedélyezi, vagyis azt, amit a külvilág az állomás címének hisz. Tehát a virtuális hoszt a 123.123.123.123.132, a valódi hosztok pedig a 172.16.0.2-től 10-ig.
Parciális konfiguráció
interface FastEthernet0/0ip address 172.16.0.0 255.255.255.0ip nat inside!interface FastEthernet0/1ip address 88.88.88.88 255.255.255.252ip nat outside!ip nat pool real-ip-server 172.16.0.2 172.16.0.10 prefix-length 24 type rotaryip nat inside destination list 1 pool real-ip-server!ip route 0.0.0.0 0.0.0.0 FastEthernet0/1!access-list 1 permit 123.123.123.123
Ez a fordítás nem kétirányú. Ehhez egy egy az egyhez statikus NAT-ot kell használnia. Egy “ip nat inside source static” típusú funkciót el lehet érni a fenti konfigurációval egyetlen cím használatával a NAT-poolban, de ez csak a kintről bentre irányuló forgalomra működne.
Hol alkalmazza a nat inside/outside-ot?
Az “ip nat inside” tipikusan a helyi környezetben lévő, az internetre nem továbbítható interfészeken (jellemzően privát IP-címek tartománya), az “ip nat outside” pedig az internetre csatlakozó interfészen kerül beállításra.
Mikor hajtja végre az útválasztó a NAT-ot?
Inside to Outside:
- Ha IPSec, akkor ellenőrizze a bemeneti hozzáférési listát
- decryption – CET (Cisco Encryption Technology) vagy IPSec esetén
- check input access list
- check input rate limits
- input accounting
- redirect. to web cache
- policy routing
- routing
- NAT inside to outside (local to global translation)
- crypto (check map and mark for encryption)
- check output access list
- inspect (Context-based Access Control (CBAC))
- TCP intercept
- encryption
- Queueing
Outside to Inside:
- Ha IPSec, akkor ellenőrizd a bemeneti hozzáférési listát
- decryption – CET vagy IPSec esetén
- check input access list
- check input rate limits
- input accounting
- redirect to web cache
- NAT outside to inside (global to local). fordítás)
- policy routing
- routing
- crypto (check map and mark for encryption)
- check output access list
- inspect CBAC
- TCP intercept
- encryption
- Queueing
Néhány hasznos parancs:
- A NAT néhány statisztikájának megtekintéséhez: show ip nat statistics
- A statikus/dinamikus NAT/PAT bejegyzések teljes listájának megtekintéséhez: show ip nat translations
- A dinamikus nat bejegyzés törléséhez: clear ip na translation *
- A NAT hibakereséséhez: debug ip nat
.