Difference between revisions of "Cisco NAT"

From HackerNet
Jump to: navigation, search
Line 1: Line 1:
 
Network Address Translation används för att skriva om adresser i IP-paket. Det är inte säkert att NAT fungerar tillsammans med ACL:er som använder '''log''' så det bör man ha i åtanke. För att accelerera NAT-processen finns '''ip nat create flow-entries''' som är påslaget default i [[Cisco_IOS|IOS]]-routrar.  
 
Network Address Translation används för att skriva om adresser i IP-paket. Det är inte säkert att NAT fungerar tillsammans med ACL:er som använder '''log''' så det bör man ha i åtanke. För att accelerera NAT-processen finns '''ip nat create flow-entries''' som är påslaget default i [[Cisco_IOS|IOS]]-routrar.  
  
Testa om NAT funkar
+
Generell metod för att testa om NAT fungerar.
 
  debug ip nat
 
  debug ip nat
+
  telnet 1.1.1.1  
  telnet 1.1.1.1 /source lo0
 
 
  who
 
  who
  
==Overload==
+
==Dynamic NAT==
 +
===NAT Overload===
 +
Alla adresser göms bakom en IP-adress, kallas även PAT.
 
  access-list 10 permit [ip-address] [wildcard-mask]
 
  access-list 10 permit [ip-address] [wildcard-mask]
 
  ip nat inside source list 10 interface [outside-interface] overload
 
  ip nat inside source list 10 interface [outside-interface] overload
Line 23: Line 24:
 
  ip nat inside source list ALL interface Gi2 overload
 
  ip nat inside source list ALL interface Gi2 overload
 
  ip nat inside source static 172.16.0.20 interface Gi2
 
  ip nat inside source static 172.16.0.20 interface Gi2
 +
 +
===NAT Pool===
 +
interface Gi0/1
 +
  ip address 100.10.10.10 255.255.255.0
 +
  ip nat outside
 +
interface Gi0/2
 +
  ip address 192.168.0.1 255.255.255.0
 +
  ip nat inside
 +
NAT
 +
ip access-list standard CLIENT-LIST
 +
  permit 192.168.0.0 0.0.0.15
 +
 +
ip nat pool DYNAMIC 100.10.10.15 100.10.10.19 prefix-length 29
 +
ip nat inside source list CLIENT-LIST pool DYNAMIC
 +
Interface IP ska ej ingå i NAT-poolen.
 +
 +
Verify
 +
show ip nat translations
 +
show ip nat pool name DYNAMIC
 +
 +
===TCP Load Distribution===
 +
Rotary address pool
 +
ip nat pool ROTARY prefix-length 24 type rotary
 +
  address 10.0.0.10 10.0.0.10
 +
  address 10.0.0.11 10.0.0.11
 +
  address 10.0.0.12 10.0.0.12
 +
 +
ip nat inside destination list DISTRIBUTE_LOAD pool ROTARY
  
 
==Static NAT==
 
==Static NAT==
 +
1:1 NAT
 
  interface Gi0/1
 
  interface Gi0/1
 
   ip address 100.10.10.10 255.255.255.0
 
   ip address 100.10.10.10 255.255.255.0
Line 33: Line 63:
 
NAT
 
NAT
 
  ip nat inside source static 192.168.0.20 100.10.10.20 [no-alias]
 
  ip nat inside source static 192.168.0.20 100.10.10.20 [no-alias]
''Med no-alias besvaras inte ARP-förfrågningar för den IP-adressen.''
+
''Med no-alias besvaras inte ARP-förfrågningar för den IP-adressen på utsidan.''
  
 
Verify
 
Verify
Line 59: Line 89:
 
  ip nat inside source static 10.1.1.1 20.0.0.30 extendable
 
  ip nat inside source static 10.1.1.1 20.0.0.30 extendable
  
==Dynamic NAT==
+
===Static Policy NAT===
interface Gi0/1
 
  ip address 100.10.10.10 255.255.255.0
 
  ip nat outside
 
interface Gi0/2
 
  ip address 192.168.0.1 255.255.255.0
 
  ip nat inside
 
NAT
 
ip access-list standard CLIENT-LIST
 
  permit 192.168.0.0 0.0.0.15
 
 
ip nat pool DYNAMIC 100.10.10.15 100.10.10.19 prefix-length 29
 
