суббота, 2 августа 2014 г.

Настройка NAT на Cisco ASA 8.3. TWICE NAT

Пришло время разобраться, что такое TWICE NAT и зачем он вообще нужен. При помощи данной конструкции можно сделать две принципиальные вещи, которые нельзя сделать при помощи object NAT:
1. Сделать трансляции одной и той же сети в разные адреса в зависимости от того, в какую сеть идет пакет. Это необходимо, например, при построении IPSec – надо не транслировать адреса пакетов, если они направляются в туннель.
2. А еще (то, что нельзя было сделать в версии 8.2 вовсе) – статическая трансляция диапазона (или группы) портов кучкой. Например, пробросить целиком диапазон с 1024 по 65535.
Рассмотрим формат команды для динамических трансляций NAT пока без указания сети назначения:
nat [(SOURCE_INT,DEST_INT)] source dynamic SOURCE MAPPED_SOURCE [interface] [dns]
Эта команда позволяет сделать в точности то же самое, что и object NAT для NAT-трансляции адресов источника. И работают ровно те же правила: интерфейсы можно явно не указывать, можно не указывать один интерфейс, заменив его словом any, указание ключевого слова dns включает ДНС-докторинг, указание ключевого слова interface позволяет при исчерпании пула SOURCE_MAPPEDиспользовать для РАТ трансляции адрес соответствующего интерфейса.
Пример:
nat (INS,OUT) source dynamic LAN MAPPED_LAN_POOL interface dns
Аналогичная ситуация с динамическим РАТ, но добавляется возможность указать не просто конкретный сервис, а соответствующий объект типа «сервис»
object service SERVICE_LOCAL
  service tcp source eq 25

nat [(SOURCE_INT,DEST_INT)] source dynamic SOURCE MAPPED_SOURCE service LOC_SERVICE MAPPED_SERVICE
Ни interface, ни dns не поддерживаются. Смысла, правда, конкретно в такой трансляции я не вижу, разве что ограничить порты источника, от которых нужно производить трансляцию. Например, если известно, что некоторое приложение (FTP, SIP) открывает свои сессии только с 4000 по 6000 или с 16384 по 32768 (RTP).
Важно: в качестве группы для динамической трансляции нельзя использовать объекты, содержащие сеть. Только хост или диапазон.
Пример (порт источника не меняем):
nat (INS,OUT) source dynamic LAN MAPPED_LAN_POOL service SERVICE_LOCAL SERVICE_LOCAL
Причем объекты для сервисов могут содержать диапазоны:
object service SMALL
  service tcp source eq 2048
object service BIG
  service tcp source range 1024 65535
И эти диапазоны могут отличаться по «мощности» (количеству портов). Как же в таком случае будет работать трансляция и будет ли вообще?
Проведем эксперимент:
nat (INS,OUT) source dynamic LAN MAPPED_LAN_POOL service BIG SMALL
Откроем две телнет сессии с 2911 на 1841.
Результат забавен: первая сессия открывается, как и положено. 1841 видит ТСР соединение с порта 2048. Попытка открыть вторую сессию телнет как ни странно успешна. Однако, 1841 видит только одну сессию ТСР (show tcp brief) и одну сессию телнет (show user), открытую на него. На ASA тоже 1 сессия и одна трансляция, а вот 2911 продолжает думать, что телнет сессии 2 (show session). Правда, попытка обратиться к первой сессии приводит к ее сбросу. Т.е. при невозможности выделить под трансляцию новый порт, ASA старую сессию и трансляцию из КЭШа удаляет, но «втихаря», не сообщая источнику. Это дает возможность установиться новой сессии.
Аналогично работают статические трансляции NAT:
nat (INS,OUT) source static SERVER SERVER_GLOBAL [dns]
И статические трансляциями с портами:
nat (INS,OUT) source static SERVER SERVER_GLOBAL service SERVICE_LOCAL SERVICE_GLOBAL
Проведем аналогичный эксперимент с трансляцией большого диапазона портов в маленький:
nat (INS,OUT) source static SERVER SERVER_GLOBAL service BIG SMALL
Откроем две телнет сессии с 2911 на 1841.
Мы открывали сессии изнутри и результат такой же, как и при динамической трансляции. Но данная трансляция статическая, а значит можно открыть снаружи сессию на порт 2048. Попробуем это сделать, но для наглядности поменяем начальный порт в диапазоне BIG на 23 (чтобы маршрутизатор ответил по телнету):
object service BIG
  service tcp source range 23 65535
