Введение


PAT (Port Address Translation) — технология трансляции адресов с использованием портов. Данная технология решает проблему доставки возвратных пакетов. Так как количество белых IP ограничено нам необходимо экономить эти адреса. Помня об этом, была создана технология РАТ. Она позволяет локальным хостам использовать частные IP-адреса и установить один зарегистрированный адрес на маршрутизатор доступа. В технологии преобразования адресов РАТ используется особенность работы протокола ТСР: с точки зрения сервера абсолютно все равно, осуществляются соединения с тремя разными хостами с разными адресами или соединения устанавливаются с одним хостом на один IP-адрес, но с разными портами. Следовательно, чтобы подключить к Интернету множество хостов небольшого офиса с помощью одного только зарегистрированного публичного IP адреса, служба РАТ транслирует частные адреса локальных хостов в один имеющийся зарегистрированный. Чтобы правильно пересылать пакеты обратной коммуникации локальным хостам, маршрутизатор хранит у себя таблицу IP адресов и номеров портов для протоколов TCP и UDP. Об IP адресах и масках подсети можно почитать в другой моей статье.

Задание лабораторной работы


Создать простую сеть с использование технологии PAT (перегруженный NAT). Схема сети представлена ниже. Вся работа будет выполняться в программе Cisco Packet Tracer.



Выполнение лабораторной работы


1. Создать на рабочей панели Packet Tracer 2 ПК, сервер, коммутатор и 2 маршрутизатора и соединить все устройства как показано на рисунке.


2. На свитче настроить 2 сети VLAN, чтобы схема работы получилась следующая. Кто не знает как это делать и что такое VLAN, посмотрите мою прошлую статью.


3. Поднимаем на Router0 дуплексы на порт, подключенный к свитчу. Всю эту работы мы проделали в предыдущей лабе (лабораторная работа по VLAN), поэтому подробно останавливаться не буду на этом моменте. Затем пропингуем сервер из любого ПК.



4. Настроим роутеры. На роутере 1 выставим на порту, который связан с роутером 0 кросс-кабелем, белый IP адрес. Для примера я взял 120.120.53.1. На роутере 0 выставим тот же белый IP, но на конце поставим 2, так как это следующее устройство в сети (120.120.53.2). Таким образом мы смоделировали ситуацию подключения Интернета от провайдера.

5. Проверим возможность выхода в Интернет из любого ПК. То есть пинганём 120.120.53.1.



Подключиться мы не можем, как видно на скриншоте выше.

6. Теперь настроим PAT с access листом. Это нужно для того, чтобы мы могли расширить нашу сеть и подключить несколько вланов. Обратите внимание на нашу схему. По ней можно увидеть то, что локальная сеть заканчивается на нулевом роутере. На нём же начинается выход в интернет по публичному IP. Поэтому, именно на нём мы и будем настраивать PAT. Для начала нам нужно определить какой интерфейс для PAT будет внешним, а какой внутренним. Внешний интерфейс – это тот, который выходит в сеть Интернет, а внутренний – который внутри локальной сети. То есть, в нашем случае, внешний – fa0/0, а внутренних два, так как два отдела (fa0/0.2 и fa0/0.3)

7. Настроим нулевой роутер для работы с PAT. Исходя из пункта 6, введём следующие команды:

Router>en
Router#conf t
Router(config)#int fa0/0
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#int fa0/1.2
Router(config-subif)#ip nat inside
Router(config-subif)#exit
Router(config)#int fa0/1.3
Router(config-subif)#ip nat inside
Router(config-subif)#exit
Router(config)#end
Router#wr mem


8. Создадим на этом-же роутере access лист для того, чтобы роутер «понимал» что ему натить.
Введём следующие команды:

Router>en
Router#conf t
Router(config)#ip access-list standard HABRAHABR
Router(config-std-nacl)#permit 192.168.2.0 0.0.0.255
Router(config-std-nacl)#permit 192.168.3.0 0.0.0.255
Router(config-std-nacl)#end