ip nat inside source list CLIENT-LIST pool DYNAMIC
 
Interface IP ska ej ingå i NAT-poolen.
 
 
 
Verify
 
show ip nat translations
 
show ip nat pool name DYNAMIC
 
 
 
==Static Policy NAT==
 
 
Policy NAT använder route-maps. Med set interface kan man bestämma vilket interface paketen ska skickas ut på och därmed natas.
 
Policy NAT använder route-maps. Med set interface kan man bestämma vilket interface paketen ska skickas ut på och därmed natas.
 
  interface Gi0/0
 
  interface Gi0/0
Line 102: Line 113:
 
  ip nat inside source route-map ROUTE-MAP pool POOL reversible  
 
  ip nat inside source route-map ROUTE-MAP pool POOL reversible  
  
==Overlapping Subnets==
+
==Dubbel-NAT==
Antingen får man NATa på båda sidorna eller bara ena.
+
Har man överlappande subnät får man antingen NATa på båda sidorna eller bara ena. I detta exemplet kommunicerar 172.20.0.10 (server1) mot ip 172.20.0.50 som natas till 30.0.0.5 (server2) medans server2 ser server1 från 30.0.0.50.
 
 
===Dubbel-NAT===
 
172.20.0.10 kommunicerar mot 172.20.0.50 som natas till 30.0.0.5 medans 30.0.0.5 ser trafik från 30.0.0.50.
 
 
  ip nat inside source static 172.20.0.10 30.0.0.50
 
  ip nat inside source static 172.20.0.10 30.0.0.50
 
  ip nat outside source static 30.0.0.5 172.20.0.50 add-route
 
  ip nat outside source static 30.0.0.5 172.20.0.50 add-route
 
Utan add-route måste en statisk route användas för att peka 172.20.0.50 till outside interface.
 
Utan add-route måste en statisk route användas för att peka 172.20.0.50 till outside interface.
 
  show ip nat translations
 
  show ip nat translations
 
==TCP Load Distribution==
 
Rotary address pool
 
ip nat pool ROTARY prefix-length 24 type rotary
 
  address 10.0.0.10 10.0.0.10
 
  address 10.0.0.11 10.0.0.11
 
  address 10.0.0.12 10.0.0.12
 
 
ip nat inside destination list DISTRIBUTE_LOAD pool ROTARY
 
  
 
==Stateful NAT==
 
==Stateful NAT==
Line 163: Line 162:
 
Verify
 
Verify
 
  show ipv6 nat translations
 
  show ipv6 nat translations
 +
 +
'''NPTv6''' <br/>
 +
IPv6-to-IPv6 Network Prefix Translation är NAT från IPv6 till IPv6. Eftersom det finns en 1:1-relation mellan inside och outside prefix behöver inte routern hålla något state i data plane för NAT:en. Detta underlättar multihoming.
 +
nat66 prefix 2002:ABC1::/64 Outside 2002:ABC2::/64
 +
 +
interface GigabitEthernet0
 +
  nat66 inside
 +
interface GigabitEthernet1
 +
  nat66 outside
 +
 +
Verify
 +
show nat66 prefix
 +
show nat66 statistics
 +
 +
==MPLS VPN==
 +
NAT-integration med MPLS VPN tillåter flera MPLS VPN att konfigureras att fungera tillsammans på samma enhet. NAT kan skilja på vilken VPN den får in trafik på även om alla använder samma IP-adresser. Detta låter flera kunder dela på samma services men ändå var skiljda logiskt. Se även [[Cisco_MPLS|Cisco MPLS]].
 +
 +
interface Gi0/1
 +
  ip address 100.10.10.10 255.255.255.0
 +
  ip nat outside
 +
interface Gi0/2
 +
  vrf forwarding VPN1
 +
  ip address 192.168.0.1 255.255.255.0
 +
  ip nat inside
 +
interface Gi0/3
 +
  vrf forwarding VPN2
 +
  ip address 192.168.0.1 255.255.255.0
 +
  ip nat inside
 +
 +
access-list 1 permit 192.168.0.0 0.0.255.255
 +
ip nat pool inside 100.10.10.20 100.10.10.40 netmask 255.255.255.0
 +
 +
ip nat inside source list 1 pool inside vrf VPN1 overload
 +
ip nat inside source list 1 pool inside vrf VPN2 overload
 +
 +