Откроем телнет с 1841 на адрес SERVER_GLOBAL (20.1.1.100) на порт 2048
Сессия установилась, трансляция создана в минимальный порт из диапазона – 2048->23.
Таким образом ASA по портам отрабатывает в той же логике, что и по адресам при неравных пулах: если трансляция «много-в-мало» старые сессии сбрасываются, при трансляции «мало-в-много» производится сопоставление внутренних портов с минимальными внешними портами, указанными в соответствующей группе типа service.
Пришло время добавить destination, а именно тут и начинается самое интересное.
Рассмотрим для начала формат команды:
nat [(SOURCE_INT,DEST_INT)] source {dynamic|static} SOURCE MAPPED_SOURCE destination static MAPPED_DEST DEST
Где SOURCEMAPPED_SOURCEMAPPED_DESTDEST соответствующие объекты. Я обращаю ваше внимание на то, что разработчики ASA OS остались верны своей логике хоть где-нибудь запутать – группы для адресов назначения имеют обратный порядок.
Читать это надо так: если пакет идет с интерфейса SOURCE_INT на интерфейс DEST_INT, адрес источника пакета из группы SOURCE, а адрес назначения из группы DEST, то адрес источника меняется с SOURCE на MAPPED_SOURCE, а адрес назначения меняется с MAPPED_DEST на DEST. Обратный пакет, обращенный на адрес MAPPED_SOURCE пройдет внутрь, его адрес назначения сменится обратно с MAPPED_SOURCE на SOURCE. Но такая трансляция будет выполнена только если адрес источника пакета из группы DEST, и в этом случае адрес источника сменится обратно наMAPPED_DEST.
В случае создания статической трансляции можно будет обращаться (инициировать сессию) снаружи внутрь, а в случае динамической – нет.
Самая распространенная ситуация: мы собираемся транслировать наш LAN в один адрес источника при прохождении в одну сеть, и в другой адрес источника при прохождении в другую сеть.
Пример:
Object network NET3
  Subnet 30.0.0.0 255.0.0.0
Object network NET4
  Subnet 40.0.0.0 255.0.0.0
!
nat (INS,OUT) source dynamic LAN MAPPED_LAN_POOL destination static NET3 NET3
nat (INS,OUT) source dynamic LAN MAPPED_LAN_HOST destination static NET4 NET4
Довольно трудно читаемая конструкция, как мне кажется. Все из-за того, что в одной команде указание destination работает не только как сеть назначения (критерий), но и как указание на то, во что ее транслировать. Как правило, нам не надо транслировать адрес назначения, но написать, что мы не будем транслировать его можно только указав две одинаковые группы (так называемый Identity NAT).
Для создания туннелей IPSec конструкция еще более гротескная: нам не надо транслировать не только адрес назначения, но и адрес источника тоже надо оставить в покое. И приходится писать двойной Identity NAT
nat (INS,OUT) source static LAN LAN destination static REMOTE REMOTE
где REMOTE – группа, описывающая сеть за VPN туннелем.
В двойном правиле НАТ удобно делать двойную замену, например, если необходимо связать две одинаковые сети по шифрованному туннелю, а устройство под нашим управлением только одно:
NAT
object network LAN
  subnet 10.1.1.0 255.255.255.0
!
object network REMOTE
  subnet 10.1.1.0 255.255.255.0
!
object network MAPPED_LAN
  subnet 10.100.100.0 255.255.255.0
