Cisco NAT

Содержание

Трансляция адресов (NAT)

dyn5(config)#ip nat inside source list natlist interface fa0/0 ?
  overload    Overload an address translation
  reversible  Allow out->in traffic
  vrf         Specify vrf

Questionmark.jpg

Почитать про опцию reversible

Статическая трансляция адресов

Внутренний интерфейс:

dyn3(config)# int fa0/0
dyn3(config-if)# ip nat inside

Внешний интерфейс:

dyn3(config)# int fa1/0
dyn3(config-if)# ip nat outside

Трансляция адреса в адрес:

dyn3(config)# ip nat inside source static 3.3.3.3 192.168.1.10

Трансляция адреса в адрес интерфейса:

dyn3(config)# ip nat inside source static 3.3.3.3 int fa0/0

Трансляция одной сети в другую (транслируется часть сети, а часть хоста сохраняется)

dyn3(config)# ip nat inside source static network 3.3.3.0 200.3.3.0 /24

Static PAT

Внутренний интерфейс:

dyn3(config)# int fa0/0
dyn3(config-if)# ip nat inside

Внешний интерфейс:

dyn3(config)# int fa1/0
dyn3(config-if)# ip nat outside

Правило трансляции:

dyn3(config)# ip nat inside source static tcp 192.168.2.1 23 interface fa1/0 23

Динамическая трансляция адресов

С использованием обычного пула адресов

С использованием пула адресов, который сохраняет в IP-адресе часть хоста

ACL, который указывает какие адреса транслировать:

access-list 1 permit 10.3.3.0 0.0.0.255

Настройка интерфейсов:

interface Loopback0
 ip address 10.3.3.2 255.255.255.255 secondary
 ip address 10.3.3.3 255.255.255.255 secondary
 ip address 10.3.3.4 255.255.255.255 secondary
 ip address 10.3.3.5 255.255.255.255 secondary
 ip address 10.3.3.7 255.255.255.255 secondary
 ip address 10.3.3.1 255.255.255.255
 ip nat inside
 ip virtual-reassembly
!
interface FastEthernet0/0
 ip address 192.168.1.3 255.255.255.0
 ip nat outside
 ip virtual-reassembly

Создание пула адресов (match-host указывает на то, что адрес хоста должен сохраниться):

ip nat pool DYN 200.2.2.1 200.2.2.5 netmask 255.255.255.0 type match-host


pool может состоять из изолированных частей

c1750-sm3(config)#ip nat pool xgu prefix-length 24
c1750-sm3(config-ipnat-pool)#address 10.84.10.2 10.84.10.4
c1750-sm3(config-ipnat-pool)#address 10.84.10.12 10.84.10.14

Правило трансляции:

ip nat inside source list 1 pool DYN

Проверка:

dyn3#ping 1.1.1.1 source 10.3.3.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.3.3.3
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 148/228/308 ms

dyn3#ping 1.1.1.1 source 10.3.3.4

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.3.3.4
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 192/218/252 ms

dyn3#ping 1.1.1.1 source 10.3.3.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.3.3.5
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 112/192/220 ms

Таблица трансляций (часть хоста сохраняется):

dyn3#sh ip nat tran
Pro Inside global      Inside local       Outside local      Outside global
icmp 200.2.2.3:17      10.3.3.3:17        1.1.1.1:17         1.1.1.1:17
--- 200.2.2.3          10.3.3.3           ---                ---
icmp 200.2.2.4:18      10.3.3.4:18        1.1.1.1:18         1.1.1.1:18
--- 200.2.2.4          10.3.3.4           ---                ---
icmp 200.2.2.5:19      10.3.3.5:19        1.1.1.1:19         1.1.1.1:19
--- 200.2.2.5          10.3.3.5           ---                ---

IP-адреса хостов, для которых нет соответствия в пуле адресов, транслироваться не будут:

dyn3#deb ip nat det
IP NAT detailed debugging is on
dyn3#ping 1.1.1.1 source 10.3.3.7

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.3.3.7

*Sep 14 03:32:48.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
*Sep 14 03:32:48.924: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
*Sep 14 03:32:50.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
*Sep 14 03:32:50.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
*Sep 14 03:32:52.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
*Sep 14 03:32:52.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
*Sep 14 03:32:54.920: NAT: failed to allocate address for 10.3.3.7, list/map 1
*Sep 14 03:32:54.920: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
*Sep 14 03:32:56.952: NAT: failed to allocate address for 10.3.3.7, list/map 1
*Sep 14 03:32:56.952: NAT: translation failed (E), dropping packet s=10.3.3.7 d=1.1.1.1.
Success rate is 0 percent (0/5)

TCP Load Distribution

TCP Load Distribution for NAT

Можно настроить балансировку нагрузки между несколькими серверами для TCP-трафика. Не-TCP трафик транслироваться не будет (если только для него не указаны другие правила трансляции).

NAT rotary.png

Создание пула адресов (таким образом указываются адреса реальных хостов между которыми балансируется нагрузка):

dyn3(config)# ip nat pool POOL6 10.3.3.1 10.3.3.5 prefix-length 24 type rotary 

