NAT és PAT: teljes magyarázat

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:

  1. 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).
  2. 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:

  1. Ha IPSec, akkor ellenőrizze a bemeneti hozzáférési listát
  2. decryption – CET (Cisco Encryption Technology) vagy IPSec esetén
  3. check input access list
  4. check input rate limits
  5. input accounting
  6. redirect. to web cache
  7. policy routing
  8. routing
  9. NAT inside to outside (local to global translation)
  10. crypto (check map and mark for encryption)
  11. check output access list
  12. inspect (Context-based Access Control (CBAC))
  13. TCP intercept
  14. encryption
  15. Queueing

Outside to Inside:

  1. Ha IPSec, akkor ellenőrizd a bemeneti hozzáférési listát
  2. decryption – CET vagy IPSec esetén
  3. check input access list
  4. check input rate limits
  5. input accounting
  6. redirect to web cache
  7. NAT outside to inside (global to local). fordítás)
  8. policy routing
  9. routing
  10. crypto (check map and mark for encryption)
  11. check output access list
  12. inspect CBAC
  13. TCP intercept
  14. encryption
  15. 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

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.