!
object network MAPPED_REMOTE
  subnet 10.101.101.0 255.255.255.0
!
nat (INS,OUT) source static LAN MAPPED_LAN destination static MAPPED_REMOTE REMOTE
!
! ACL для шифрования
!
access-list IPSEC permit ip 10.100.100.0 255.255.255.0 10.1.1.0 255.255.255.0
Из локальной сети LAN мы будем обращаться на адреса 10.101.101.0/24. По маршрутизации данная сеть доступна за внешним интерфейсом. Так как ASA сначала выполняет трансляцию, то в пакете подменится адрес источника на адрес из сети 10.100.100.0/24, а адрес назначения подменится на адрес из сети 10.1.1.0/24 и в таком виде будет обработан шифратором. Со стороны удаленной сети к нам будут обращаться на адреса 10.100.100.0/24
Еще одно применение двойного НАТа – «спрятать» реальные адреса назначения. Например, есть сервер без шлюза по умолчанию (или шлюзом по умолчанию является не ASA – см. рисунок) с адресом 10.1.1.100. Мы хотим, чтобы он обращался на хост 10.1.1.222, а попадал реально на внешний 20.200.1.222.
NAT
Пример:
object network SERVER
  host 10.1.1.2
!
object network MAPPED_LAN_HOST
  host 20.1.1.101
!
object network HOST
  host 20.200.1.222
!
object network HIDDENHOST
  host 10.1.1.222
!
nat (INS,OUT) source static SERVER MAPPED_LAN_HOST destination static HIDDENHOST HOST
Адрес 20.200.1.222/32 настроен на интерфейсе loopback222 на 1841. Если теперь обратиться с 10.1.1.2 (адрес на 2911) на 10.1.1.222, то ASA произведет двойную трансляцию и на 1841 мы увидим .
TEST1841#sh tcp br
TCB Local Address Foreign Address (state)
63179ACC 20.200.1.222.23 20.1.1.101.12251 ESTAB
На ASA увидим двойную трансляцию (обратите внимание на букву Т, обзначающую, что это Twice NAT)
TESTASA(config)# sh xl
2 in use, 2 most used
Flags: D - DNS, i - dynamic, r - portmap, s - static, I - identity, T - twice
NAT from OUT:20.200.1.222 to INS:10.1.1.222
    flags sT idle 0:10:52 timeout 0:00:00
NAT from INS:10.1.1.2 to OUT:20.1.1.101 flags i idle 1:29:21 timeout 3:00:00
Забавно, что для ASA это две разные трансляции в разных направлениях, у каждой – свой таймаут, но они связаны друг с другом.
Точно также, как адреса источника и назначения, TWICE NAT позволяет менять порты и источника и назначения. Для нужно указать сервисный объект до трансляции (source) и после трансляции (destination). При этом сервисный объект, указанный как source, еще и описывает критерий, когда надо создавать трансляцию.
Например, если мы хотим производить 2 разных трансляции адреса когда идем с хоста SERVER на сеть REMOTE и порт SMTP и порт HTTP, то описывается это так:
object service SMTP
  service 25
object service HTTP
  service 80
!
nat (INS,OUT) source static SERVER SERVER_GLOBAL_SMTP destination static REMOTE REMOTE service SMTP SMTP
nat (INS,OUT) source static SERVER SERVER_GLOBAL_HTTP destination static REMOTE REMOTE service HTTP HTTP
Источник: blogsvazista.ru/настройка-nat-на-cisco-asa-8-3-twice-nat/

1 комментарий:

  1. Cisco Configuration Base: Настройка Nat На Cisco Asa 8.3. Twice Nat >>>>> Download Now

    >>>>> Download Full

    Cisco Configuration Base: Настройка Nat На Cisco Asa 8.3. Twice Nat >>>>> Download LINK

    >>>>> Download Now

    Cisco Configuration Base: Настройка Nat На Cisco Asa 8.3. Twice Nat >>>>> Download Full

    >>>>> Download LINK eq

    ОтветитьУдалить