ACL, который разрешает виртуальный адрес выделенный для хостов (ACL заставляет правило трансляции срабатывать, когда маршрутизатор получает TCP-трафик на этот адрес):

dyn3(config)# access-list 6 permit 200.3.3.3

Правило трансляции (если с outside-интерфейса придет TCP-трафик с адресом получателя, который совпадает с ACL, то IP-адрес получателя будет транслирован в один из адресов указанного пула):

dyn3(config)# ip nat inside destination list 6 pool POOL6 

Интерфейсы на dyn1:

dyn3(config)# int lo0
dyn3(config-if)# ip nat inside
dyn3(config-if)# int fa0/0
dyn3(config-if)# ip nat outside

Проверка (два соединения telnet на адрес 200.3.3.3):

dyn1# telnet 200.3.3.3
Trying 200.3.3.3 ... Open


User Access Verification

Password:
dyn3>
dyn1#sh session
Conn Host                Address             Byte  Idle Conn Name
   1 200.3.3.3           200.3.3.3              0     1 200.3.3.3
*  2 200.3.3.3           200.3.3.3              0     0

Таблица трансляций:

dyn3# sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 200.3.3.3:23       10.3.3.4:23        192.168.1.1:34506  192.168.1.1:34506
tcp 200.3.3.3:23       10.3.3.5:23        192.168.1.1:13040  192.168.1.1:13040

Если соединений больше, чем адресов в пуле, то снова используется первый адрес. Например, для указанного примера, для 6,7,8 подключения будут использоваться те же адреса:

dyn3#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 200.3.3.3:23       10.3.3.1:23        192.168.1.1:12817  192.168.1.1:12817
tcp 200.3.3.3:23       10.3.3.1:23        192.168.1.1:28047  192.168.1.1:28047
tcp 200.3.3.3:23       10.3.3.2:23        192.168.1.1:24368  192.168.1.1:24368
tcp 200.3.3.3:23       10.3.3.2:23        192.168.1.1:55287  192.168.1.1:55287
tcp 200.3.3.3:23       10.3.3.3:23        192.168.1.1:17925  192.168.1.1:17925
tcp 200.3.3.3:23       10.3.3.3:23        192.168.1.1:19233  192.168.1.1:19233
tcp 200.3.3.3:23       10.3.3.4:23        192.168.1.1:18764  192.168.1.1:18764
tcp 200.3.3.3:23       10.3.3.5:23        192.168.1.1:16435  192.168.1.1:16435

PAT

Создание ACL:

dyn3(config)#access-list 7 permit 10.3.3.1
dyn3(config)#access-list 7 permit 10.3.3.2
dyn3(config)#access-list 7 permit 10.3.3.3
dyn3(config)#access-list 7 permit 10.3.3.4
dyn3(config)#access-list 7 permit 10.3.3.5

Первый вариант создания правила трансляции (параметр overload в конце команды добавится автоматически):

dyn3(config)#ip nat inside source list 7 interface fa0/0

Второй вариант требует создания пула адресов и соответствующего правила:

dyn3(config)# ip nat pool 7 192.168.1.7 192.168.1.7 prefix-length 24
dyn3(config)# ip nat inside source list 7 pool 7 overload

NAT и HSRP

Пример топологии

HSRP NAT.png

На маршрутизаторах dyn1 и dyn3 настроена трансляция адресов с привязкой к состоянию HSRP группы.

Настройки хостов

На qua2, qua4 настроен маршрут по умолчанию:

ip route 0.0.0.0/0 192.168.1.100

На dyn5 настроен маршрут по умолчанию:

ip route 0.0.0.0 0.0.0.0 192.168.2.100

Базовые настройки маршрутизаторов

Адреса интерфейсов dyn1:

interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
!
interface FastEthernet1/0
 ip address 192.168.2.1 255.255.255.0

Адреса интерфейсов dyn3:

interface FastEthernet0/0
 ip address 192.168.1.3 255.255.255.0
!
interface FastEthernet1/0
 ip address 192.168.2.3 255.255.255.0

Настройка HSRP

Настройки HSRP на dyn1:

interface FastEthernet0/0
 standby 1 ip 192.168.1.100
 standby 1 priority 110
 standby 1 preempt
 standby 1 name HSRP_NAT
 standby 1 track FastEthernet1/0 50
!
interface FastEthernet1/0
 standby 2 ip 192.168.2.100
 standby 2 priority 110
 standby 2 preempt
 standby 2 track FastEthernet0/0 50

Настройки HSRP на dyn3:

interface FastEthernet0/0
 standby 1 ip 192.168.1.100
 standby 1 preempt
 standby 1 name HSRP_NAT
!
interface FastEthernet1/0
 standby 2 ip 192.168.2.100
 standby 2 preempt

Настройка NAT

Настройка интерфейсов для трансляции адресов (одинаково на dyn1 и dyn3):

interface FastEthernet0/0
 ip nat inside
!
interface FastEthernet1/0
 ip nat outside

Настройка правила трансляции адресов с учётом состояния HSRP (одинаково на dyn1 и dyn3):

