Cisco ISR и FXS порты

В жизни каждого мужчины наступает такой период, когда к нему приходит специалист из смежного отдела, и просит факс. А телефония у нас вся IP. Ну да не страшно. Всё что нам надо, это убедиться, что на нашем маршрутизаторе есть свободный wic порт.

Покупаем модуль с FXS портами, совместимый с маршрутизатором. Модуль можно подключать только к обесточенному маршрутизатору. И так, мы имеем маршрутизатор, который смотрит в «мир», например, Е1-потоком, а внутри у него аналоговые FXS порты. Я начал разговор историей про факс, но аналоговый порт, который без проблем обеспечивает факсимильную связь, с там же успехом обслуживает и обычные аналоговые телефонные аппараты.

Схема:

Для начала настроим порт, в который приходит Е1 поток. Настраиваем синхронизацию цифрового порта Е1:

 

ISR(config)# network-clock-participate wic 0
ISR(config)# network-clock-select 1 E1 0/0/0

Настраиваем тип коммутатора, который формирует Е1 поток (в моём случае — это primary-net5):

ISR(config)# isdn switch-type primary-net5

Настраиваем место контроллера (в моём случае это 0/0/0), и разрешённые к использованию каналы (в данном случае с 1 по 31):

ISR(config)# controller E1 0/0/0
ISR(config-controller)# pri-group timeslots 1-31

Настраиваем последовательный интерфейс. По порядку: 1 — это не IP интерфейс; 2 — выбираем необходимый для E1 канальный протокол; 3 — определяем тип сигнализации; 4 — включаем входящие соединения; 5 — настраиваем принцип заполнения потока (в данном случае от 1го канала к 31му); 6 — отключаем протокол CDP, что бы не светить своим устройством незнакомому дядьке. Листинг:

ISR(config)# interface Serial0/0/0:15
ISR(config-if)# no ip address
ISR(config-if)# encapsulation hdlc
ISR(config-if)# isdn switch-type primary-net5
ISR(config-if)# isdn incoming-voice voice
ISR(config-if)# isdn bchan-number-order ascending
ISR(config-if)# no cdp enable

Настраиваем голосовой порт (имеет такой же номер, как и у последовательного порта, на котором он сидит), к слову, к нему мы ещё вернёмся. 1 — настраиваем региональный параметр зуммера (Россия); 2 — настраиваем возможность выбора опций звонка (Speech даёт широкий набор со всякими там эхоподавлениями и т.д.):

ISR(config)# voice-port 0/0/0:15
ISR(config-voiceport)# cptone RU
ISR(config-voiceport)# bearer-cap Speech

Настраиваем маршрутизацию исходящего вызова. 1 — все вызовы начинающиеся на 9, в не зависимости от длинны набираемого номера… 2 — …перенаправляются на голосовой порт 0/0/0:15. Листинг:

ISR(config)# dial-peer voice 9 pots
ISR(config-dial-peer)# destination-pattern 9T
ISR(config-dial-peer)# port 0/0/0:15

ОК. Поехали дальше. С выходом во внешний мир мы разобрались. Теперь настроем внутреннюю аналоговую линию.

Для начала включим на маршрутизаторе функцию зуммера, без неё могу возникнуть странности, например, при звонке на наш телефон, звонящий не будет слышать обратный гудок.

ISR(config)# voice call send-alert

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

ISR(config)# voice service voip
ISR(conf-voi-serv)# fax protocol t38 version 0 ls-redundancy 5 hs-redundancy 2 fallback pass-through g711ulaw
ISR(conf-voi-serv)# modem passthrough nse codec g711ulaw

Выясняем номера наших голосовых портов:

ISR# sh voice port summary | i fxs

Вывод будет аналогичный:

0/1/0 — fxs-ls up dorm on-hook idle y
0/1/1 — fxs-ls up dorm on-hook idle y

Настраиваем порты:

ISR(config)# voice-port 0/1/0
ISR(config-voiceport)# cptone RU
ISR(config-voiceport)# bearer-cap Speech
ISR(config-voiceport)# station-id number 9097
ISR(config-voiceport)# caller-id enable
ISR(config-voiceport)# voice-port 0/1/1
ISR(config-voiceport)# cptone RU
ISR(config-voiceport)# bearer-cap Speech
ISR(config-voiceport)# station-id number 9096
ISR(config-voiceport)# caller-id enable

Из новых команд тут station-id number — это номер, который линия передаёт как исходящий; caller-id enable — включает передачу исходящего номера на пору.

Настроим правила звонков на эти порты:

