Команда ip port-map используется для ассоциации протоколов (сервисов) прикладного уровня с номерами TCP-портов (PAM - Port to Application Mapping)
и позволяет перенаправлять трафик стандартных (системных) протоколов, а также сервисов, заданных пользователем, на любой TCP-порт.
Команда с префиксом no устанавливает значение по умолчанию.
Синтаксис ip port-map appl-name port [tcp] port-num*| from begin-port-num to end-port-num [list acl-num] [description description-string] no ip port-map appl-name port [tcp] port-num*| from begin-port-num to end-port-num [list acl-num] |
|
appl-name |
название протокола прикладного уровня (сервиса). Могут задаваться стандартные (системные) сервисы и пользовательские, определенные пользователем. Системные сервисы ассоциируются с общеизвестным номером порта и представлены в Таблица 16. Пользовательский сервис задается именем, который должен начинаться с префикса “user-“ и по длине не должен превышать 19 символов |
tcp |
наличие или отсутствие этого ключевого слова не играет существенной роли. |
port-num |
номер TCP-порта. • При наличии в команде слова tcp можно задать перечисление до пяти портов или диапазон портов. • При отсутствии слова tcp - разрешается задать только один порт. |
begin-port-num |
начальный порт диапазона портов, должен быть меньше конечного порта. |
end-port-num |
конечный порт диапазона портов. |
acl-num |
ссылка на имя стандартного нумерованного списка доступа, который ограничивает данный сервис для определенных хостов и подсетей. Если список доступа отсутствует в конфигурации, то данная команда игнорируется при конвертировании конфигурации. |
description-string |
строка с произвольным описанием. |
Значение по умолчанию |
отсутствует |
Режимы команды |
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 и т.п. |
Системно-заданные соответствия
Таблица 16
Имя протокола, сервиса |
Номер порта |
Описание |
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 |