ip port-map

Команда ip  port-map используется для ассоциации протоколов (сервисов) прикладного уровня с номерами TCP-портов (PAM – Port to Application Mapping) и позволяет перенаправлять трафик стандартных (системных) протоколов, а также сервисов, заданных пользователем, на любой TCP-порт.

Команда с префиксом no устанавливает значение по умолчанию.

 

Синтаксис           ip port-map appl-nameport [tcp] port-num*| from begin-port-numto end-port-num  [list acl-num]  [description description-string] 

                   no ip port-map appl-nameport [tcp] port-num*| from begin-port-numto end-port-num  [list acl-num] 

appl-name                    название протокола прикладного уровня (сервиса). Могут задаваться стандартные (системные) сервисы и пользовательские, определенные пользователем. Системные сервисы ассоциируются с общеизвестным номером порта и представлены в Таблица 13. Пользовательский сервис задается именем, который должен начинаться с префикса “user-“ и по длине не должен превышать 19 символов

tcp                                наличие или отсутствие этого ключевого слова не играет существенной роли

port-num                      номер TCP-порта. При наличии в команде слова tcp можно задать перечисление до пяти портов или диапазон портов. При отсутствии слова tcp – разрешается задать только один порт

begin-port-num          начальный порт диапазона портов, должен быть меньше конечного порта

end-port-num              конечный порт диапазона портов

acl-num                        ссылка на имя стандартного нумерованного списка доступа, который ограничивает данный сервис для определенных хостов и подсетей. Если список доступа отсутствует в конфигурации, то данная команда игнорируется при конвертировании конфигурации

description-string  строка с произвольным описанием.

 

Системно-заданные соответствия

Таблица 13

Имя протокола, сервиса

Номер порта

Описание

ftp

21

File Transfer Protocol

telnet

23

Telnet

smtp

25

Simple Mail Transfer Protocol

gopher

70

Gopher

pop3

110

Post Office Protocol – Version 3

nntp

119

Network News Transport Protocol

imap

143

Internet Message Access Protocol

imap3

220

Interactive Mail Access Protocol 3

ldap

389

Lightweight Directory Access Protocol

login

513

Remote login

 

Значение по умолчанию                    Значение по умолчанию отсутствует

 

Режимы команды                               Global configuration

 

Рекомендации по использованию

Используйте эту команду, чтобы перенаправить трафик стандартных сервисов на другие, отличные от общеизвестных, порты. Можно также добавить новый порт к общеизвестному порту. Для приложений, которые используют необщеизвестные порты, создайте пользовательский сервис.

 

Добавление записи к системному port-map 

Системно-заданные соответствия существуют неявно и их можно использовать в команде  ip  port-name, не вводя никаких дополнительных команд.

Для добавления нового порта к системному сервису напишите команду с системным port  map и она добавит новую запись в уже существующий port  map (но не заменит его!). Пример:

ip  port-map  ftp  port 2100

Данная команда приведет к тому, что для ftp будет две записи (одна явная и одна неявная).

!!! Неявная запись!!! ip port-map ftp port tcp 21 description File Transfer Protocol

!!! Явная запись!!! ip  port-map  ftp  port 2100

 

Ограничения на порты

Запрещено задавать порты, уже входящие в другой port-map (при условии, что для него не задана no-форма команды). Это относится к единичному порту, перечислению или диапазону портов, в которые входит данный порт. Например,

ip  port-map  ftp  port  tcp 23

Будет выдано сообщение об ошибке:

%Unable to add port-map entry.

 It conflicts with the system entry for telnet.

 Please delete it before adding this entry

А если в конфигурации уже существует пользовательский сервис с именем user-port-map-1 и он содержит в себе порт 2100, то на команду

ip port-map ftp port tcp 2100

будет выдано сообщение об ошибке:

%Unable to add port-map entry.

 It conflicts with the user-defined entry for user-port-map-1.

 Please delete it before adding this entry

 

Отмена системного port-map 

Неявно заданную запись системного port  map можно отменить с помощью no-формы команды. Причем данная no-команда будет отображаться по show  running-config (возможно в расширенном виде). Пример: хотим перенаправить трафик ftp на нестандартный порт 2100, для этого выполним:

no ip port-map ftp

ip port-map ftp port 2100

По команде show  running-config будет показано:

no ip port-map ftp port tcp 21 description File Transfer Protocol

ip port-map ftp port tcp 2100

Отменить no-команду можно следующим образом:

ip port-map ftp port tcp 21

А по команде show  running-config будет показано:

ip port-map ftp port tcp 21

 

Диапазон портов