9. Проверить что у нас получилось можно командой show run. Для старта работы PAT нам потребуется ввести ещё одну команду в настройках конфигураций: ip nat inside source list HABRAHABR int fa0/0 overload

Проверяем подключение к Интернету.



И победа! Всё работает.

Давайте теперь разберёмся со всеми командами.
ip access-list standard HABRAHABR – создаём стандартный access лист с именем HABRAHABR
permit 192.168.2.0 0.0.0.255 – добавляем адреса сетей с обратной маской сети
ip nat inside source list HABRAHABR int fa0/0 overload – начинаем путь NAT изнутри (из инсайда) по access листу под названием HABRAHABR на интерфейсе int fa0/0. Overload указывает на тип NAT, а именно перегруженный NAT, то есть PAT.

Комментарии (18)


  1. flatscode
    16.03.2018 15:53
    +1

    Я извиняюсь, а что это за странная ссылка на сайте cisco.com со странички Cisco Packet Tracer на какое-то левое, чуть ли не казино (может случайным образом перекинуть в разные места)?


    1. valerylinkov Автор
      16.03.2018 16:13

      Это какой-то крутой косяк у Cisco. Я отпишусь в официальным представителям Cisco по Москве, дабы они решили эту проблему. Сейчас сам залез и Eset чуть кукушечкой не крякнулся.
      Попробую скинуть последнюю рабочую версию (7.1) Packet Tracer. Главное, чтобы файлообменник exe-шник перекинул.
      Спасибо, что сказали об этой проблеме!


      1. flatscode
        16.03.2018 21:00
        +1

        Посмотрел, пока на исправили.
        За папку спасибо!


    1. valerylinkov Автор
      16.03.2018 16:38

      Созвонился с представителями Cisco. Они не знали об этой проблеме и моментально сели её фиксить.
      Ещё раз Вам спасибо!
      Скачал с netacad версию Cisco Packet Tracer 7.1 для Windows 32 и 64 и для Linux. Ссылка на папку с прогами.
      Ещё ссылка на Android и iOSверсию.


  1. Night_Snake
    16.03.2018 23:17

    Overload указывает на тип NAT, а именно перегруженный NAT, то есть PAT.

    Вы опять порете чушь. Почитайте, что такое PAT, и для чего он применяется.

    ip access-list standard HABRAHABR – создаём стандартный access лист с именем HABRAHABR
    permit 192.168.2.0 0.0.0.255 – добавляем адреса сетей с обратной маской сети
    ip nat inside source list HABRAHABR int fa0/0 overload – начинаем путь NAT изнутри (из инсайда) по access листу под названием HABRAHABR на интерфейсе int fa0/0. Overload указывает на тип NAT, а именно перегруженный NAT, то есть PAT.

    То, что написано у вас, это классический source NAT (source interface NAT в терминологии Juniper).


    1. valerylinkov Автор
      16.03.2018 23:38

      Вы опять порете чушь. Почитайте, что такое PAT, и для чего он применяется.

      Почитал ещё раз здесь
      Не понял что Вам не понравилось.

      То, что написано у вас, это классический source NAT (source interface NAT в терминологии Juniper).

      На Juniper не работал, поэтому плохой собеседник.
      Как я понимаю, есть три типа NAT: статический NAT (нужен для обращения из внешней сети (к примеру, Интернет) к устройству под серыми IP (во внутренней сети)), динамический NAT (редко используется (по крайней мере, не видело ни одного проекта), но он используется для отображения незарегистрированных IP-адресов на зарегистрированные адреса), перегруженный NAT (он же PAT, описанный в лабе).
      Читал по книгам Cisco. В википедии подтверждаются мои слова.

      Если в чём-то не прав, пожалуйста, уточните в чём.


      1. Night_Snake
        17.03.2018 00:27

        Не понравилось, главным образом, то, что вы используете терминологию, но при этом не описываете механизм и типы NAT (source nat, destination nat), а предлагаете приступить к выполнению лабораторной работы. В результате получается путаница (я признаю, что несколько погорячился, т.к. в 99% случаев PAT как термин использую только для обозначения DST-NAT по выбранным портам).

        Статический NAT (Static NAT) — это трансляция 1-к-1 серого адреса в белый, при этом делается как source, так и destination трансляция.

        Динамический NAT (Dynamic NAT) — это трансляция пула серых адресов в пул белых. При этом он тоже может быть overload (в терминах циски): т.е. пул белых адресов может быть меньше, чем пул внутренних адресов. Отсюда следует вывод, что о нём мы говорим только в контексте source-трансляции (и встречается он гораздо чаще, чем вы думаете).

        Перегруженный NAT (то, что вы называете PAT) действительно использует механизм трансляции портов, и, формально, вы правы.
        Но вот тут начинаются нюансы, о которых обязательно стоит рассказать.

        Потому что PAT (и кстати, если уж даёте ссылку на википедию, почему не сюда?) гораздо чаще используется в контексте destination nat, когда нам нужно опубликовать наружу, например, веб-сервер.
        При этом мы транслируем запросы, которые приходят на порты 80 и 443 на наш публичный адрес, в локалку, на те же (или другие) порты веб-сервера.

        А если мы говорим о source nat (когда локалку необходимо выпустить в интернет с одного IP-адреса), то это уже NAT overload или маскарадинг.


        1. valerylinkov Автор
          17.03.2018 00:51

          Я с Вами согласен. Информация, которую Вы выложили весьма полезна и спасибо Вам за неё, но несколько «маленьких» НО.

          1. Концепция лабораторной работы подразумевает освоение небольшого количества материала. По опыту, эту лабу делают за 1,5-2,5 часа. Как Вы себе представляете объяснить неопытному сисадмину, хотя бы поверхностно, 3 типа NAT в одной лабе?
          В лабораторной работе идёт разбор присвоения нескольким серым адресам одного белого. Чтобы понять эту технологию молодому специалисту потребуется не 3 минуты.

          2. Не стоит высказываться в столь резких формах, как фраза «Вы опять порете чушь». Во первых, чушь я, как Вы выражаетесь, «не порол» ни в одной своей работе. Во вторых, при употреблении таких фраз теряется смысл всего Вашего текста.

          3. Если есть какие-либо замечания, пожалуйста, излагайте их сразу без многозначительных фраз о том, что мне необходимо прочитать тот или иной материал. Материал я вынужден прочитать, если хочу что-то написать и выдаю его порционно, а читатели статьи с большей вероятностью запомнят Ваши замечания, если они будут высказаны сразу, а не входе длинной переписки в комментариях.

          В любом случае, спасибо за проявленный интерес к моей работе.


          1. Night_Snake
            17.03.2018 11:24

            1. Концепция лабораторной работы подразумевает освоение небольшого количества материала. По опыту, эту лабу делают за 1,5-2,5 часа. Как Вы себе представляете объяснить неопытному сисадмину, хотя бы поверхностно, 3 типа NAT в одной лабе?

            Да, и это довольно просто.
            Тем более, что объяснить нужно всего лишь два типа (source NAT и destination NAT), а дельше уже развить мысль и рассказать о подвидах этих двух через случаи, когда они применяются. При этом в лабе можно оставить один, а вот рассказать нужно о всех.

            Не стоит высказываться в столь резких формах, как фраза «Вы опять порете чушь». Во первых, чушь я, как Вы выражаетесь, «не порол» ни в одной своей работе. Во вторых, при употреблении таких фраз теряется смысл всего Вашего текста.

            Ну да, вы просто вырываете одно из определений из контекста и начинаете о нём рассказывать, как будто остальных и нет вовсе. Так что с первого взгляда это выглядит как полная чушь.

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

            Замечания у меня есть, и я их высказал. Кратко или подробно — это уже мне решать. И ссылаться на тексты начали вы, я лишь уточнил, что в данном случае вы использовали не ту страницу википедии =).

            Ну и последнее — учебный материал, коль вы его выдаёте в виде лабораторных, предполагает а)некую целостность, когда часть связаны между собой логически и идут последовательно. б)материал (даже лабораторная работа) содержит какую-то теоретическую часть, которая отвечает на вопрос «а что это я тут буду делать». Так вот, если с последовательностью у вас ещё более-менее хорошо, то вот с теорией — полный швах.


            1. valerylinkov Автор
              17.03.2018 12:01

              Да, и это довольно просто

              Вам — возможно, но не начинающему инженеру сетей.

              вы просто вырываете одно из определений из контекста и начинаете о нём рассказывать, как будто остальных и нет вовсе.

              Никакого контекста не было. Если бы я написал «Лабораторная работа по NAT», я бы согласился с Вами на 100%, а так что обещал, то разобрал (технологию PAT).

              Замечания у меня есть, и я их высказал. Кратко или подробно — это уже мне решать

              Бесспорно. Я лишь попросил говорить о конкретике с первого комментария, а не со 2, 3 или 4, как это было и в предыдущей статье. Это моя просьба, а уж выполнять её или нет — дело исключительно Ваше.

              Ваше мнение все услышали. Не сомневайтесь. Но прорываться к нему через фразы, которые зависают в воздухе, типа: «почитайте», «вы порете чушь», «у вас с теорией швах», лично мне уже надоело, да и пользователям читать все эти комментарии, думаю, тоже.

              я лишь уточнил, что в данном случае вы использовали не ту страницу википедии =)

              Я использовал более расширенный материал. Посмотрите пункт 5 в содержании и на его схему, а вот статья, которую бросили Вы, ссылается на скомканный и не разобранный материал моей статьи. Ссылаться на неё нет никакого смысла, чего я и не делал.
              Вы заговорили обо всех типах NAT, я и скинул статью обо всех типах.

              Ну и последнее — учебный материал, коль вы его выдаёте в виде лабораторных, предполагает а)некую целостность, когда часть связаны между собой логически и идут последовательно. б)материал (даже лабораторная работа) содержит какую-то теоретическую часть, которая отвечает на вопрос «а что это я тут буду делать». Так вот, если с последовательностью у вас ещё более-менее хорошо, то вот с теорией — полный швах.


              Концепция лабораторной работы подразумевает освоение небольшого количества материала. Если Вы начнёте читать теорию к каждой лабе от вопроса «Что такое сеть?» и описывая все технологии от TCP/IP, то эту работу не поймут юниоры, что сейчас и происходит с большинством работ.

              немного интересного
              Я делая лабу по Wi-Fi и понял, что без PAT получиться не очень. Решил описать. Так вот чтобы сделать данную лабу мне потребовалось написать ещё 2 статьи, на которые я сослался.
              Я не хочу вызвать у читающих людей отравление информацией, скинув всю информацию по теме.
              В статье, например, об IP я описывал только IPv4, но не потому что я не знаю что есть IPv6, а потому что не надо наваливать всё и сразу.
              Разобрались с одним, переходим к другому.


              1. Night_Snake
                17.03.2018 13:32

                Никакого контекста не было. Если бы я написал «Лабораторная работа по NAT», я бы согласился с Вами на 100%, а так что обещал, то разобрал (технологию PAT).

                И в введении вы описываете NAT (а PAT является лишь его частным случаем).

                Концепция лабораторной работы подразумевает освоение небольшого количества материала. Если Вы начнёте читать теорию к каждой лабе от вопроса «Что такое сеть?» и описывая все технологии от TCP/IP, то эту работу не поймут юниоры, что сейчас и происходит с большинством работ.

                В лабораторной работе про NAT не нужно рассказывать про основы TCP/IP. В ней нужно рассказать про NAT и то, какой он бывает. Почитайте, например, про Cisco NAT на xgu. Там всё очень кратко и при этом описано всё, что нужно.

                Не надо забывать, что лабораторные работы, прежде всего, для не очень опытных специалистов.

                Ага, а потом эти «не очень опытные» специалисты, учась на кусочках знаний и не видя целостной картины, решают все проблемы с помощью гугла и бездумного копирования из хауту.


                1. valerylinkov Автор
                  17.03.2018 13:44

                  Я учился и учусь не по xgu, а по официальным книгам и курсам Cisco и переходить с этой формы обучения не буду.
                  На счёт неопытности — это Ваше мнение.

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

                  Всё это можно написать в одном комментарии под статьёй и не разводить дискуссии на день.
                  Далее продолжать обсуждение «на одном месте» я не буду.


        1. Dexterite
          17.03.2018 18:06
          +1

          В терминах Циски то, что вы называете «Динамический NAT» как раз и есть PAT, о котором говорит valerylinkov, скажем, это подтипы одного и того же механизма. Называть такой вариант оверлоадингом вполне возможно, Циски в своих документах это делают.

          Таким же образом подтипом динамического NAT является и тот, что вы называете source nat. Ибо, де-факто идет шаринг и ремапинг (трансляция) исходящих TCP и UDP портов между многочисленными адресами локального пула, в ограниченный глобальный пул.

          Так что по большей части вы говорите об одном и том же. Слегка вся эта путаница исходит из терминов того или иного вендора, но на понимание концепции совершенно никак не влияет. Достигается лишь опытом.

          Из собственного опыта 10-летней давности скажу, например, у Checkpoint и Cisco отличаются взгляды на проблему NAT, да и вообще подходы к решению определенных задач. Тогда еще новичку, у которого за плечами элементарный CCNP и пара лет ковыряния в Микротиках, мне сильно не везло в обсуждении NAT со специалистом (аудитор IT безопасности), т.к. Циски в его аудитах были представлены очень слабо, основной упор делался на Чекпоинты и Джуниперы.


          1. Night_Snake
            17.03.2018 19:22

            Если вы почитаете внимательно документацию по Cisco, то увидите, что dynamic NAT и PAT — это разные вещи. Да, бывает Dynamic NAT with overload (PAT), бывает без.
            Но вещи суть разные


            1. Dexterite
              18.03.2018 05:59

              А я и не говорил, что это одно и то же, если вы посмотрите внимательно, я написал о «подтипах», поясню подробнее.

              1. Есть Dynamic NAT — n адресов транслируются в m других адресов, в случае n>m n-m = количество хостов, оставшихся без трансляции
              2. Есть Dynamic NAT w/overload — n адресов транслируется в m других адресов, при этом все адреса будут транслированы т.к. используется замена SRC портов в TCP/UDP датаграммах, т.е. PAT

              В контексте DstNAT ничего не меняется, всё те же принципы. И если уж совсем придираться к терминологии, то NAT это не обязательно серые-в-белые)

              Еще раз повторюсь, valerylinkov, думаю, понял основной принцип, который не изменится, назови ты его PAT или S-NAT, а, может, еще как-то.


              1. Night_Snake
                18.03.2018 17:07
                -1

                Ну вот вы пишете

                В терминах Циски то, что вы называете «Динамический NAT» как раз и есть PAT,

                что есть неправда, потому что циска разделяет static nat, dynamic nat и PAT (он же nat overload, он же маскарадинг). Да, dynamic nat может быть с overload (как я уже говорил), но это разные операции (собственно, у всех вендоров различают src-nat в адрес (пул адресов) и masquerade в интерфейс).

                Но в целом спор будет о терминах больше, а он бесполезен.


  1. bryukhanovaa
    19.03.2018 08:22
    +1

    Создадим на этом-же роутере access лист для того, чтобы роутер «понимал» что ему маршрутизировать.

    чтобы роутер понимал какие адреса ему НАТить. маршрутизировать бы он их стал и без ACL


    1. valerylinkov Автор
      19.03.2018 08:23

      Согласен. Спасибо!
      Поправил.