Найти в Дзене
Кручинин.Linux

Настройка NAT Overload в Cisco Packet Tracer

Разберем настройку Overload NAT или перегруженного NAT на примере CPT. Перегруженный NAT это когда любой адрес в локальной сети в поле исходящий IP адрес IP-пакета заменяется на публичнй IP-адрес шлюза. А при обратном пути, когда пакет в поле адрес получателя имеет адрес шлюза будет заменен на IP-адрес получателя в локальной сети. Сам роутер ведет учет пакетов, и сопоставляет пары внутренний IP-адрес и TCP-порт (или UDP-порт, или номер ICMP-последовательности) и публичный IP-адрес, и также TCP-порт (или UDP, или номер ICMP). Чтобы продемонстрировать, как это работает, соберем небольшую схему, где 192.168.1.0/24 -- частная сеть, а 70.70.70.0/24 и 80.80.80.0/24 -- публичные адреса. В схеме два роутера. Router0 выполняет роль NAT-шлюза, а Router1 - это тот роутер, за которым находится искомый сервер. Наша задача скрыть сеть 192.168.1.0/24 за NAT (NAT Overload), чтобы все пакеты во внешнюю сеть (например на 80.80.80.100) шли от адреса шлюза 70.70.70.70. Сначала выполним настройки право

Разберем настройку Overload NAT или перегруженного NAT на примере CPT.

Перегруженный NAT это когда любой адрес в локальной сети в поле исходящий IP адрес IP-пакета заменяется на публичнй IP-адрес шлюза.

А при обратном пути, когда пакет в поле адрес получателя имеет адрес шлюза будет заменен на IP-адрес получателя в локальной сети.

Сам роутер ведет учет пакетов, и сопоставляет пары внутренний IP-адрес и TCP-порт (или UDP-порт, или номер ICMP-последовательности) и публичный IP-адрес, и также TCP-порт (или UDP, или номер ICMP).

Чтобы продемонстрировать, как это работает, соберем небольшую схему, где 192.168.1.0/24 -- частная сеть,

а 70.70.70.0/24 и 80.80.80.0/24 -- публичные адреса.

В схеме два роутера. Router0 выполняет роль NAT-шлюза, а Router1 - это тот роутер, за которым находится искомый сервер.

-2

Наша задача скрыть сеть 192.168.1.0/24 за NAT (NAT Overload), чтобы все пакеты во внешнюю сеть (например на 80.80.80.100) шли от адреса шлюза 70.70.70.70.

Сначала выполним настройки правого роутера Router1. На нем NAT не настраиваем.

Перейдем в привелигированный режим

Router>en

Перейдем в режим конфигурирования

Router#conf t

Enter configuration commands, one per line. End with CNTL/Z.

Настроим сетевые интерфейсы и включим их:

Router(config)#int fa0/0

Router(config-if)#ip addr 80.80.80.70 255.255.255.0

Router(config-if)#no shut

Router(config-if)#int fa5/0

Router(config-if)#ip addr 70.70.70.80 255.255.255.0

Router(config-if)#no shut