ip route vrf VPN1 0.0.0.0 0.0.0.0 Gi0/1 100.10.10.1
 +
ip route vrf VPN2 0.0.0.0 0.0.0.0 Gi0/1 100.10.10.1
 +
 +
Verify
 +
show ip nat translations vrf VPN1
  
 
[[Category:Cisco]]
 
[[Category:Cisco]]

Revision as of 21:30, 28 November 2016

Network Address Translation används för att skriva om adresser i IP-paket. Det är inte säkert att NAT fungerar tillsammans med ACL:er som använder log så det bör man ha i åtanke. För att accelerera NAT-processen finns ip nat create flow-entries som är påslaget default i IOS-routrar.

Generell metod för att testa om NAT fungerar.

debug ip nat
telnet 1.1.1.1 
who

Dynamic NAT

NAT Overload

Alla adresser göms bakom en IP-adress, kallas även PAT.

access-list 10 permit [ip-address] [wildcard-mask]
ip nat inside source list 10 interface [outside-interface] overload

Man kan även skapa en pool med endast en ip adress och köra overload på den.

Verify

show ip nat translations
show ip nat statistics

Default Interface

NAT Default interface innebär att all trafik som initieras utifrån och natas in går till en och samma IP men däremot kan trafik som initieras inifrån natas till interface IP (nat overload).

ip access-list standard ALL
 permit any
ip nat inside source list ALL interface Gi2 overload
ip nat inside source static 172.16.0.20 interface Gi2

NAT Pool

interface Gi0/1
 ip address 100.10.10.10 255.255.255.0
 ip nat outside
interface Gi0/2
 ip address 192.168.0.1 255.255.255.0
 ip nat inside

NAT

ip access-list standard CLIENT-LIST
 permit 192.168.0.0 0.0.0.15

ip nat pool DYNAMIC 100.10.10.15 100.10.10.19 prefix-length 29
ip nat inside source list CLIENT-LIST pool DYNAMIC

Interface IP ska ej ingå i NAT-poolen.

Verify

show ip nat translations
show ip nat pool name DYNAMIC

TCP Load Distribution

Rotary address pool

ip nat pool ROTARY prefix-length 24 type rotary
 address 10.0.0.10 10.0.0.10
 address 10.0.0.11 10.0.0.11
 address 10.0.0.12 10.0.0.12

ip nat inside destination list DISTRIBUTE_LOAD pool ROTARY

Static NAT

1:1 NAT

interface Gi0/1
 ip address 100.10.10.10 255.255.255.0
 ip nat outside
interface Gi0/2
 ip address 192.168.0.1 255.255.255.0
 ip nat inside

NAT

ip nat inside source static 192.168.0.20 100.10.10.20 [no-alias]

Med no-alias besvaras inte ARP-förfrågningar för den IP-adressen på utsidan.

Verify

show ip nat translations
show ip nat statistics
show ip alias

DYNAMIC är IP-adresser som används för NAT.

Static PAT

interface Gi0/1
 ip address 100.10.10.10 255.255.255.0
 ip nat outside
interface Gi0/2
 ip address 192.168.0.1 255.255.255.0
 ip nat inside

PAT / port forward.

ip nat inside source static tcp 192.168.0.55 80 100.10.10.10 80

Verify

show ip nat translations
show ip aliases

Static Extendable NAT

Om man vill ha flera ip-adresser som ska natas till samma inside IP.

ip nat inside source static 10.1.1.1 20.0.0.20 extendable
ip nat inside source static 10.1.1.1 20.0.0.30 extendable

Static Policy NAT

Policy NAT använder route-maps. Med set interface kan man bestämma vilket interface paketen ska skickas ut på och därmed natas.

interface Gi0/0
 ip nat outside

ip access-list extended TO_OUTSIDE
 permit ip 192.168.0.0 0.0.0.255 any

route-map TO_ISP1 permit 10
 match ip address TO_OUTSIDE
 set interface Gi0/0

ip nat inside source route-map TO_ISP1 interface Gi0/0 overload

Man kan också låta routingtabellen styra och sedan NATa utifrån vilket interface som är egress.

route-map TO_ISP2 permit 10
 match interface Gi0/1
ip nat inside source static 192.168.0.10 100.10.10.10 route-map TO_ISP2

Reversible NAT

