Cisco NAT
Материал из Xgu.ru
- Автор: Наташа Самойленко (и другие)
Содержание
|
[править] Трансляция адресов (NAT)
[править] Статическая трансляция адресов
Внутренний интерфейс:
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-трафика. Не-TCP трафик транслироваться не будет (если только для него не указаны другие правила трансляции).
Создание пула адресов (таким образом указываются адреса реальных хостов между которыми балансируется нагрузка):
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
[править] Пример топологии
На маршрутизаторах 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
[править] Пример топологии
На маршрутизаторах 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-адресом
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
[править] Дополнительная информация
- NAT Order of Operation
- The Inside and Outside of NAT
- Verifying NAT Operation and Basic NAT Troubleshooting