Управление сервисами
Настройка DHCP-сервера
Встроенный DHCP-сервер маршрутизатора может быть использован для настройки сетевых параметров устройств в локальной сети. DHCP-сервер маршрутизаторов способен передавать дополнительные опции на сетевые устройства, например:
- default-router – IP-адрес маршрутизатора, используемого в качестве шлюза по умолчанию;
- domain-name – доменное имя, которое должен будет использовать клиент при разрешении имен хостов через Систему Доменных Имен (DNS);
- dns-server – список адресов серверов доменных имен в данной сети, о которых должен знать клиент. Адреса серверов в списке располагаются в порядке убывания предпочтения.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Включить IPv4/IPv6 DHCP-сервер. | esr(config)# ip dhcp-server [vrf <VRF>] | <VRF> – имя экземпляра VRF, в рамках которого будет работать DHCP-сервер. Задается строкой до 31 символа. |
esr(config)# ipv6 dhcp-server [vrf <VRF>] | |||
2 | Задать значение кода DSCP для использования в IP-заголовке исходящих пакетов DHCP-сервера (не обязательно). | esr(config)# ip dhcp-server dscp <DSCP> | <DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63]. Значение по умолчанию: 61. |
3 | Создать пул IPv4/IPv6-адресов DHCP-сервера и перейти в режим его конфигурирования. | esr(config)# ip dhcp-server pool <NAME> [vrf <VRF>] | <NAME> – имя пула IPv4/IPv6-адресов DHCP-сервера, задаётся строка до 31 символа. <VRF> – имя экземпляра VRF, в рамках которого будет работать данный пул IP-адресов DHCP-сервера. Задается строкой до 31 символа |
esr(config)# ipv6 dhcp-server pool <NAME> [vrf <VRF>] | |||
4 | Задать IPv4/IPv6-адрес и маску для подсети, из которой будет выделен пул IPv4/IPv6-адресов. | esr(config-dhcp-server)# network <ADDR/LEN> | <ADDR/LEN> – IP-адрес и префикс подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
esr(config-ipv6-dhcp-server)# network <IPV6-ADDR/LEN> | <IPV6-ADDR/LEN> – IP-адрес и префикс подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128]. | ||
5 | Добавить диапазон IPv4/IPv6-адресов к пулу адресов, конфигурируемого DHCP-сервера. | esr(config-dhcp-server)# address-range <FROM-ADDR>-<TO-ADDR> | <FROM-ADDR> – начальный IP-адрес диапазона; <TO-ADDR> – конечный IP-адрес диапазона, Адреса задаются в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Можно указать до 32 диапазонов IP-адресов, список задаётся через запятую. |
esr(config-ipv6-dhcp-server)# address-range <FROM-ADDR>-<TO-ADDR> | <FROM-ADDR> – начальный IPv6-адрес диапазона; <TO-ADDR> – конечный IP-адрес диапазона; Адреса задаются в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
6 | Добавить IPv4/IPv6-адрес для определенного физического адреса к пулу адресов конфигурируемого DHCP-сервера (не обязательно). | esr(config-dhcp-server)# address <ADDR> | <ADDR> – IP-адрес клиента, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <MAC> – МАС-адрес клиента, которому будет выдан IP-адрес, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF]. <CI> – идентификатор клиента согласно DHCPOption61. Может быть задан в одном из следующих видов:
|
esr(config-ipv6-dhcp-server)# address <ADDR> mac-address <MAC> | <IPV6-ADDR> – IPv6-адрес клиента, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]; <MAC> – МАС-адрес клиента, которому будет выдан IPv6-адрес, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF] | ||
7 | Задать список IPv4-адресов шлюзов по умолчанию, которые DHCP-сервер будет сообщать клиентам, используя DHCP-опцию 3. | esr(config-dhcp-server)# default-router <ADDR> | <ADDR> – IP-адрес шлюза по умолчанию, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Можно указать до 8 IP-адресов, список задаётся через запятую. |
8 | Задать DNS-имя сетевого домена. Имя домена передаётся клиентам в составе DHCP-опции 15 (не обязательно). | esr(config-dhcp-server)# domain-name <NAME> | <NAME> – DNS-имя домена клиента, задаётся строкой до 255 символов. |
esr(config-ipv6-dhcp-server)# domain-name <NAME> | |||
9 | Задать список IPv4/IPv6-адресов DNS-серверов. Список передаётся клиентам в составе DHCP-опции 6 (не обязательно). | esr(config-dhcp-server)# dns-server <ADDR> | <ADDR> – IP-адрес DNS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Можно указать до 8 IP-адресов, список задаётся через запятую. |
esr(config-ipv6-dhcp-server)# dns-server <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес DNS-сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. Можно указать до 8 IPv6-адресов, список задаётся через запятую. | ||
10 | Задать максимальное время аренды IP-адресов (не обязательно). Если DHCP-клиент запрашивает время аренды, превосходящее максимальное значение, то будет установлено время, заданное этой командой. | esr(config-dhcp-server)# max-lease-time <TIME> | <TIME> – максимальное время аренды IP-адреса, задаётся в формате DD:HH:MM, где:
Значение по умолчанию: 1 день |
esr(config-ipv6-dhcp-server)# max-lease-time <TIME> | |||
11 | Задать время аренды, на которое клиенту будет выдан IP-адрес (не обязательно). Данное время будет использоваться если клиент не запрашивал определенное время аренды. | esr(config-dhcp-server)# default-lease-time <TIME> | <TIME> – максимальное время аренды IP-адреса, задаётся в формате DD:HH:MM, где:
Значение по умолчанию: 12 часов. |
esr(config-ipv6-dhcp-server)# default-lease-time <TIME> | |||
12 | Создать идентификатор класса поставщика (DHCP Опция 60) (не обязательно). | esr(config)# ip dhcp-server vendor-class-id <NAME> | <NAME> – идентификатор класса поставщика, задаётся строкой до 31 символа. |
esr(config)# ipv6 dhcp-server vendor-class-id <NAME> | |||
13 | Задать специфическую информацию поставщика (DHCP Опция 43). | esr(config-dhcp-vendor-id)# vendor-specific-options <HEX> | <HEX> – специфическая информация поставщика, задаётся в шестнадцатеричном формате до 128 символов. |
esr(config-ipv6-dhcp-vendor-id)# vendor-specific-options <HEX> | |||
14 | Задать IP-адрес NetBIOS-сервера (DHCP опция 44) (не обязательно). | esr(config-dhcp-server)# netbios-name-server <ADDR> | <ADDR> – IP-адрес NetBIOS-сервера задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Можно задать до 4 IP-адресов. |
15 | Задать IP-адрес tftp-сервера (DHCPOption 150) (не обязательно). | esr(config-dhcp-server)# tftp-server <ADDR> | <ADDR> – IP-адрес DNS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
Пример настройки
Задача:
Настроить работу DHCP-сервера в локальной сети, относящейся к зоне безопасности «trusted». Задать пул IP-адресов из подсети 192.168.1.0/24 для раздачи клиентам. Задать время аренды адресов 1 день. Настроить передачу клиентам маршрута по умолчанию, доменного имени и адресов DNS-серверов с помощью DHCP-опций.
Решение:
Создадим зону безопасности «trusted» и установим принадлежность используемых сетевых интерфейсов к зонам:
esr# configure
esr(config)# security zone trusted
esr(config-zone)# exit
Создадим пул адресов с именем «Simple» и добавим в данный пул адресов диапазон IP-адресов для выдачи в аренду клиентам сервера. Укажем параметры подсети, к которой принадлежит данный пул, и время аренды для выдаваемых адресов:
esr# configure
esr(config)# ip dhcp-server pool Simple
esr(config-dhcp-server)# network 192.168.1.0/24
esr(config-dhcp-server)# address-range 192.168.1.100-192.168.1.125
esr(config-dhcp-server)# default-lease-time 1:00:00
Сконфигурируем передачу клиентам дополнительных сетевых параметров:
- маршрут по умолчанию: 192.168.1.1;
- имя домена: eltex.loc;
- список DNS-серверов: DNS1: 172.16.0.1, DNS2: 8.8.8.8.
esr(config-dhcp-server)# domain-name "eltex.loc"
esr(config-dhcp-server)# default-router 192.168.1.1
esr(config-dhcp-server)# dns-server 172.16.0.1,8.8.8.8
esr(config-dhcp-server)# exit
Для того чтобы DHCP-сервер мог раздавать IP-адреса из конфигурируемого пула, на маршрутизаторе должен быть создан IP-интерфейс, принадлежащий к той же подсети, что и адреса пула.
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# security-zone trusted
esr(config-if-gi)# ip address 192.168.1.1/24
esr(config-if-gi)# exit
Для разрешения прохождения сообщений протокола DHCP к серверу необходимо создать соответствующие профили портов, включающие порт источника 68 и порт назначения 67, используемые протоколом DHCP, и создать разрешающее правило в политике безопасности для прохождения пакетов протокола UDP:
esr(config)# object-group service dhcp_server
esr(config-object-group-service)# port-range 67
esr(config-object-group-service)# exit
esr(config)# object-group service dhcp_client
esr(config-object-group-service)# port-range 68
esr(config-object-group-service)# exit
esr(config)# security zone-pair trusted self
esr(config-zone-pair)# rule 30
esr(config-zone-rule)# match protocol udp
esr(config-zone-rule)# match source-port dhcp_client
esr(config-zone-rule)# match destination-port dhcp_server
esr(config-zone-rule)# action permit
esr(config-zone-rule)# enable
esr(config-zone-rule)# exit
esr(config-zone-pair)# exit
Разрешим работу сервера:
esr(config)# ip dhcp-server
esr(config)# exit
Просмотреть список арендованных адресов можно с помощью команды:
esr# show ip dhcp binding
Просмотреть сконфигурированные пулы адресов можно командами:
esr# show ip dhcp server pool
esr# show ip dhcp server pool Simple
Конфигурирование настроек для IPv6 производится по аналогии с IPv4.
Конфигурирование Destination NAT
Функция Destination NAT (DNAT) состоит в преобразовании IP-адреса назначения у пакетов, проходящих через сетевой шлюз.
DNAT используется для перенаправления трафика, идущего на некоторый «виртуальный» адрес в публичной сети, на «реальный» сервер в локальной сети, находящийся за сетевым шлюзом. Эту функцию можно использовать для организации публичного доступа к серверам, находящимся в частной сети и не имеющим публичного сетевого адреса.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Перейти в режим настройки сервиса трансляции адресов получателя. | esr(config)# nat destination | |
2 | Cоздать пул IP-адресов и/или TCP/UDP-портов с определённым именем (не обязательно). | esr(config-dnat)# pool <NAME> | <NAME> – имя пула NAT-адресов, задаётся строкой до 31 символа. |
3 | Установить внутренний IP-адрес, на который будет заменяться IP-адрес получателя. | esr(config-dnat-pool)# ip address <ADDR> | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
4 | Установить внутренний TCP/UDP-порт, на который будет заменяться TCP/UDP-порт получателя. | esr(config-dnat-pool)# ip port <PORT> | <PORT> – TCP/UDP-порт, принимает значения [1..65535]. |
5 | Создать группу правил с определённым именем. | esr(config-dnat)# ruleset <NAME> | <NAME> – имя группы правил, задаётся строкой до 31 символа. |
6 | Указать экземпляр VRF, в котором будет работать данная группа правил (не обязательно). | esr(config-dnat-ruleset)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задается строкой до 31 символа. |
7 | Задать область применения группы правил. Правила будут применяться только для трафика, идущего из определенной зоны или интерфейса. | esr(config-dnat-ruleset)# from { zone <NAME> | <NAME> – имя зоны изоляции; <IF> – имя интерфейса устройства; <TUN> – имя туннеля устройства; default – обозначает группу правил для всего трафика, источник которого не попал под критерии других групп правил. |
8 | Задать правило c определённым номером. Правила обрабатываются в порядке возрастания. | esr(config-dnat-ruleset)# rule <ORDER> | <ORDER> – номер правила, принимает значения [1..10000]. |
9 | Задать профиль IP-адресов {отправителя | получателя}, для которых должно срабатывать правило. | esr(config-dnat-rule)# match [not] | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. Значение «any» указывает на любой IP-адрес отправителя. |
10 | Задать профиль сервисов (tcp/udp-портов) {отправителя | получателя}, для которых должно срабатывать правило (не обязательно). | esr(config-dnat-rule)# match [not] | <PORT-SET-NAME> – имя профиля порта, задаётся строкой до 31 символа. Значение «any» указывает на любой TCP/UDP-порт отправителя. |
11 | Установить имя или номер IP-протокола, для которого должно срабатывать правило (не обязательно). | esr(config-dnat-rule)# match [not] | <TYPE> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre. Значение «any» указывает на любой тип протокола. <ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF]. |
12 | Задать тип и код сообщений протокола ICMP, для которых должно срабатывать правило (если в качестве протокола выбран ICMP) (не обязательно). | esr(config-dnat-rule)# match [not] | <ICMP_TYPE> – тип сообщения протокола ICMP, принимает значения [0..255]. <ICMP_CODE> – код сообщения протокола ICMP, принимает значения [0..255]. Значение «any» указывает на любой код сообщения. <TYPE-NAME> – имя типа ICMP сообщения. |
13 | Задать действие «трансляция адреса и порта получателя» для трафика, удовлетворяющего критериям, заданным командами «match». | esr(config-dnat-rule)# action destination-nat | off – трансляция отключена; pool <NAME> – имя пула, содержащего набор IP-адресов и/или TCP/UDP-портов; netmap <ADDR/LEN> – IP-адрес и маска подсети, используемые при трансляции. Параметр задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
14 | Активировать конфигурируемое правило. | esr(config-dnat-rule)# enable |
1 При использовании ключа not, правило будет срабатывать для значений, которые не входят в указанный профиль
Каждая команда «match» может содержать ключ «not». При использовании данного ключа под правило будут подпадать пакеты, не удовлетворяющие заданному критерию.
Более подробная информация о командах для настройки маршрутизатора содержится в «Справочнике команд CLI».
Пример настройки Destination NAT
Задача:
Организовать доступ из публичной сети, относящейся к зоне «UNTRUST», к серверу локальной сети в зоне «TRUST». Адрес сервера в локальной сети – 10.1.1.100. Сервер должен быть доступным извне по адресу 1.2.3.4, доступный порт 80.
Решение:
Создадим зоны безопасности «UNTRUST» и «TRUST». Установим принадлежность используемых сетевых интерфейсов к зонам. Одновременно назначим IP‑адреса интерфейсам.
esr# configure
esr(config)# security zone UNTRUST
esr(config-zone)# exit
esr(config)# security zone TRUST
esr(config-zone)# exit
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# security-zone TRUST
esr(config-if-gi)# ip address 10.1.1.1/25
esr(config-if-gi)# exit
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip address 1.2.3.4/29
esr(config-if-te)# security-zone UNTRUST
esr(config-if-te)# exit
Создадим профили IP-адресов и портов, которые потребуются для настройки правил Firewall и правил DNAT.
- NET_UPLINK – профиль адресов публичной сети;
- SERVER_IP – профиль адресов локальной сети;
- SRV_HTTP – профиль портов.
esr(config)# object-group network NET_UPLINK
esr(config-object-group-network)# ip address 1.2.3.4
esr(config-object-group-network)# exit
esr(config)# object-group service SRV_HTTP
esr(config-object-group-service)# port 80
esr(config-object-group-service)# exit
esr(config)# object-group network SERVER_IP
esr(config-object-group-network)# ip address 10.1.1.100
esr(config-object-group-network)# exit
Войдем в режим конфигурирования функции DNAT и создадим пул адресов и портов назначения, в которые будут транслироваться адреса пакетов, поступающие на адрес 1.2.3.4 из внешней сети.
esr(config)# nat destination
esr(config-dnat)# pool SERVER_POOL
esr(config-dnat-pool)# ip address 10.1.1.100
esr(config-dnat-pool)# ip port 80
esr(config-dnat-pool)# exit
Создадим набор правил «DNAT», в соответствии с которыми будет производиться трансляция адресов. В атрибутах набора укажем, что правила применяются только для пакетов, пришедших из зоны «UNTRUST». Набор правил включает в себя требования соответствия данных по адресу и порту назначения (match destination-address, match destination-port) и по протоколу. Кроме этого в наборе задано действие, применяемое к данным, удовлетворяющим всем правилам (action destination-nat). Набор правил вводится в действие командой «enable».
esr(config-dnat)# ruleset DNAT
esr(config-dnat-ruleset)# from zone UNTRUST
esr(config-dnat-ruleset)# rule 1
esr(config-dnat-rule)# match destination-address NET_UPLINK
esr(config-dnat-rule)# match protocol tcp
esr(config-dnat-rule)# match destination-port SRV_HTTP
esr(config-dnat-rule)# action destination-nat pool SERVER_POOL
esr(config-dnat-rule)# enable
esr(config-dnat-rule)# exit
esr(config-dnat-ruleset)# exit
esr(config-dnat)# exit
Для пропуска трафика, идущего из зоны «UNTRUST» в «TRUST», создадим соответствующую пару зон. Пропускать следует только трафик с адресом назначения, соответствующим заданному в профиле «SERVER_IP» и прошедший преобразование DNAT.
esr(config)# security zone-pair UNTRUST TRUST
esr(config-zone-pair)# rule 1
esr(config-zone-pair-rule)# match destination-address SERVER_IP
esr(config-zone-pair-rule)# match destination-nat
esr(config-zone-pair-rule)# action permit
esr(config-zone-pair-rule)# enable
esr(config-zone-pair-rule)# exit
esr(config-zone-pair)# exit
esr(config)# exit
Произведенные настройки можно посмотреть с помощью команд:
esr# show ip nat destination pools
esr# show ip nat destination rulesets
esr# show ip nat proxy-arp
esr# show ip nat translations
Конфигурирование Source NAT
Функция Source NAT (SNAT) используется для подмены адреса источника у пакетов, проходящих через сетевой шлюз. При прохождении пакетов из локальной сети в публичную сеть, адрес источника заменяется на один из публичных адресов шлюза. Дополнительно к адресу источника может применяться замена порта источника. При прохождении пакетов из публичной сети в локальную происходит обратная подмена адреса и порта.
Функция SNAT может быть использована для предоставления доступа в Интернет компьютерам, находящимся в локальной сети. При этом не требуется назначения публичных IP-адресов этим компьютерам.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Перейти в режим настройки сервиса трансляции адресов отправителя. | esr(config)# nat source | |
2 | Создать пул IP-адресов и/или TCP/UDP-портов с определённым именем (не обязательно). | esr(config-snat)# pool <NAME> | <NAME> – имя пула NAT-адресов, задаётся строкой до 31 символа. |
3 | Установить диапазон IP-адресов, для которых будет заменяться IP-адрес отправителя. | esr(config-snat-pool)# ip address-range <IP>[-<ENDIP>] | <IP> – IP-адрес начала диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <ENDIP> – IP-адрес конца диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Если не указывать IP-адрес конца диапазона, то в качестве IP-адреса для трансляции используется только IP-адрес начала диапазона. |
4 | Задать диапазон внешних TCP/UDP-портов, на которые будет заменяться TCP/UDP-порт отправителя. | esr(config-snat-pool)# ip port-range <PORT>[-<ENDPORT>] | <PORT> – TCP/UDP-порт начала диапазона, принимает значения [1..65535]; <ENDPORT> – TCP/UDP-порт конца диапазона, принимает значения [1..65535]. Если не указывать TCP/UDP-порт конца диапазона, то в качестве TCP/UDP-порта для трансляции используется только TCP/UDP-порт начала диапазона. |
5 | Установить внутренний TCP/UDP-порт, на который будет заменяться TCP/UDP-порт отправителя. | esr(config-snat-pool)# ip port <PORT> | <PORT> – TCP/UDP-порт, принимает значения [1..65535]. |
6 | Включить функции NAT persistent. | esr(config-snat-pool)# persistent | |
7 | Создать группу правил с определённым именем. | esr(config-snat)# ruleset <NAME> | <NAME> – имя группы правил, задаётся строкой до 31 символа. |
8 | Указать экземпляр VRF, в котором будет работать данная группа правил (не обязательно). | esr(config-snat-ruleset)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задается строкой до 31 символа. |
9 | Задать область применения группы правил. Правила будут применяться только для трафика, идущего в определенную зону или интерфейс. | esr(config-snat-ruleset)# to { zone <NAME> | | <NAME> – имя зоны изоляции; <IF> – имя интерфейса устройства; <TUN> – имя туннеля устройства |
10 | Задать правило c определённым номером. Правила обрабатываются в порядке возрастания. | esr(config-snat-ruleset)# rule <ORDER> | <ORDER> – номер правила, принимает значения [1..10000]. |
11 | Задать профиль IP-адресов {отправителя | получателя}, для которых должно срабатывать правило. | esr(config-snat-rule)# match [not] | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. Значение «any» указывает на любой IP-адрес отправителя. |
12 | Задать профиль IP-адресов {отправителя | получателя}, для которых должно срабатывать правило (не обязательно). | esr(config-snat-rule)# match [not] | <PORT-SET-NAME> – имя профиля порта, задаётся строкой до 31 символа. Значение «any» указывает на любой TCP/UDP-порт отправителя. |
13 | Установить имя или номер IP-протокола, для которого должно срабатывать правило (не обязательно). | esr(config-snat-rule)# match [not] | <TYPE> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre. Значение «any» указывает на любой тип протокола; <ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF]. |
14 | Задать тип и код сообщений протокола ICMP, для которых должно срабатывать правило (не обязательно). | esr(config-snat-rule)# match [not] | <ICMP_TYPE> – тип сообщения протокола ICMP, принимает значения [0..255]; <ICMP_CODE> – код сообщения протокола ICMP, принимает значения [0..255]. Значение «any» указывает на любой код сообщения; <TYPE-NAME> – имя типа ICMP сообщения |
15 | Задать действие «трансляция адреса и порта отправителя» для трафика, удовлетворяющего критериям, заданным командами «match» | esr(config-snat-rule)# action source-nat { off | | off – трансляция отключена; pool<NAME> – имя пула, содержащего набор IP-адресов и/или TCP/UDP-портов; netmap <ADDR/LEN> – IP-адрес и маска подсети, используемые при трансляции; static – опция для организации статического NAT. Параметр задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. interface [FIRST_PORT – LAST_PORT] – задаёт трансляцию в IP-адрес интерфейса. Если дополнительно задан диапазон TCP/UDP-портов, то трансляция будет происходить только для TCP/UDP- портов отправителя, входящих в указанный диапазон. |
16 | Активировать конфигурируемое правило. | esr(config-snat-rule)# enable |
1 При использовании ключа not, правило будет срабатывать для значений, которые не входят в указанный профиль
Каждая команда «match» может содержать ключ «not». При использовании данного ключа под правило будут подпадать пакеты, не удовлетворяющие заданному критерию.
Более подробная информация о командах для настройки маршрутизатора содержится в «Справочнике команд CLI».
Пример настройки 1
Задача:
Настроить доступ пользователей локальной сети 10.1.2.0/24 к публичной сети с использованием функции Source NAT. Задать диапазон адресов публичной сети для использования SNAT 100.0.0.100-100.0.0.249.
Решение:
Конфигурирование начнем с создания зон безопасности, настройки сетевых интерфейсов и определения их принадлежности к зонам безопасности. Создадим доверенную зону «TRUST» для локальной сети и зону «UNTRUST» для публичной сети.
esr# configure
esr(config)# security zone UNTRUST
esr(config-zone)# exit
esr(config)# security zone TRUST
esr(config-zone)# exit
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip address 10.1.2.1/24
esr(config-if-gi)# security-zone TRUST
esr(config-if-gi)# exit
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip address 100.0.0.99/24
esr(config-if-te)# security-zone UNTRUST
esr(config-if-te)# exit
Для конфигурирования функции SNAT и настройки правил зон безопасности потребуется создать профиль адресов локальной сети «LOCAL_NET», включающий адреса, которым разрешен выход в публичную сеть, и профиль адресов публичной сети «PUBLIC_POOL».
esr(config)# object-group network LOCAL_NET
esr(config-object-group-network)# ip address-range 10.1.2.2-10.1.2.254
esr(config-object-group-network)# exit
esr(config)# object-group network PUBLIC_POOL
esr(config-object-group-network)# ip address-range 100.0.0.100-100.0.0.249
esr(config-object-group-network)# exit
Для пропуска трафика из зоны «TRUST» в зону «UNTRUST» создадим пару зон и добавим правила, разрешающие проходить трафику в этом направлении. Дополнительно включена проверка адреса источника данных на принадлежность к диапазону адресов «LOCAL_NET» для соблюдения ограничения на выход в публичную сеть. Действие правил разрешается командой enable.
esr(config)# security zone-pair TRUST UNTRUST
esr(config-zone-pair)# rule 1
esr(config-zone-pair-rule)# match source-address LOCAL_NET
esr(config-zone-pair-rule)# action permit
esr(config-zone-pair-rule)# enable
esr(config-zone-pair-rule)# exit
esr(config-zone-pair)# exit
Конфигурируем сервис SNAT. Первым шагом создаётся пул адресов публичной сети, используемых для сервиса SNAT.
esr(config)# nat sourсe
esr(config-snat)# pool TRANSLATE_ADDRESS
esr(config-snat-pool)# ip address-range 100.0.0.100-100.0.0.249
esr(config-snat-pool)# exit
Вторым шагом создаётся набор правил SNAT. В атрибутах набора укажем, что правила применяются только для пакетов, направляющихся в публичную сеть – в зону «UNTRUST». Правила включают проверку адреса источника данных на принадлежность к пулу «LOCAL_NET».
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to zone UNTRUST
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# match source-address LOCAL_NET
esr(config-snat-rule)# action source-nat pool TRANSLATE_ADDRESS
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
Для того чтобы маршрутизатор отвечал на запросы протокола ARP для адресов, входящих в публичный пул, необходимо запустить сервис ARP Proxy. Сервис ARP Proxy настраивается на интерфейсе, которому принадлежит IP-адрес из подсети профиля адресов публичной сети «PUBLIC_POOL».
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip nat proxy-arp PUBLIC_POOL
Для того чтобы устройства локальной сети могли получить доступ к публичной сети, на них должна быть настроена маршрутизация – адрес 10.1.2.1 должен быть назначен адресом шлюза.
На самом маршрутизаторе также должен быть создан маршрут для направления на публичную сеть. Этот маршрут может быть назначен маршрутом по умолчанию с помощью следующей команды.
esr(config)# ip route 0.0.0.0/0 100.0.0.1
esr(config)# exit
Пример настройки 2
Задача:
Настроить доступ пользователей локальной сети 21.12.2.0/24 к публичной сети с использованием функции Source NAT без использования межсетевого экрана (firewall). Диапазон адресов публичной сети для использования SNAT 200.10.0.100-200.10.0.249.
Решение:
Конфигурирование начнем с настройки сетевых интерфейсов и отключения межсетевого:
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip address 21.12.2.1/24
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# exit
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip address 200.10.0.1/24
esr(config-if-te)# ip firewall disable
esr(config-if-te)# exit
Для конфигурирования функции SNAT потребуется создать профиль адресов локальной сети «LOCAL_NET», включающий адреса, которым разрешен выход в публичную сеть, и профиль адресов публичной сети «PUBLIC_POOL»:
esr(config)# object-group network LOCAL_NET
esr(config-object-group-network)# ip address-range 21.12.2.2-21.12.2.254
esr(config-object-group-network)# exit
esr(config)# object-group network PUBLIC_POOL
esr(config-object-group-network)# ip address-range 200.10.0.100-200.10.0.249
esr(config-object-group-network)# exit
Конфигурируем сервис SNAT.
Первым шагом создаётся пул адресов публичной сети, используемых для сервиса SNAT:
esr(config)# nat source
esr(config-snat)# pool TRANSLATE_ADDRESS
esr(config-snat-pool)# ip address-range 200.10.0.100-200.10.0.249
esr(config-snat-pool)# exit
Вторым шагом создаётся набор правил SNAT. В атрибутах набора укажем, что правила применяются только для пакетов, направляющихся в публичную сеть через порт te1/0/1. Правила включают проверку адреса источника данных на принадлежность к пулу «LOCAL_NET»:
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to interface te1/0/1
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# match source-address LOCAL_NET
esr(config-snat-rule)# action source-nat pool TRANSLATE_ADDRESS
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
Для того чтобы маршрутизатор отвечал на запросы протокола ARP для адресов, входящих в публичный пул, необходимо запустить сервис ARP Proxy. Сервис ARP Proxy настраивается на интерфейсе, которому принадлежит IP-адрес из подсети профиля адресов публичной сети «PUBLIC_POOL»:
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip nat proxy-arp PUBLIC_POOL
Для того чтобы устройства локальной сети могли получить доступ к публичной сети, на них должна быть настроена маршрутизация – адрес 21.12.2.1 должен быть назначен адресом шлюза.
На самом маршрутизаторе также должен быть создан маршрут для направления на публичную сеть. Этот маршрут может быть назначен маршрутом по умолчанию с помощью следующей команды:
esr(config)# ip route 0.0.0.0/0 200.10.0.254
esr(config)# exit
Конфигурирование Static NAT
Static NAT — статический NAT задает однозначное соответствие одного адреса другому. Иными словами, при прохождении через маршрутизатор, адрес меняется на другой строго заданный адрес, один-к-одному. Запись о такой трансляции хранится неограниченно долго, пока не будет произведена перенастройка NAT на маршрутизаторе.
Алгоритм настройки
Настройка Static NAT осуществляется средствами Source NAT, алгоритм настройки которой описан в разделе Конфигурирование Source NAT, алгоритм настройки настоящего руководства.
Пример настройки Static NAT
Задача:
Настроить двухстороннюю и постоянную трансляцию из локальной сети для диапазона адресов 21.12.2.100-21.12.2.150 в публичную сеть 200.10.0.0/24. Диапазон адресов публичной сети для использования трансляции – 200.10.0.100-200.10.0.150.
Решение:
Начнем конфигурирование с настройки сетевых интерфейсов и отключения межсетевого экрана:
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip address 21.12.2.1/24
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# exit
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip address 200.10.0.1/24
esr(config-if-te)# ip firewall disable
esr(config-if-te)# exit
Для конфигурирования Static NAT потребуется создать профиль адресов локальной сети «LOCAL_NET», включающий локальную подсеть, и профиль адресов публичной сети «PUBLIC_POOL»:
esr(config)# object-group network LOCAL_NET
esr(config-object-group-network)# ip prefix 21.12.2.0/24
esr(config-object-group-network)# exit
esr(config)# object-group network PUBLIC_POOL
esr(config-object-group-network)# ip prefix 200.10.0.0/24
esr(config-object-group-network)# exit
Диапазон адресов публичной сети для использования Static NAT задаем в профиле «PROXY»:
esr(config)# object-group network PROXY
esr(config-object-group-network)# ip address-range 200.10.0.100-200.10.0.150
esr(config-object-group-network)# exit
Конфигурируем сервис Static NAT в режиме конфигурирования SNAT. В атрибутах набора укажем, что правила применяются только для пакетов, направляющихся в публичную сеть через порт te1/0/1. Правила включают проверку адреса источника данных на принадлежность к пулу «LOCAL_NET» и проверку адресов назначения на принадлежность к пулу «PUBLIC_POOL».
esr(config)# nat source
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to interface te1/0/1
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# match source-address LOCAL_NET
esr(config-snat-rule)# match destination-address PUBLIC_POOL
esr(config-snat-rule)# action source-nat netmap 200.10.0.0/24 static
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
Для того чтобы маршрутизатор отвечал на запросы протокола ARP для адресов, входящих в пул трансляции «PROXY», необходимо запустить сервис ARP Proxy. Сервис ARP Proxy настраивается на интерфейсе, которому принадлежит IP-адрес из подсети профиля адресов «PROXY».
esr(config)# interface tengigabitethernet 1/0/1
esr(config-if-te)# ip nat proxy-arp PROXY
Для того чтобы устройства локальной сети могли получить доступ к cети 200.10.0.0/24, на них должна быть настроена маршрутизация – адрес 21.12.2.1 должен быть назначен адресом шлюза.
Изменения конфигурации вступают в действие по команде применения.
esr# commit
Configuration has been successfully committed
esr# confirm
Configuration has been successfully confirmed
Посмотреть активные трансляции можно с помощью команды:
esr# show ip nat translations
Проксирование HTTP/HTTPS-трафика
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Cоздать объект с URL. | esr(config)# object-group url <NAME> | |
2 | Указать набор. | esr(config-object-group-url)# url <URL> | <URL> – адрес веб страницы, сайта. |
3 | Создать профиль проксирования. | esr(config)# ip http profile <NAME> | <NAME> – название профиля. |
4 | Выбрать действие по умолчанию. | esr(config-profile)# default action {deny|permit|redirect} | <URL> – адрес хоста, на который будут передаваться запросы. |
5 | Указать описание (не обязательно). | esr(config-profile)# description <description> | <description> – до 255 символов. |
6 | Указать удаленный или локальный список URL и тип операции (блокировка/ пропуск трафика/ перенаправление) (не обязательно). | esr(config-profile)# urls {local|remote} <URL_OBJ_GROUP_NAME> | <URL_OBJ_GROUP_NAME> – указать название объекта, содержащего набор URL. |
7 | Указать удаленный сервер, где лежат необходимые списки URL (не обязательно). | esr(config)# ip http proxy server-url <URL> | <URL> – адрес сервера, откуда будут брать удалённые списки url. |
8 | Указать прослушиваемый порт для проксирования (не обязательно). | esr(config)# ip http proxy listen-ports <OBJ_GROUP_NAME> | <OBJ_GROUP_NAME> – имя профиля порта, задаётся строкой до 31 символа. |
9 | Указать прослушиваемый порт для проксирования (не обязательно). | esr(config)# ip https proxy listen-ports <OBJ_GROUP_NAME> | <OBJ_GROUP_NAME> – имя профиля порта, задаётся строкой до 31 символа. |
10 | Указать базовый порт для проксирования (не обязательно). | esr(config)# ip https proxy redirect-port <PORT> | <PORT> – номер порта, указывается в диапазоне [1..65535]. Значение по умолчанию 3128 |
11 | Включить проксирование на интерфейсе на основе выбранного HTTP-профиля. | esr(config-if)# ip http proxy <PROFILE_NAME> | <PROFILE_NAME> – название профиля |
12 | Включить проксирование на интерфейсе на основе выбранного HTTPS-профиля. | esr(config-if)# ip https proxy <PROFILE_NAME> | <PROFILE_NAME> – название профиля |
13 | Создать списки сервисов, которые будут использоваться при фильтрации. | esr(config)# object-group service <obj-group-name> | <obj-group-name> – имя профиля сервисов, задается строкой до 31 символа. |
14 | Задать описание списка сервисов (не обязательно). | esr(config-object-group-service)# description <description> | <description> – описание профиля, задается строкой до 255 символов. |
15 | Внести необходимые сервисы (tcp/udp-порты) в список. | esr(config-object-group-service)# port-range 3128-3135 | Прокси-сервер ESR использует для своей работы порты начиная с базового порта определённого на 10 шаге Для http proxy используются порты начиная с базового порта по базовый порт + количество cpu данной модели ESR - 1 Для https proxy используются порты начиная с базового порта + количество cpu данной модели ESR по базовый порт + количество cpu данной модели ESR * 2 - 1 |
16 | Создать набор правил межзонового взаимодействия. | esr(config)# security zone-pair <src-zone-name1> self | <src-zone-name> – зона безопасности, в которой находятся интерфейсы с функцией ip http proxy или ip https proxy. self – предопределенная зона безопасности для трафика, поступающего на сам ESR. |
17 | Создать правило межзонового взаимодействия. | esr(config-zone-pair)# rule <rule-number> | <rule-number> – 1..10000. |
18 | Задать описание правила (не обязательно). | esr(config-zone-rule)# description <description> | <description> – до 255 символов. |
19 | Указать действие данного правила. | esr(config-zone-rule)# action <action> [ log ] | <action> – permit log – ключ для активации логирования сессий, которые устанавливаются согласно данному правилу. |
20 | Установить имя IP-протокола, для которого должно срабатывать правило | esr(config-zone-rule)# match protocol <protocol-type> | <protocol-type> – tcp Прокси-сервер ESR работает по протоколу ESR. |
21 | Установить профиль TCP/UDP-портов получателя, для которых должно срабатывать правило (если указан протокол). | esr(config-zone-rule)# match [not] | <obj-group-name> – имя профиля сервисов, созданного на шаге №12 |
22 | Включить правило межзонового взаимодействия. | esr(config-zone-rule)# enable |
Если функция Firewall на ESR принудительно не отключена, необходимо создать разрешающее правило для зоны Self.
Пример настройки HTTP-прокси
Задача:
Организовать фильтрацию по URL для ряда адресов посредством прокси.
Решение:
Создадим набор URL, по которым будет осуществляться фильтрация. Настроим прокси-фильтр и укажем действия для созданного набора URL:
esr# configure
esr(config)# object-group url test1
esr(config-object-group-url)# url http://speedtest.net/
esr(config-object-group-url)# url http://www.speedtest.net/
esr(config-object-group-url)# url https://speedtest.net/
esr(config-object-group-url)# url https://www.speedtest.net/
esr(config-object-group-url)# exit
Создаем профиль:
esr(config)# ip http profile list1
esr(config-profile)# default action permit
esr(config-profile)# urls local test1 action redirect redirect-url http://test.loc
esr(config-profile)# exit
Включим проксирование на интерфейсе по профилю ‘list1’:
esr(config)# interface gi 1/0/1
esr(config-if)# ip http proxy list1
esr(config-if)# ip https proxy list1
Если используется Firewall, создадим для него разрешающие правила:
Допустим мы используем модель ESR-20 у которой 4 CPU.
Для http proxy нам надо открыть порты с 3128 по 3131
Для https proxy нам надо открыть порты с 3132 по 3135
Создаем профиль портов Прокси-сервера:
esr(config)# object-group service proxy
esr(config-object-group-service)# port-range 3128-3135
esr(config-object-group-service)# exit
Создаем разрешающее правило межзонового взаимодействия:
esr(config)# security zone-pair LAN self
esr(config-zone-pair)# rule 50
esr(config-zone-pair-rule)# action permit
esr(config-zone-pair-rule)# match protocol tcp
esr(config-zone-pair-rule)# match destination-port proxy
esr(config-zone-pair-rule)# enable
esr(config-zone-pair-rule)# exit
esr(config-zone-pair)# exit
Настройка NTP
NTP (англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов оборудования с использованием IP-сетей, использует для своей работы протокол UDP, учитывает время передачи и использует алгоритмы для достижения высокой точности синхронизации времени.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Включить NTP. | esr(config)# ntp enable | |
2 | Задать IP-адрес NTP-сервера, либо участника NTP-синхронизации. | esr(config)# ntp { server | peer } { <IP> } | <IP> – IP-адрес назначения (шлюз), задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
3 | Задать ключ для аутентификации (не обязательно). | esr(config-ntp)# key <ID> | <ID> – идентификатор ключа, задается в диапазоне [1..255]. |
4 | Установить максимальное значение интервала времени между отправкой сообщений NTP-серверу (не обязательно). | esr(config-ntp)# maxpoll <INTERVAL> | <INTERVAL> – максимальное значение интервала опроса. Параметр команды используется как показатель степени двойки при вычислении длительности интервала в секундах, вычисляется путем возведения двойки в степень, заданную параметром команды, принимает значение [10..17]. Значение по умолчанию: |
5 | Установить минимальное значение интервала времени между отправкой сообщений NTP-серверу (не обязательно). | esr(config-ntp)# minpoll <INTERVAL> | <INTERVAL> – минимальное значение интервала опроса в секундах вычисляется путем возведения двойки в степень, заданную параметром команды, принимает значение [4..6]. Значение по умолчанию: 6 (26= 64 секунды или 1 минута 4 секунды). |
6 | Отметить данный NTP-сервер как предпочтительный (не обязательно). | esr(config-ntp)# prefer | |
7 | Определить список доверенных IP-адресов, с которыми может происходить обмен ntp-пакетами (не обязательно). | esr(config)# ntp access-addresses <NAME> | <NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. |
8 | Указать идентификатор ключа из профиля связки ключей (не обязательно). | esr(config)# ntp authentication trusted-key <ID> | <ID> – идентификатор ключа из профиля связки ключей. |
9 | Указать имя профиля связки ключей (не обязательно). | esr(config)# ntp authentication key-chain <WORD> | <WORD> - имя профиля связки ключей. |
10 | Активировать аутентификацию для NTP по ключу (не обязательно). | esr(config)# ntp authentication enable | |
11 | Включить режим приёма широковещательных сообщений NTP-серверов для глобальной конфигурации и всех существующих VRF (не обязательно). | esr(config)# ntp broadcast-client enable | |
12 | Задать значение кода DSCP для использования в IP-заголовке исходящих пакетов NTP-сервера (не обязательно). | esr(config)# ntp dscp <DSCP> | <DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63] Значение по умолчанию: 46 |
13 | Включить режим query-only, ограничивающий взаимодействие по NTP для определенного профиля IP-адресов (не обязательно). | esr(config)# ntp object-group query-only <NAME> | <NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. |
14 | Включить режим serve-only, ограничивающий взаимодействие по NTP для определенного профиля IP-адресов (не обязательно). | esr(config)# ntp object-group serve-only <NAME> | <NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа. |
15 | Указать source-IP-адреса для NTP-пакетов для всех peer (не обязательно). | esr(config)# ntp source address <ADDR> | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
16 | Задать текущее время и дату в ручном режиме (не обязательно). | esr# set date <TIME> [<DAY> <MONTH> [ <YEAR> ] ] | <TIME> – устанавливаемое системное время, задаётся в виде HH:MM:SS, где:
<MONTH> – месяц, принимает значения [January/February/March/April/May/June/July/August/September/October/November/December]; <YEAR> – год, принимает значения [2001..2037]. |
Пример настройки
Задача:
Настроить синхронизацию времени от NTP-сервера.
IP-адрес маршрутизатора esr - 192.168.52.8,
IP-адрес NTP сервера – 192.168.52.41.
Решение:
Предварительно нужно выполнить следующие действия:
- указать зону безопасности для интерфейса gi1/0/1;
- настроить IP-адрес для интерфейса gi1/0/1, чтобы обеспечить IP-связность с NTP-сервером.
Пример:
security zone untrust
exit
object-group service NTP
port-range 123
exit
interface gigabitethernet 1/0/1
security-zone untrust
ip address 192.168.52.8/24
exit
security zone-pair untrust self
rule 10
action permit
match protocol udp
match destination-port NTP
enable
exit
exit
Основной этап конфигурирования:
Включение синхронизации системных часов с удаленными серверами:
esr(config)# ntp enable
Настройка NTP-сервера:
esr-(config)# ntp server 192.168.52.41
Указать предпочтительность данного NTP-сервера (необязательно):
esr-1000(config-ntp)# prefer
Указать интервал времени между отправкой сообщений NTP-серверу:
esr(config-ntp)# minpoll 4
esr(config-ntp)# end
esr# commit
esr# confirm
Команда для просмотра текущей конфигурации протокола NTP:
esr# show ntp configuration
Команда для просмотра текущего состояние NTP-серверов (пиров):
esr# show ntp peers