При задании диапазона начальный порт обязательно должен быть меньше конечного порта. В противном случае выдается сообщение:

%Unable  to  add  port-map  entry.

 In a range, beginning value should be smaller than the end

 

Ссылка на лист доступа

Если в нескольких командах ip  port-map существуют привязки к одному и тому же листу доступа, то при обнаружении коллизий в командах выдаются сообщения об ошибках.

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

Пример корректной последовательности команд:

ip  port-map  user-port-map-1 port  tcp 2100 list 1

ip port-map user-port-map-1 port tcp 21 list 1

ip port-map user-port-map-1 port tcp 23 list 2

ip port-map ftp port tcp 23 list 1

ip port-map ftp port tcp 2100

Пример ошибочной последовательности команд:

ip  port-map  user-port-map-1 port  tcp 2100 list 1

ip port-map ftp port tcp 2100 list 1 !!! Неправильно !!!

Если второй раз прописывается команда, которая уже существует в конфигурации (совпадение с точностью до description), она игнорируется без выдачи сообщений об ошибке. Поведение, аналогичное Cisco IOS.

 

Если в листе доступа используются модификаторы log и log-input, то будет происходит логирование пакетов, проходящих через inspection фильтры. Сообщения лога показываются в следующем виде:

Inspect_<inspect-name>_<acl-name>

где <inspect-name> – имя inspection; <acl-name> – имя листа доступа, присоединенного к port-map, на которую ссылается данный inspect.

Пример:

Фрагмент конфигурации:

access-list 95 permit 10.20.30.40 log

!

no ip port-map telnet port 23

ip port-map telnet port tcp 23 list 95

!

ip inspect name inspect1 telnet

Фрагмент вывода в сообщении лога:

Inspect_inspect1_95   

В Cisco IOS записи с модификатором log не работают при инспектировании трафика.

 

Пользовательский port  map 

На имя пользовательского сервиса существуют жесткие ограничения (аналогично Cisco IOS). Если имя не начинается с префикса “user-“, то выдается сообщение:

%Unable to add port-map entry.

 Names for user-defined applications must start with 'user-'

Имя по длине не должно превышать 19 символов. При несоблюдении этого правила выдается сообщение:

%Unable to add port-map entry.

 Application name is too long. Maximum allowed characters for application name are 19

Слово tcp обязательно должно присутствовать. При несоблюдении этого правила выдается сообщение:

%Unable to add port-map entry.

 TCP protocol must be specified for user-defined applications

Добавление записей в уже существующий пользовательский port-map, ссылка на листы доступа, возможные ошибки аналогичны указанным для системных port  map.

 

Команда show  running-config 

Слово tcp показывается всегда, независимо от присутствия в команде.

Системно-заданные соответствия не показываются, хотя и существуют неявно.

 

Удаление

Существует возможность удалить весь port  map одной командой. Формат команды:

no ip port-map appl-name

Примечание: в случае пользовательских port  map данная команда удаляет весь port  map целиком; в случае системного port  map – удаляет все user-defined порты и добавляет в конфигурацию no-форму команды для pre-defined портов (если ее на этот момент еще не было).

Если данного port  map не существует, выдается сообщение:

%Unable to remove port-map entry.

 Port-map entry for application <appl-name> is not found

При удалении пользоватльского port-map целиком (см. предыдущий пункт) или при удалении последней записи такого port  map и если имеется привязка к inspection правилу, то выдается сообщение вида:

Removed <port-map-name> from inspect rule <inspection-name>

 

Если в данном inspection правиле не было привязок к другим протоколам (т.е. данный inspection  rule удаляется), то выдаются два сообщения:

Removed <port-map-name> from inspect rule <inspection-name>

Removed inspect rule <inspection-name>

Если данный port  map присутствует в разных inspection правилах, указанные выше строки показываются для каждого inspection правила.

 

Пример. На следующую последовательность команд:

ip port-map user-port-map-1 port tcp 2100

ip inspect name inspect-1 user-port-map-1 

ip inspect name inspect-1 tcp 

ip inspect name inspect-2 user-port-map-1

no no ip port-map user-port-map-1

будет выдано:

Removed user-port-map-1 from inspect rule inspect-1

Removed user-port-map-1 from inspect rule inspect-2

Removed  inspect  rule  inspect-2

 

Отличие данной команды от подобной команды Cisco  IOS:

Не используется протокол транспортного уровня UDP.

Системные протоколы и пользовательские обрабатываются одинаково.

Для протокола ftp формируется inspection процедура ftp<>, для всех остальных протоколов – процедура tcp<>, а у Cisco – специфические процедуры для SMTP, HTTP и т.п.