Cisco NAT — настройка трансляции сетевых адресов
NAT (Network Address Translation) — трансляция сетевых адресов, технология, которая позволяет преобразовывать (изменять) IP адреса и порты в сетевых пакетах.
NAT используется чаще всего для осуществления доступа устройств из сети предприятия(дома) в Интернет, либо наоборот для доступа из Интернет на какой-либо ресурс внутри сети.
Сеть предприятия обычно строится на частных IP адресах. Согласно RFC 1918 под частные адреса выделено три блока:
10.0.0.0 — 10.255.255.255 (10.0.0.0/255.0.0.0 (/8))
172.16.0.0 — 172.31.255.255 (172.16.0.0/255.240.0.0 (/12))
192.168.0.0 — 192.168.255.255 (192.168.0.0/255.255.0.0 (/16))
Эти адреса не маршрутизируются в Интернете, и провайдеры должны отбрасывать пакеты с такими IP адресами отправителей или получателей.
Для преобразования частных адресов в Глобальные (маршрутизируемые в Интернете) применяют NAT.
Помимо возможности доступа во внешнюю сеть (Интернет), NAT имеет ещё несколько положительных сторон. Так, например, трансляция сетевых адресов позволяет скрыть внутреннюю структуру сети и ограничить к ней доступ, что повышает безопасность. А ещё эта технология позволяет экономить Глобальные IP адреса, так как под одним глобальным адресом в Интернет может выходить множество хостов.
Настройка NAT на маршрутизаторах Cisco под управлением IOS включает в себя следующие шаги
1. Назначить внутренний (Inside) и внешний (Outside) интерфейсы
2. Определить для кого (каких ip адресов) стоит делать трансляцию.
3. Выбрать какой вид трансляции использовать
4. Осуществить проверку трансляций
Пусть, для примера, у нас будет роутер R1 с двумя интерфейсами.
FastEthernet0/0 — подключен к локальной сети 192.168.56.0/24 и имеет IP адрес: 192.168.56.254/24
FastEthernet0/1 — подключен к внешней сети (Провайдеру) и имеет IP адрес: 10.0.0.253/30 (В данном примере во внешней сети используется тоже частный адрес, так как это только пример, в реальной же ситуации у Вас скорее всего будет использоваться Глобальный адрес)
1. Внутренним интерфейсом обычно выступает тот, к которому подключена локальная сеть. Внешним — к которому подключена внешняя сеть, например сеть Интернет провайдера.
Таким образом FastEthernet0/0 — это Inside интерфейс, а FastEthernet0/1 — Outside
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip nat inside
R1(config-if)#exit
R1(config)#
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#
2. Трансляцию будем делать для всей локальной сети 192.168.56.0/24
R1(config)#access-list 1 permit 192.168.56.0 0.0.0.255
R1(config)#
3. Существует три вида трансляции Static NAT, Dynamic NAT, Overloading.
Static NAT — Статический NAT, преобразование IP адреса один к одному, то есть сопоставляется один адрес из внутренней сети с одним адресом из внешней сети.
Предположим, что провайдер на нас маршрутизирует сеть 10.11.11.0/24, таким образом предоставив не один, а 255 IP адресов. И мы хотим, что бы из внешней сети по адресу 10.11.11.10 был доступен наш внутренний сервер 192.168.56.10, тогда следует ввести следующую команду:
R1(config)#ip nat inside source static 192.168.56.10 10.11.11.10
R1(config)#
Таким образом происходит подмена внутреннего адреса источника 192.168.56.10 на внешний адрес 10.11.11.10 при прохождении пакета из внутренней сети во внешнюю. При обратном следовании пакета произойдёт подмена внешнего IP адреса назначения 10.11.11.10 на внутренний 192.168.56.10. Все сервисы, которые запущены на внутреннем сервере 192.168.56.10 доступны из внешней сети при обращении на адрес 10.11.11.10
Если нет необходимости открывать наружу все порты (сервисы), то можно ограничиться и определёнными, например:
R1(config)#ip nat inside source static tcp 192.168.56.10 22 10.11.11.10 2222
R1(config)#
В этом случае при обращении из внешней сети на адрес 10.11.11.10 и tcp порт 2222 произойдет соединение с 22-м tcp портом внутреннего сервера 192.168.56.10
Dynamic NAT — Динамический NAT, преобразование внутреннего адреса/ов в один из группы внешних адресов. Перед использованием динамической трансляции, нужно задать nat-пул внешних адресов
R1(config)#
R1(config)#ip nat pool GLOBALPOOL 10.11.11.20 10.11.11.100 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool GLOBALPOOL
R1(config)#
В этом случае адреса из сети 192.168.56.0/24, при обращении к внешней сети, будут преобразовываться в адреса из пула GLOBALPOOL, пока он не закончится. Если не останется в пуле свободных адресов — то трансляции выполняться не будут. То есть в нашем примере одновременно во внешнюю сеть выйдут только 80 адресов из сети 192.168.56.0/24, остальным придётся ждать пока не закончится какая-нибудь трансляция.
Overloading — позволяет преобразовывать несколько внутренних адресов в один внешний. Для осуществления такой трансляции используются порты, поэтому иногда такой NAT называют PAT (Port Address Translation). С помощью PAT можно преобразовывать внутренние адреса во внешний адрес, заданный через пул или через адрес на внешнем интерфейсе.
R1(config)#
R1(config)#ip nat pool GLOBALPOOL 10.11.11.3 10.11.11.3 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool GLOBALPOOL overload
R1(config)#
Здесь все внутренние адреса из сети 192.168.56.0/24 (описанные в access-list 1 выше) будут преобразованы во внешний адрес 10.11.11.3
R1(config)#
R1(config)#ip nat inside source list 1 interface fastEthernet 0/1 overload
R1(config)#
Все внутренние адреса 192.168.56.0/24 будут преобразованы в адрес на интерфейсе fastEthernet0/1 (напомню, что он в нашем примере 10.0.0.253/30)
4. Посмотреть существующие трансляции можно командой «show ip nat translations». Отладка запускается командой «debug ip nat»
R1#
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
udp 10.0.0.253:60672 192.168.56.10:60672 8.8.8.8:53 8.8.8.8:53
tcp 10.0.0.253:59235 192.168.56.10:59235 74.125.143.94:80 74.125.143.94:80
R1#
Пример конфигурации роутера с настроенным NAT overloading:
R1#sh run
Building configuration. Current configuration : 1163 bytes
!
! Last configuration change at 01:03:44 YST Sun Mar 31 2013 by cisco
! NVRAM config last updated at 01:03:46 YST Sun Mar 31 2013 by cisco
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
enable secret 5 $1$FOp2$9G9FvXT/lRo1HqKkgwVWv/
!
clock timezone YST 10
aaa new-model
!
!
aaa authentication login default local
aaa session-id common
ip subnet-zero
ip cef
!
!
!
ip domain name test.ru
ip audit po max-events 100
!
!
!
!
!
!
!
!
!
!
!
!
username cisco secret 5 $1$jOx6$M96EAbwK4qcWtGlxHLt3J/
!
!
!
!
!
!
interface FastEthernet0/0
ip address 192.168.56.254 255.255.255.0
ip nat inside
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.0.0.253 255.255.255.252
ip nat outside
duplex auto
speed auto
!
ip nat inside source list 1 interface FastEthernet0/1 overload
ip classless
ip route 0.0.0.0 0.0.0.0 10.0.0.254
!
no ip http server
no ip http secure-server
!
access-list 1 permit 192.168.56.0 0.0.0.255
!
!
!
!
!
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
exec-timeout 60 0
transport input telnet ssh
!
end
R1#