ip nat inside source static 192.168.1.2 192.168.2.2 redundancy HSRP_NAT

Трансляция будет выполняться только в том случае, если статус HSRP группы HSRP_NAT -- Active.

Stateful NAT (SNAT) с HSRP

Пример топологии

HSRP NAT.png

На маршрутизаторах dyn1 и dyn3 настроена трансляция адресов с привязкой к состоянию HSRP группы.

Настройки хостов

На qua2, qua4 настроен маршрут по умолчанию:

ip route 0.0.0.0/0 192.168.1.100

На dyn5 настроен маршрут по умолчанию:

ip route 0.0.0.0 0.0.0.0 192.168.2.100

Базовые настройки маршрутизаторов

Адреса интерфейсов dyn1:

interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
!
interface FastEthernet1/0
 ip address 192.168.2.1 255.255.255.0

Адреса интерфейсов dyn3:

interface FastEthernet0/0
 ip address 192.168.1.3 255.255.255.0
!
interface FastEthernet1/0
 ip address 192.168.2.3 255.255.255.0

Настройка HSRP

Настройки HSRP на dyn1:

interface FastEthernet0/0
 standby 1 ip 192.168.1.100
 standby 1 priority 110
 standby 1 preempt
 standby 1 name HSRP_NAT
 standby 1 track FastEthernet1/0 50
!
interface FastEthernet1/0
 standby 2 ip 192.168.2.100
 standby 2 priority 110
 standby 2 preempt
 standby 2 track FastEthernet0/0 50

Настройки HSRP на dyn3:

interface FastEthernet0/0
 standby 1 ip 192.168.1.100
 standby 1 preempt
 standby 1 name HSRP_NAT
!
interface FastEthernet1/0
 standby 2 ip 192.168.2.100
 standby 2 preempt

Настройка NAT

!
ip nat Stateful id 1
     redundancy HSRP_NAT
         mapping-id 100
         interface  FastEthernet0/0
         protocol   udp
ip nat pool SNAT 192.1.1.1 192.1.1.2 prefix-length 24
ip nat inside source list 1 pool SNAT mapping-id 100
!

Просмотр статистики

Как уже было сказано, nat - ресурсопотребляющая операция, для оценки ситуации, может потребоваться просмотр статистики.
Показать статистику трансляций show ip nat statistics

Router#sh ip nat statistics
Total active translations: 53161 (10 static, 53151 dynamic; 53151 extended)
Outside interfaces:
FastEthernet0/1
Inside interfaces:
Virtual-Template1, Virtual-Access4, Virtual-Access8, Virtual-Access13
Virtual-Access25
Hits: 6890278 Misses: 135179
Expired translations: 82028
Dynamic mappings:
-- Inside Source
[Id: 1] access-list 11 interface FastEthernet0/1 refcount 53151

Ограничения NAT

NAT - процесс, который сильно загружает процессорное время маршрутизатора. Очень часто возникает необходимость в ограничении временных или количественных характеристик данного процесса
Методы:

ip nat translation max-entries {number | all-vrf number | host ip-address number | list listname number | vrf name number} 

Пример:

Router(config)# ip nat translation max-entries all-host 200    # 200 сессий на один адрес

Смена времени жизни (по умолчанию 24 часа)

Router(config)# ip nat translation timeout время

Смена времени жизни порта (tcp | udp), опять же значение по умолчанию 24 часа

Router(config)#ip nat translation tcp-timeout 1200
Router(config)#ip nat translation udp-timeout 30
Router(config)#ip nat translation icmp-timeout 5

Определение порта, отличного от общепринятого

Для определения порта, отличного от общепринятого используется команда ip nat service Пример:

Router(config)#ip nat service list 10 ftp tcp port 2021
Router(config)#access-list 10 permit 10.84.1.101

В этом примере ftp перебрасывается на нестандартный порт 2021

Фильтрация Nat, по определенному порту

Порой необходимо отключить Nat, для обеспечения работоспособности того или иного сервиса. Делается это следующим образом:

c1750-sm3(config)#no ip nat service sip udp port 5060
c1750-sm3(config)#no ip nat service sip tcp port 5060

Протоколирование операций Nat

Протоколирование NAT translations включается или выключается с помощью команды syslog:

Router(config)# ip nat log translations syslog

Недокументированные особенности

Использование NAT - активирует NBAR (Network Based Application Recognition/ механизм распознавания потока данных) при этом выделяется ресурсы маршрутизатора под это приложение Пример

c871-tsum#sh ip nbar resources
% Error: NBAR has not been activated
c871-tsum#conf t
c871-tsum(config)#int loopback 100
c871-tsum(config-if)#ip nat outside
c871-tsum(config-if)#do show ip nbar resources
NBAR memory usage for tracking Stateful sessions
   Max-age              : 120 secs
   Initial memory       : 2066 KBytes
   Max initial memory   : 6886 KBytes
   Memory expansion     : 68 KBytes
   Max memory expansion : 68 KBytes
   Memory in use        : 2066 KBytes
   Max memory allowed   : 13773 KBytes
   Active links         : 0
   Total links          : 30383
 

Источник xgu.ru