Man kan konfigurera nat som endast funkar efter att ha blivit initierad från andra hållet.

ip nat pool POOL 100.10.10.15 100.10.10.19 netmask 255.255.255.0
ip nat inside source route-map ROUTE-MAP pool POOL reversible 

Dubbel-NAT

Har man överlappande subnät får man antingen NATa på båda sidorna eller bara ena. I detta exemplet kommunicerar 172.20.0.10 (server1) mot ip 172.20.0.50 som natas till 30.0.0.5 (server2) medans server2 ser server1 från 30.0.0.50.

ip nat inside source static 172.20.0.10 30.0.0.50
ip nat outside source static 30.0.0.5 172.20.0.50 add-route

Utan add-route måste en statisk route användas för att peka 172.20.0.50 till outside interface.

show ip nat translations

Stateful NAT

Stateful NAT with HSRP. During failovers, NAT translated IP addresses on devices may be different from the IP address before the failover, because no state information is exchanged between active and standby devices. HSRP Virtual IP Address (VIP) cannot be used by NAT pools.

interface gi2
 standby 100 name SNAT
ip nat stateful id 1 redundancy SNAT mapping-id 10
ip nat pool SNATPOOL 10.1.1.1 10.1.1.9 prefix-length 24
ip nat inside source route-map ROUTE-MAP pool SNATPOOL mapping-id 10 overload

Primary

ip nat stateful id 1 primary 10.10.10.10 peer 10.22.22.22 mapping-id 10

Backup

ip nat stateful id 1 backup 10.2.2.2 peer 10.10.10.10 mapping-id 10

Verify

show ip snat distributed verbose

NVI

Med Nat Virtual Interface kan man adressöversätta mellan VRF:er och man använder inte inside och outside med denna metod. NAT Virtual Interfaces are not supported in the Cisco IOS XE software.

interface Gi0/1
 ip nat enable
interface Gi0/2
 ip nat enable

ip nat source static 192.168.0.1 100.10.10.10

Show

show ip nat nvi translations
show ip nat translations verbose

IPv6

NAT – Protocol Translation kan användas vid IPv4 till IPv6 migreringar och ger bi-directional connectivity mellan domänerna.

interface gi 0/0
 ipv6 nat
interface gi 0/1
 ipv6 nat
ipv6 nat v6v4 source 3001:11:0:1::1 150.11.3.1
ipv6 nat v4v6 source static 150.11.2.2 2000::960b:0202
ipv6 nat prefix 2000::/96

NAT-PT kräver ett /96 prefix

Verify

show ipv6 nat translations

NPTv6
IPv6-to-IPv6 Network Prefix Translation är NAT från IPv6 till IPv6. Eftersom det finns en 1:1-relation mellan inside och outside prefix behöver inte routern hålla något state i data plane för NAT:en. Detta underlättar multihoming.

nat66 prefix 2002:ABC1::/64 Outside 2002:ABC2::/64

interface GigabitEthernet0
 nat66 inside
interface GigabitEthernet1
 nat66 outside

Verify

show nat66 prefix
show nat66 statistics

MPLS VPN

NAT-integration med MPLS VPN tillåter flera MPLS VPN att konfigureras att fungera tillsammans på samma enhet. NAT kan skilja på vilken VPN den får in trafik på även om alla använder samma IP-adresser. Detta låter flera kunder dela på samma services men ändå var skiljda logiskt. Se även Cisco MPLS.

interface Gi0/1
 ip address 100.10.10.10 255.255.255.0
 ip nat outside
interface Gi0/2
 vrf forwarding VPN1
 ip address 192.168.0.1 255.255.255.0
 ip nat inside
interface Gi0/3
 vrf forwarding VPN2
 ip address 192.168.0.1 255.255.255.0
 ip nat inside

access-list 1 permit 192.168.0.0 0.0.255.255
ip nat pool inside 100.10.10.20 100.10.10.40 netmask 255.255.255.0

ip nat inside source list 1 pool inside vrf VPN1 overload
ip nat inside source list 1 pool inside vrf VPN2 overload

ip route vrf VPN1 0.0.0.0 0.0.0.0 Gi0/1 100.10.10.1
ip route vrf VPN2 0.0.0.0 0.0.0.0 Gi0/1 100.10.10.1

Verify

show ip nat translations vrf VPN1