ISR(config)# dial-peer voice 9097 pots
ISR(config-dial-peer)# tone ringback alert-no-PI
ISR(config-dial-peer)# destination-pattern 2219097
ISR(config-dial-peer)# fax rate voice
ISR(config-dial-peer)# direct-inward-dial
ISR(config-dial-peer)# port 0/1/0
ISR(config-dial-peer)# forward-digits all
ISR(config-dial-peer)# dial-peer voice 9096 pots
ISR(config-dial-peer)# tone ringback alert-no-PI
ISR(config-dial-peer)# destination-pattern 2219096
ISR(config-dial-peer)# direct-inward-dial
ISR(config-dial-peer)# port 0/1/1
ISR(config-dial-peer)# forward-digits all

Разберём новые команды: tone ringback alert-no-PI — команда, указывающая шлюзу, что гудки должен генерировать он, а не выше/ниже стоящая АТС; fax rate voice — параметр, указывающий, что факсимильная связь будет работать на максимальной скорости (тут тоже может потребоваться тюнинг, некоторые факс машины работают гораздо стабильнее на более низкой скорости); direct-inward-dial — параметр указывающий, что звонок из мира может быть смаршрутизирован на прямую на этот номер, минуя авто секретаря; forward-digits all — указывает на то, что в качестве набранного номера будут использованы все цифры набранные абонентом.

Немного вернёмся назад. Когда мы конфигурировали звонки на внешнюю линию, мы выбрали номер dial peer’а 9, здесь мы выбрали 2219097 и 2219096. Эти цифры являются лишь порядковым номером проверки параметра destination-pattern. Разберём на примере: допустим у нас есть 3 dial peer идущие по порядку, в каждом есть destination-pattern 1T, 209, 2093, соответственно. После того как мы набрали номер, идёт его сравнение с существующими destination-pattern, в данном случае это 1 + любое количество любых цифр, 209 и 2093. Рассмотрим варианты срабатывания каждого:

  1. Набираем 123456 — нас направят на первый dial peer
  2. Набираем 12 — нас направят на первый dial peer
  3. Набираем 12345623 — нас направят на первый dial peer
  4. Набираем 209 — нас направят на второй dial peer, потому что единственный существенный критерий первого, это 1 в начале номера
  5. Набираем 2093 — нас направят на второй dial peer, потому что данный номер полностью соответствует первыми цифрами, а сравнение происходит после каждой набранной цифры. Выходит, что в данной конфигурации, мы никогда не доберёмся до номера 2093.

Так же я специально не стал делать идентичными caller-id и destination-pattern. Так проще показать, то что в телефонии нет чёткой привязки номер к телефону — есть номер, который передаётся как исходящий и есть destination-pattern, который указывает куда и по каким критериям направлять звонок.

Всё практически настроено, кроме одного. В моём регионе оператор связи присылает caller-id в виде 10-ти значного номера, и ожидает от меня того-же. Выглядит он так: 423XXXXXXX. 423 — это код города, а дальше идёт 7-ми значный номер. Допустим, у меня куплены два городских номера 4232219097 и 4232219096. Внутренние линии передают номера 9096 и 9097. Нам необходимо изменять все входящие звонки так, что бы городской номер соответствовал.

ISR(config)# voice translation-rule 1
ISR(cfg-translation-rule)# rule 10 /^423221909\([67]\)$/ /221909\1/

Все изменения проходят согласно псевдорегулярному выражению. Синтаксис, довольно гибок и прочитать про него можно в хорошей статье на сайте Cisco.

Создадим профиль подмены:

ISR(config)# voice translation-profile FR-PSTN
ISR(cfg-translation-profile)# translate called 1

По порядку: Изменить, Вызываемый, По первому voice translation правилу.

И применяем этот профиль для входящих звонков на наш внешний голосовой интерфейс:

ISR(config)# voice-port 0/0/0:15
ISR(config-voiceport)# translation-profile incoming FR-PSTN

УРА! Теперь нам могут позвонить и мы даже будем разговаривать, ну или принимать факсы. Осталось доделать звонки на город и всё.

Сейчас при попытке звонка, оператор возвратит вам заглушку, информирую о том, что звонки с данного номер не разрешены. Caller-id передаваемые голосовыми портами сейчас 9096 и 9097. Это немного не то, что ожидает видеть оператор. У нас два варианта поменять station-id number для каждого голосового порта (благо их не так много), на тот, что ожидает видеть оператор, либо опять воспользоваться правило подмены. Второе предпочтительнее, поскольку в перспективе, когда номеров будут десятки, сотни, тысячи, позволяет значительно упростить обслуживание маршрутизатора.

ISR(config)# voice translation-rule 2
ISR(cfg-translation-rule)# rule 10 /^909\([6-7]\)$/ /423221909\1/ type unknown national
ISR(cfg-translation-rule)# exit
ISR(config)# voice translation-profile TO_PSTN
ISR(cfg-translation-profile)# translate calling 2
ISR(cfg-translation-profile)# exit
ISR(config)# voice-port 0/0/0:15
ISR(config-voiceport)# translation-profile outgoing TO_PSTN

Выделены две новые команды. Первая указывает, что изменяется вызывающий номер, а вторая, что профиль применяется на исходящие звонки.

ISR# wr

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *