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 с двумя интерфейсами.

 

Подключение R1 к ISP

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

Для этого создаём ACL:

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#

 

 

8 комментариев: Cisco NAT — настройка трансляции сетевых адресов

  • евген говорит:

    спасибо!

  • Kashej говорит:

    Спасибо, доступный и информативный материал — очень помог.

  • Андрей говорит:

    Подскажите пожалуйста, а если на маршрутизаторе используются внутренние сабинтерфейсы (например Fa0/0.10 — для VLAN 10 ), то на них тоже надо назначать ip nat inside ? И если да, то надо ли в таком случае назначать ip nat inside на сам Fa0/0 и сам Fa0/0 должен быть включен или выключен (при включенном Fa0/0.10 ) ?

    • admin говорит:

      Да, назначать ip nat inside надо на подинтерфейсе (Fa0/0.10), там же прописывать и IP адрес (Если при выходе из этой сети VLAN10 необходимо проводить трансляцию адресов).
      На основном интерфейсе (Fa0/0) в этом случае, ничего не нужно прописывать, если не используется 1-й влан или нативный влан.
      При включенном Fa0/0.10, так же должен быть включен и основной интерфейс Fa0/0

  • Тимур говорит:

    можно ли на один порт прописать два маршрута?

  • alexashka_07 говорит:

    Здравствуйте, помогитенайти ошибку в конфиге

    Current configuration : 844 bytes
    !
    version 12.4
    service timestamps debug datetime msec
    service timestamps log datetime msec
    no service password-encryption
    !
    hostname Router
    !
    boot-start-marker
    boot-end-marker
    !
    !
    no aaa new-model
    !
    resource policy
    !
    ip subnet-zero
    !
    !
    ip cef
    !
    !
    ip name-server 95.167.167.96
    !
    !
    !
    !
    interface GigabitEthernet0/0
    ip address 192.168.10.1 255.255.255.0
    ip nat inside
    duplex auto
    speed auto
    !
    interface GigabitEthernet0/1
    ip address ***.***.***.190 255.255.255.252
    ip nat outside
    duplex auto
    speed auto
    !
    ip classless
    ip dns server
    !
    ip http server
    ip nat pool FSB ***.***.***. 190 ***.***.***.190 netmask 255.255.255.252
    ip nat inside source list 100 interface GigabitEthernet0/1 overload
    !
    access-list 100 permit ip 192.168.10.0 0.0.0.255 any
    !
    control-plane
    !
    !
    line con 0
    line aux 0
    line vty 0 4
    login
    !
    scheduler allocate 20000 1000
    !
    end

    Суть в следующем: имеется локалка на 6 компов в 2 разных зданиях компы подключать планирую на свичах cisco 2960, у все права равные. Из этого добра кабель идет в роултер cisco 2851 на котором необходимо настроить NAT, на втором конце висит 1 ip адрес от ростелекома со статическим адресом.

    как я понимаю требуется настроить ACL, в нем я указываю полный доступ для всех абонентов сети, далее указываю что с 0/0 внутренняя 0/1 внешнят и на этом месте у меня както нечего не работает, при этом пинг с роултера на шлюз ростелекомовский, а на компьютер сети не идет, хотя в другую сторону все нормально.

    • Andrey говорит:

      Дак маршрута то нету к железке ростелекома.
      ip route 0.0.0.0 0.0.0.0 ***.***.***.191

  • Andrey говорит:

    Спасибо, хорошая статья

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *