- Материал из Xgu.ru
- Содержание
- [править] Основные отличия
- [править] Порядок правил NAT
- [править] Auto NAT (Object NAT)
- [править] Auto NAT. Static
- [править] Auto PAT. Static
- [править] Auto NAT. Dynamic
- [править] Общая информация о трансляции адресов в Cisco ASA
- [править] Терминология
- [править] Типы правил трансляции адресов
- [править] Порядок применения различных правил трансляции
- [править] Динамическая трансляция
- [править] Dynamic NAT и PAT
- [править] Базовые настройки
- [править] Несколько правил nat и global
- [править] Правила динамической трансляции и входящие соединения
- [править] Влияние правила nat на передачу трафика на другие интерфейсы
- [править] Outside NAT
- [править] Статическая трансляция
- [править] Static NAT
- [править] Static PAT
- [править] Policy NAT
- [править] Policy Static NAT
- [править] Policy static identity NAT
- [править] Исключения из правил трансляции
- [править] Identity NAT
- [править] Static identity NAT
- [править] NAT Exemption
- [править] Проверка работы NAT
- [править] Очистка правил трансляции
- [править] Использование packet-tracer
- Object NAT
- Manual/Twice NAT
- Проверка
- Команды для старого оборудования (версия Cisco ASA до 8.3)
- Разрешение доступа в access list
Материал из Xgu.ru
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.
Автор: Наташа Самойленко
На этой странице описываются виды трансляции адресов, которые поддерживает Cisco ASA, их особенности, отличия, примеры настройки.
Начиная с версии 8.3 и выше, в ASA существенно изменился синтаксис написания правил NAT, а также правила написания ACL.
Содержание
[править] Основные отличия
- Не нужно делать настроек ната для сети, трафик в которую передаётся без преобразований (режим маршрутизатора по умолчанию).
- Отсутствуют команда nat-control (включение NAT), а также команды static и global. Все заменены на команду nat с изменившимся синтаксисом.
- В команде nat в режиме глобального конфигурирования могут быть указаны только object-network и/или object-group — специализированные списки IP-адресов (хостов, диапазонов адресов и сетей) с возможными комментариями (description).
- В object-network может быть указана только одна из трёх позиций — host, range и subnet (IP, диапазон IP, подсеть)
- В object-group может быть произвольное количество других object-group и/или object-network, а также одновременно несколько host, range и subnet (многоуровневое наследование, а также просто списки хостов и сетей).
- Команда nat доступна как в режиме глобального конфигурирования (так называемый manual nat), так и в режиме конфигурации object-network (так называемый auto nat, упрощённый синтаксис, относится к определённым в объекте IP, в назначении может напрямую указываться IP).
- Все варианты NAT можно настроить как manual nat (в глобальной конфигурации), часть правил может быть настроена как auto nat (в свойствах object-network) — то есть, двумя разными способами («обычным» и «простым»).
- Команды nat в итоговой конфигурации группируются в три независимых секции, в каждой из которых правила ЗАНОСЯТСЯ в порядке записи (если не указан приоритет), и ВЫПОЛНЯЮТСЯ в порядке расположения (сверху вниз по всем секциям, до первого совпадения).
- Благодаря приоритетам, возможна очень гибкая и удобная настройка NAT (в частности, одновременный или выборочный нат на встречные направления для одних и тех же адресов, или «внизу» общие правила, «сверху» исключения и т.п.).
- Указание одних и тех же правил (с одинаковыми исходными и/или результирующими адресами) не вызывает ошибки (верхнее правило срабатывает, следующие игнорируются).
- Примеры нового синтаксиса по сравнению со старым — https://supportforums.cisco.com/docs/DOC-9129 , а также в других источниках.
[править] Порядок правил NAT
- Правила ВНОСЯТСЯ в соответствующую секцию в порядке внесения ИЛИ в соотв. с указанным приоритетом (целое число).
- Правила ВЫПОЛНЯЮТСЯ в порядке расположения в show run — cверху вниз по всем секциям, до первого совпадения.
- Manual NAT — обычные команды nat в режиме глобальной конфигурации
- Auto NAT — команды nat в свойствах object-network
- Manual NAT после Auto — команды nat с параметром after-auto в режиме глобальной конфигурации
[править] Auto NAT (Object NAT)
[править] Auto NAT. Static
[править] Auto PAT. Static
[править] Auto NAT. Dynamic
Пример синтаксиса в 8.2:
[править] Общая информация о трансляции адресов в Cisco ASA
[править] Терминология
- Исходящее соединение (Outbound connection)
- Входящее соединение (Inbound connection)
- Real address
- Mapped address
- Real interface
- Mapped interface
[править] Типы правил трансляции адресов
ASA поддерживает несколько типов правил трансляции адресов:
- Динамическая трансляция:
- Dynamic NAT — динамический NAT транслирует группу адресов с указанного интерфейса в пул адресов. При этом каждому хосту из внутренней сети будет выделяться полностью адрес из пула.
- PAT — динамическая трансляция портов транслирует группу адресов с указанного интерфейса в выделенный IP-адрес или IP-адрес интерфейса. Для каждого нового исходящего соединения IP-адрес отправителя транслируется в один и тот же IP-адрес, но с разными номерами портов.
NAT control requires that packets traversing from an inside interface to an outside interface match a NAT rule; for any host on the inside network to access a host on the outside network, you must configure NAT to translate the inside host address
Interfaces at the same security level are not required to use NAT to communicate. However, if you configure dynamic NAT or PAT on a same security interface, then all traffic from the interface to a same security interface or an outside interface must match a NAT rule
[править] Порядок применения различных правил трансляции
The security appliance matches real addresses to NAT commands in the following order:
- NAT exemption (nat 0 access-list)—In order, until the first match. >[править] Таймеры
[править] Динамическая трансляция
[править] Dynamic NAT и PAT
[править] Базовые настройки
[править] Несколько правил nat и global
[править] Правила динамической трансляции и входящие соединения
В этом разделе описывается ситуация, когда входящий доступ в сеть возможен из-за создающихся динамических трансляций. Этот момент описан для того чтобы обратить внимание на потенциальную возможность такого использования динамической трансляции. Реально для входящих соединений динамические правила трансляции сложно использовать, так как надо знать какой IP-адрес динамически был назначен хосту.
Для того чтобы разрешить входящие соединения в сети за Cisco ASA, необходимо использовать статическую трансляцию или исключение из правил трансляции, которые описаны в соответствующих разделах.
Когда на Cisco ASA настроены правила динамической трансляции, то IP-адрес хоста, который инициирует исходящее соединение, транслируется в один из адресов пула. После этого, обращаясь из внешней сети на соответствующий адрес пула, можно попасть на реальный хост во внутренней сети. Для того чтобы избежать таких ситуаций, необходимо запретить соответствующий входящий трафик на внешнем интерфейсе.
Например, на ASA1 настроены такие правила трансляции:
После инициации соединения с inhost на outhost, появилась следующая трансляция:
На ASA1 настроен и применен к интерфейсу outside ACL ICMP, который разрешает любой ICMP-трафик:
До тех пор пока существует трансляция для хоста inhost, с хоста outhost можно отправлять ICMP-пакеты, обращаясь на IP-адрес 192.168.3.101. Кроме того, убедиться, что пинг проходит можно запустив packet-tracer на ASA1:
Phase: 1 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow
Phase: 2 Type: UN-NAT Subtype: dynamic Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
Additional Information: NAT divert to egress interface inside Untranslate 192.168.3.101/0 to inhost/0 using netmask 255.255.255.255
Phase: 3 Type: ACCESS-LIST Subtype: log Result: ALLOW Config: access-group ICMP in interface outside access-list ICMP extended permit icmp any any Additional Information:
Phase: 4 Type: CONN-SETTINGS Subtype: Result: ALLOW Config: class-map any
service-policy global_policy global Additional Information:
Phase: 5 Type: IP-OPTIONS Subtype: Result: ALLOW Config: Additional Information:
Phase: 6 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: class-map inspection_default
service-policy global_policy global Additional Information:
Phase: 7 Type: INSPECT Subtype: np-inspect Result: ALLOW Config: Additional Information:
Phase: 8 Type: NAT Subtype: rpf-check Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
Phase: 9 Type: FLOW-CREATION Subtype: Result: ALLOW Config: Additional Information: New flow created with id 225, packet dispatched to next module
Result: input-interface: outside input-status: up input-line-status: up output-interface: inside output-status: up output-line-status: up
Для примера приведен вывод packet-tracer в случае, если с хоста outhost обратиться на 80 порт адреса 192.168.3.101 (трафик отброшен ACL на внешнем интерфейсе):
Phase: 1 Type: FLOW-LOOKUP Subtype: Result: ALLOW Config: Additional Information: Found no matching flow, creating a new flow
Phase: 2 Type: UN-NAT Subtype: dynamic Result: ALLOW Config: nat (inside) 1 192.168.1.0 255.255.255.0
Additional Information: NAT divert to egress interface inside Untranslate 192.168.3.101/0 to inhost/0 using netmask 255.255.255.255
Phase: 3 Type: ACCESS-LIST Subtype: log Result: DROP Config: access-group ICMP in interface outside access-list ICMP extended deny ip any any Additional Information:
Result: input-interface: outside input-status: up input-line-status: up output-interface: inside output-status: up output-line-status: up Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
[править] Влияние правила nat на передачу трафика на другие интерфейсы
После того как какая-то сеть указана в правиле nat, указанные адреса обязательно должны транслироваться при обращении на интерфейс с меньшим или одинаковым уровнем безопасности (независимо от того включен ли nat-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.
Если с указанных адресов инициируется трафик на интерфейсы с большим уровнем безопасности, то правила трансляции не требуется. Если необходимо чтобы адреса транслировались и при доступе к интерфейсу с более высоким уровнем безопасности, то тогда необходимо настраивать Outside NAT.
Конфигурация интерфейсов ASA1:
Разрешено прохождение трафика между интерфейсами с одинаковыми уровнями безопасности:
До настройки правил трансляции:
Настроены такие правила:
После настройки правил трансляции:
Если задать правило global для интерфейса dmz2:
То с dmz1host будет доступен dmz2host:
[править] Outside NAT
После того как какая-то сеть указана в правиле nat с параметром outside, указанные адреса обязательно должны транслироваться при обращении на интерфейс с большим или одинаковым уровнем безопасности (независимо от того включен ли nat-control). То есть, должно быть указано соответствующее правило global или настроена статическая трансляция.
Если с указанных адресов инициируется трафик на интерфейсы с меньшим уровнем безопасности, то правила трансляции не требуется.
Конфигурация интерфейсов и настройки ACL на ASA1 остались такие же как в предыдущем разделе.
Правило nat (предыдущие настройки правил трансляции удалены):
После настройки правила nat с параметром outside:
После настройки правила global на интерфейсе dmz2:
С хоста dmz1host доступен хост dmz2host:
[править] Статическая трансляция
[править] Static NAT
[править] Static PAT
[править] Policy NAT
Policy NAT поддерживают все типы трансляции адресов, кроме NAT exemption. В ACL, которые применяются в NAT exemption, не могут указываться порты.
[править] Policy Static NAT
Policy Static NAT
В ACL для static policy NAT первый адрес — это реальный IP-адрес, который будет транслироваться, а второй — IP-адрес получателя или отправителя трафика (в зависимости от направления в котором передается трафик).
[править] Policy static identity NAT
[править] Исключения из правил трансляции
[править] Identity NAT
Хотя для identity NAT IP-адрес сохраняется и не транслируется, соединения с внешних сетей во внутренние не могут быть инициированы, даже если ACL разрешает их. Для того чтобы эти соединения проходили, необходимо использовать static identity NAT или NAT exemption.
При использовании identity NAT, IP-адреса, которые указаны в правиле nat 0, не будут транслироваться на любых интерфейсах. То есть, в identity NAT нельзя указать как в динамической трансляции, при прохождении через какие интерфейсы будет выполняться правило трансляции.
[править] Static identity NAT
Static identity NAT позволяет указать при прохождении через какие интерфейсы будет выполняться правило трансляции.
Например, при прохождении через интерфейс dmz1, будет отрабатывать правило static identity NAT и адрес останется неизменным, а, при прохождении через интерфейс dmz2, адрес будет транслироваться.
Вместе со static identity NAT может использоваться policy NAT.
[править] NAT Exemption
NAT exemption позволяет инициировать входящие и исходящие соединения.
Как и в правиле identity NAT, в NAT exemption не указываются интерфейсы через которые должен проходить трафик, чтобы правило сработало. Однако в NAT exemption используется ACL и с его помощью можно указать адреса отправителей и получателей.
Ограничения NAT exemption:
- В ACL, которые применяются в NAT exemption, не могут указываться порты,
- В правиле NAT exemption не могут указываться настройки сессий.
Например, если есть такой ACL:
То при применении его к правилу NAT exemption, будет такая ошибка:
[править] Проверка работы NAT
[править] Очистка правил трансляции
[править] Использование packet-tracer
- порядок применения различных механизмов на Cisco ASA:
- маршрутизация,
- трансляция адресов,
- применение ACL и тд.
Одна из самых частых проблем, связанных с настройкой Cisco ASA, это так называемый «проброс портов» (port forwarding), а по-научному настройка NAT для того, чтобы дать возможность пользователям из сети интернет заходить на внутренние серверы компании.
Базовые настройки NAT для доступа пользователей и внутренних ресурсов в интернет описаны в статье о базовой настройке Cisco ASA, а сам принцип использования технологии NAT для тех или иных случаев подробно описан в статье «Как использовать NAT». Здесь же будет будут описаны только настройки публикации внутренних ресурсов в сеть интернет.
Для реализации этого необходимо 2 составляющих:
- Настройка Static NAT для нужных адресов и портов;
- Разрешающие правила в списках доступа access-list.
В современных версиях Cisco ASA есть 2 способа реализации Static NAT – 1) через объекты (object NAT) и 2) вручную/двойной NAT (manual/twice NAT). Эти способы отличаются по логике настройки и синтаксису команд, но оба ведут к одному и тому же. В первом (object NAT) строки, описывающие правило трансляции адресов привязываются к конкретному объекту (имя + ip адрес). Во втором (manual NAT) в отдельной строке с помощью все тех же объектов указываются адреса оригинального пакета (source и destination) и преобразованного. Далее будут приведены настройки для обоих способов, а вы для себя уже решите какой из них подходит больше. А если не получается сделать «проброс портов» одним из способов, то попробуйте другой.
Важно!
Если у вас старое оборудование и версия IOS до 8.3, то пример написания строки для старого синтаксиса приведен в самом конце статьи
Object NAT
Создание объекта для внешнего адреса
object network OBJ_NAT_SERVER_XXX_EXT
host x.x.x.x
Для каждого порта создается отдельный объект с внутренним адресом сервера
object network OBJ_NAT_SERVER_XXX_INT_1433
host 192.168.1.100
object network OBJ_NAT_SERVER_XXX_INT_1433
nat (ins >OBJ_NAT_SERVER_XXX_EXT service tcp 1433 1433
Здесь и далее зеленым цветом будут отмечены части кода, отвечающие за внутренние ресурсы , а красным — внешние .
Второй объект для того же самого сервера 192.168.1.100, но с другим именем
object network OBJ_NAT_SERVER_XXX_INT_8080
host 192.168.1.100
object network OBJ_NAT_SERVER_XXX_INT_8080
nat (ins >OBJ_NAT_SERVER_XXX_EXT service tcp 8080 8080
Важно!
В зависимости от того, сколько внешних «белых» публичных адресов предоставляет вам провайдер, необходимо корректировать синтаксис команд.
Если провайдер предоставляет только один(!) статический адрес и это адрес внешнего интерфейса устройства, то в командах для NAT необходимо указывать « interface » (подразумевая внешний интерфейс outside)
Если провайдер выдает несколько (!) статических адресов и требуется задействовать один из них НЕ на внешнем интерфейсе, то для этого создается отдельный объект, для которого указывается конкретный адрес.
В случае наличия только одного адреса команда из последнего примера будет выглядеть так:
object network OBJ_NAT_SERVER_XXX_INT_1433
nat (ins >interface service tcp 1433 1433
Manual/Twice NAT
Создание объекта для внешнего адреса
object network OBJ_NAT_SERVER_XXX_EXT
host x.x.x.x
Создание объекта для внутреннего адреса
object network OBJ_NAT_SERVER_XXX_INT
host 192.168.1.100
Создание объектов для портов и протоколов, которые должны быть видны извне
object service SERVICE_TCP_1433
service tcp source eq 1433
object service SERVICE_TCP_8080
service tcp source eq 8080
Правило трансляции для каждого порта/протокола записывается в отдельной строке
nat (ins >OBJ_NAT_SERVER_XXX_INT OBJ_NAT_SERVER_XXX_EXT service SERVICE_TCP_1433 SERVICE_TCP_1433
nat (ins >OBJ_NAT_SERVER_XXX_INT OBJ_NAT_SERVER_XXX_EXT service SERVICE_TCP_8080 SERVICE_TCP_8080
Как уже писалось ранее, если в наличии есть только один «белый» адрес и он уже используется на интерфейсе, то вместо объекта с указанием внешнего адреса, в команде необходимо использовать слово interface.
nat (ins >OBJ_NAT_SERVER_XXX_INT interface service SERVICE_TCP_1433 SERVICE_TCP_1433
Проверка
Для проверки текущих настроек используйте команду sh nat detail. она покажет все текущие правила трансляции, в которых будут указаны как внешние адреса, так и внутренние для каждой строки
Команды для старого оборудования (версия Cisco ASA до 8.3)
Правила трансляции записываются построчно – по одной строчке для каждого порта. Обратите внимание, что в начале строки в скобках указана последовательность интерфейсов внутренний/внешний, при этом далее следует указание адресов в обратной последовательности внешний/внутренний. Сами команды выглядят так:
Если необходимо задействовать адрес НЕ на внешнем интерфейсе
static (ins >x.x.x.x 1433 192.168.1.100 1433 netmask 255.255.255.255
Если необходимо задействовать адрес внешнего интерфейса устройства.
static (ins >interface 1433 192.168.1.100 1433 netmask 255.255.255.255
Разрешение доступа в access list
Помимо настроек NAT для Object NAT и Manual NAT необходимо также разрешить доступ для нужных соединений. Для этого в access list, привязанному ко внешнему интерфейсу, необходимо добавить соответствующие строки. Обратите внимание, что в правилах разрешается доступ с любых адресов (any) ко внутреннему адресу сервера.
access-list ACL_OUTS >OBJ_NAT_SERVER_XXX_INT eq 1433
access-list ACL_OUTS >OBJ_NAT_SERVER_XXX_INT eq 8080
Однако, если у вас старое оборудование и версия ASA старше 8.3, то в списках доступа необходимо указывать внешний адрес.
access-list ACL_OUTS >OBJ_NAT_SERVER_XXX_EXT eq 1433
access-list ACL_OUTS >OBJ_NAT_SERVER_XXX_EXT eq 8080
Более подробно о принципах и тонкостях создания и наполнения списков доступа читайте в статье Cisco ASA. Основы. Доступ в интернет.
NAT — пожалуй одно из самых важных вещей в ASA, и для уверенной работы с ASA нужно чётко понимать принципы работы NAT.
В предыдущей части мы построили сеть с ASA, которая соединяет внутреннюю и внешниюю подсети двумя интерфейсами: inside и outside.
Здесь к нашей сети мы добавим сеть DMZ, а также интерфейс dmz.
Также мы рассмотрим собственно реализацию NAT как для версий ASA prior_8.3, так и для версий post_8.3.
Для начала проверим наши соединения, настроенные в прошлой части:
Судя по всему все работает и мы можем приступить к настройке интерфейса dmz.
ASDM > Configuration > Device Setup > Interfaces
CLI
Проверка
Поскольку еще есть масса устройств работающих со старыми версиями IOS (pre8.3), мы обязаны уметь настраивать и «Старый NAT».
Во первых в старой версии была следующая команда:
nat-control — пакеты изнутри наружу всегда должны натиться. Т.е. если не настроен NAT пакет не пойдёт в интернет.
no nat-control — пакетам изнутри наружу разрешается хотить без ната, используя чистый роутинг.
Новые версии себя ведут как будто всегда «no nat-control», т.е. подобно IOS маршрутизаторам: если настроен NAT то происходит трансляция в соответствии с правилами. Пакеты, не попавшие под трансляцию просто маршрутизируются согласно таблице маршрутизации.
Давайте теперь рассмотрим настройки NAT:
Принцип работы близок к логике IF > Then. Рассмотрим всё по порядку
Предположим что пошёл пакет в сторону интернет.
nat (inside) 1 192.168.2.0 255.255.255.0
» трафик проходит через интерфейс inside, а также его source является адрес из подсети 192.168.2.0/24.
пусть он будет принадлежать процессу NAT с номером 1"
Далее ASA делает Routing Desision, и выясняется что пакеты должны выходить через интерфейс ouside:
global (outside) 1 62.105.149.230 — 62.105.149.235
" трафик выходит через интерфейс outs > пусть source address данного пакета будет заменяться на внешние адреса из пула 62.105.149.230 — 62.105.149.235"
В данном случае мы имеем пул белых адресов, т.е. мы имеем дело с Dynamic NAT.
global (outside) 1 62.105.149.236
Данная директива очень похожа на предыдущую, с той лишь разницей, что здесь применяется PAT.
При PAT все внутренние адреса натятся в единственный белый IP адрес. В нашем случае это 192.168.1.101
Т.е. в случае когда все адреса для Dynamic NAT уже были розданы и не свободных не осталось, активируется PAT,- такая конструкция называется NAT with a backup PAT.
global (dmz) 1 interface
Данная команда осуществляет PAT в случае если трафик выходит из интерфейса dmz, а также его NAT > При этом директива interface, говорит что натить система будет на белый адрес интерфейса DMZ.
Таким образом, как видно, для каждого интерфейса, для каждой зоны необходимо прописать свой NAT или PAT, и это может стать действительно сложной задачей в крупной сети, когда таких интерфейсов(виртуальных) десятки.
access-list NONAT permit ip (source net to dest net)
nat (inside) 0 acces-lst NONAT
Данная конструкция используется для запрещения NAT для определённого трафика.
Это необходимо например при построении туннеля site-to-site. В туннеле никакой трансляции быть не должно.
Идентификатор "0" есть зарезервированный номер, который говорит системе, что NAT с таким номером реально натить не будет.
static (dmz,outside) 62.105.149.237 192.168.253.10
Это статическая трансяция. Статическая потому, что она заточена только на один хост и работает только для него.
Данная трансляция транслирует внутренний адрес сервера на соответствующий белый адрес.
static (dmz,inside) 192.168.253.10 192.168.253.10
Это тоже статическая трансляция, но при трансляции адрес не меняется. Такой нат называется Identity NAT.
Для работы клиентов зоны inside и dmz никакой трансляции не нужно, но поскольку без трансляции ничего ходить не будет, приходится использовать Identity NAT.
По сравнению со старым, новый NAT организован гораздо проще и интуитивно понятней.
Аналогично, в ASA firewall чаще всего используются два типа NAT:
- Static NAT — работает в обе стороны, Both Directions, т.е. трафик может быть инициирован как изнутри, так и снаружи. Трансляция обычно идёт как 1:1, т.е. IP адрес изнутри транслируется в IP адрес снаружи.
Наиболее часто Static NAT используется для публикации внутреннего сервера наружу:
Или, что тоже самое:
Dynamic NAT — работает только наружу, Outbound only, т.е. трафик может быть инициирован только изнутри наружу, при этом множество внутренних адресов транслируются на один внешний, many:1. Такой тип NAT ещё называют Hide NAT, поскольку за одним внешним скрываются множество внутренних.
Здесь трансляция будет вестись на адрес, который висит на интерфейсе outside
Здесь трансляция будет вестись на определённый адрес.
Или, что тоже самое:
Как видно из этих примеров, NAT привязывается к объектам сети, или внутреннему хосту.
В несложных конфигурациях, где требуется организовать пользовательский доступ в интернет, + опубликовать пару серверов это как раз то что нам нужно.
- Network object NAT или Auto NAT — это мы только что продемонстрировали.
- Twice NAT / Manual NAT
Cisco рекомендует использование Network object NAT, поскольку он проще. Twice NAT используется в более сложных случаях, поскольку имеет гораздо больше возможностей.
Давайте настроим трансляцию клиентской сети 192.168.2.0/24 на интерфейсы outside и dmz. При этом трансляцию сделаем как Dynamic NAT на пул внешних адресов: 62.105.149.230 — 62.105.149.235
Здесь мы воспользуемся типом Network object NAT(Auto NAT).
Configuration > Firewall > NAT Rules
Выбираем Add Network Object NAT rule
CLI
Как видно, данный тип NAT привязан к Network Object, т.е. к внутренней сети к которой собственно применяется этот NAT.
Проверка
Здесь обратите внимание на Section 2.
В терминологии ASA существуют три типа или sections of NAT:
- Twice NAT / Manual NAT (very granular)
- Auto NAT (Object NAT)
- Twice NAT / Manual NAT (after "auto NAT")
Мы только что выполнили Auto NAT (Object NAT), собственно поэтому и отображается Section 2.
Здесь виден флаг "i", что означает dynamic, что собственно мы и настроили.
Еще вариант настройки нат:
здесь мы в лоб указали что внутренним интерфейсом является inside
Вариант реализации PAT:
Manual NAT реализовывать гораздо более сложные сценарии.
Рассмотрим следующую задачу:
Предположим, что требуется, чтобы при доступе от клиента 192.168.2.249 на внешний адрес 195.112.100.134 внутренние адреса маскировались под 62.105.149.240.
А при доступе на все остальные — под 62.105.149.236.
Для решения этой задачи к уже существующей конфигурации мы добавим Manual NAT:
Configuration > Firewall > NAT Rules
Выбираем Add NAT Rule before "Network Object" NAT Rules — это собственно и есть Manual NAT.
Как видно теперь у нас есть политики NAT в двух секциях: Section 1 и Section 2.
Еще раз напомним:
В терминологии ASA существуют три типа или sections of NAT:
- Manual NAT (very granular)
- Auto NAT (Object NAT)
- Manual NAT (after "auto NAT")
Manual NAT или NAT Rule before "Network Object" NAT Rules более специфична и расположена выше по приоритету над Auto NAT (Object NAT). Соответственно всё что не попадает под Manual NAT идет в секцию 2, а затем и в секцию 3.
Мы можем поменять местами наши правила, тогда Manual NAT будет расположена после Auto NAT:
Таким образом Section1 и Section3 отличаются друг от друга лишь расположением правил, но не их характером.
Но при конктретно такой конфигурации наш Manual NAT не отработает, поскольку запросы до него не дойдут.
В большинстве случаем мы рассматривали NAT, при котором менялись лишь Source addresses.
При Twice NAT меняются также и Destination Addresses.
Например это может понадобиться при объединении компании и конфликте IP адресации.
Продемонстрируем это в следующей задаче:
Предположим, что требуется, чтобы при доступе от клиента 192.168.2.249 на внешний адрес 9.9.9.9 внутренние адреса маскировались под 62.105.149.240, при этом а также destination address менялась на 195.112.100.134.
Как видно, Twice NAT это тот же Manual NAT, но со сменой Destination adresses
Рассмотрим подробно строку
nat (inside,outside) source static internal_client1 outside_address2 destination static real_address_9.9.9.9 specific_real_address
Inside local — это Real IP Address клиента, как клиент выглядит изунтри, до трансляции. Здесь это internal_client1
Inside global — это то, во что мапится клиентский адрес, т.е. так клиент выглядит снаружи, после трансляции. Здесь это outside_address2
Outside local — это адрес назначения, который вводит клиент, т.е. как клиент видит адрес изнутри, до трансляции. Здесь это real_address_9.9.9.9
Outside global — это адрес назначения после трансляции, т.е. как он видится снаружи. Здесь это specific_real_address
Сервер можно опубликовать используя как Manual NAT, так и Auto NAT.
В данном примере мы применим Auto NAT или Object NAT.
Опубликуем внутренний сервер 192.168.253.10 на внешний адрес 62.105.149.237.
В данной конфигурации происходит трансляция Адрес-в-Адрес, т.е. под сервер отдан весь белый адрес, что влечет за собой:
— Для доступа данного сервера наружу уже не нужно создавать динамическое правило, он и так пойдёт наружу используя это статическое правило.
— Выполняя трансляцию Адрес-в-Адрес, мы полностью её занимаем, и этот белый адрес нельзя будет использовать для публикации другого внутреннего сервера.
Поэтому трансляцию Адрес-в-Адрес имеет смысл выполнять когда у нас много белых IP.
Более экономный вариант — это использование Static Port Address Translation (Port Redirection).
И, забегая вперёд, безусловно нужно добавить access-list для дотсупа к серверу из-вне:
Обратите внимание, что от internal на адрес 62.105.149.237 мы сможем успешно заходить и без аксес-листа, поскольку у DMZ security-level меньше и ASA такие пакеты пропустит по умолчанию.
По access-lists подробнее в следующей части.
Для того, чтобы продемонстрировать работу нового NAT рассмотрим следующий пример:
В данном случае используется лишь NAT для доступа наружу и для публикования сервера DMZ.
Для взаимодействия внутренних сетей DMZ, insidem inside2 используются лишь ACL:
В данной конфигурации:
- inside имеет доступ везде, по правилам по умолчанию.
- inside2 — имеет доступ везде, т.к. выставлен ACL permit ip any any
- dmz — имеет доступ на внутренний 192.168.2.49 по всем портам, а также на 192.168.2.12 по ftp. Поскольку включено ftp inspection, то при необходимости будет автоматом разрешён 20 порт.
- ouside — здесь разрешён лишь внутренний сервер по http и ftp.
- При работе с NAT очень удобно использовать следующие команды:
- Для удобства рекомендуется именовать "object" или "object-group" используя CAPS.
Как уже обсуждалось, в ASA присутствуют 3 Sections, в которых можно размещать правила NAT, и которые обрабатываются в соответствующем порядке:
- Section 1 — Twice NAT / Manual NAT
- Section 2 — Network Object NAT
- Section 3 — Twice NAT / Manual NAT
Исходя из этого, существуют рекомендации по размещению правил.
- Размещайте дефолтные Networks Dynamic Rules в Section 3.
Networks Dynamic Rules или PAT для сетей — самые широкие правила. Поэтому, во избежание конфликтов, они должны обрабатываться в самую последнюю очередь, т.е. в Section 3. - Размещайте Default Static Rules for Single Hosts в Section 2.
К таким правилам можно отнести правила публикации внутренних серверов. Это более специфичные правила. - Размещайте Special Dynamic/Static NAT Rules for Networks and Single Hosts в Section 1.
В секции 1 следует размещать наиболее специфичные правила. Например Identity NAT (NAT0).
Туда же помещайте Twice NAT / Manual NAT, где присутствуют параметры source и destination.
Как итог
- Section 1
- NAT0 / NAT Exemption
- Policy PAT / NAT / NAT+PAT (Т.е. функционал Section 2, который нужно перекрыть)
- Non-standard NAT configurations
- Section 2
- Static NAT
- Static PAT (Port Forward)
- Section 3
- Default PAT / NAT / NAT+PAT
- Policy PAT / NAT / NAT+PAT (for users)