Для простоты настроим не статическую маршрутизацию (о ее настройке я написал в статье https://dzen.ru/a/Zfx2NbgccxBY1vX7 ), а в этот раз динамическую, с ипсользованием протокола RIP2.

Мы анонсируем обе сети и 70.70.70.0/24 и 80.80.80.0/24, так как нам нужно предоставить доступ к сети 80.80.80.0/24, в том числе к серверу 80.80.80.100, а сервер должен иметь возможность отправлять сообщения в сеть 70.70.70.0/24:

Router(config-if)#route rip

Router(config-router)#version 2

Router(config-router)#network 80.80.80.0

Router(config-router)#network 70.70.70.0

Router(config-router)#end

Вообще здесь хватило бы и версии 1, но она архаична (она не умеет работать с классовой адресацией и не пересылает маски сети), поэтму для порядку, используем версию 2.

Теперь проверим таблицу маршрутизации:

Router#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

* - candidate default, U - per-user static route, o - ODR

P - periodic downloaded static route

Gateway of last resort is not set

70.0.0.0/24 is subnetted, 1 subnets

C 70.70.70.0 is directly connected, FastEthernet5/0

80.0.0.0/24 is subnetted, 1 subnets

C 80.80.80.0 is directly connected, FastEthernet0/0

Мы видим только непосредственно доступные сети (они обозначены как C - Connected).

Не видим маршрутов, "приехавших" от другого маршрутизатора, что и логично, он не настроен, по RIP2 (пока еще) не работает.

Поэтому настроим левый роутер Router0 (и на нем мы будем настраивать NAT).

Перейдем в привелегированный режим

Router>en

Перейдем в режим конфигурирования

Router#conf t

Enter configuration commands, one per line. End with CNTL/Z.

Настроим сетевые интерфейсы и включим:

Router(config)#int fa0/0

Router(config-if)#ip addr 192.168.1.1 255.255.255.0

Router(config-if)#no shut

%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

Router(config-if)#int fa5/0

Router(config-if)#ip addr 70.70.70.70 255.255.255.0

Router(config-if)#no shut

%LINK-5-CHANGED: Interface FastEthernet5/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet5/0, changed state to up

Итак, формально IP-адреса мы настроили, линки загорелись зеленым светом.

-3

На левом роутере нужно также настроить динамическую маршрутизацию, но с определенными особенностями. Мы будем работать по сети 70.70.70.0/24, отправлять по ней и принимать информацию о маршрутах, но мы не будем объявлять сеть 192.168.1.0/24 (так как она скрыта за NAT)

Router(config-if)#route rip

Router(config-router)#version 2

Router(config-router)#network 70.70.70.0

Router(config-router)#exit

Router(config)#exit

Еще раз повторюсь: мы не будем анонсировать сеть 192.168.1.0 (она скрыта будет за NAT), но нам необходимо анонсировать сеть 70.70.70.0, иначе мы не получим данные о сетях от маршрутизатора Router1.

Проверяем - смотрим таблицу маршрутов:

Router#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

* - candidate default, U - per-user static route, o - ODR

P - periodic downloaded static route

Gateway of last resort is not set

70.0.0.0/24 is subnetted, 1 subnets

C 70.70.70.0 is directly connected, FastEthernet5/0

R 80.0.0.0/8 [120/1] via 70.70.70.80, 00:00:12, FastEthernet5/0

C 192.168.1.0/24 is directly connected, FastEthernet0/0

Вуаля! Мы получили информацию от правого роутера - это запись R (RIP)

Сети 70.70.70.0 и 192.168.1.0 доступны напрямую через сетевые интерфейсы (C - Connected), а вот маршрут в сеть 80.0.0.0/8 доступен через шлюз 70.70.70.80 — эта информация получена нами по протоколу RIP2 от второго маршрутизатора.

Теперь пришел черед настроить NAT Overload (на левом роутере).

Сначала создаем список доступа, указывая, какие адреса могут использовать NAT:

Router#conf t

Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255

Обратите внимание на значение 0.0.0.255. Это wildcard, иногда называемым обратной маской. В данном случае это действительно, аналог маски 255.255.255.0, почему и говорят "обратная маска". Но wildcard не просто противоположность маски, это более гибкий инструмент, где 1 и 0 могут перемеживаться так, как администратору надо. Так можно пропустить четные или нечетные пакеты) В общем смысл wildcard в том, что где 0, там значение должно совпадать, а где 1 должно быть любым. Потому для wildcard 0.0.0.255 подходящими будут IP-адреса, в первых трех откетах будет 192.168.1., а четвертый -- любым числом.

Укажем, что пакеты клиентов с IP-адресов из списка 1 будут подвергаться преобразованию NAT Overload при следовании через интерфейс fa5/0:

Router(config)#ip nat inside source list 1 int fa5/0 overload

Укажем, что int fa0/0 — внутренний сетевой интерфейс для NAT:

Router(config)#int fa0/0

Router(config-if)#ip nat inside

Укажем что int fa5/0 — внешний сетевой интерфейс для NAT:

Router(config-if)#int fa5/0

Router(config-if)#ip nat outside

Router(config-if)#exit

Выполним ping c машины 192.168.1.2:

-4

В режиме симуляции удостоверимся, что IP-адрес действительно подменяется:

-5

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

Router# sh ip nat tr

-6

Подписывайтесь на мой канал в дзен https://dzen.ru/olinux и будете в курсе новых моих статей по компьютерным сетям и ОС GNU/Linux.

Всегда с вами, Сергей Кручинин преподаватель GNU/Linux и компьютерных сетей

-7