Такие устройства, как VoIP GSM шлюзы пользуются растущей популярностью среди российских компаний и предпринимателей. Сфера их применения достаточно широка – начиная с экономии средств компании на звонках по мобильным номерам, заканчивая различными SMS-рассылками. Потребности многих компаний не ограничиваются одним, даже самым мощным, шлюзом. При использовании же нескольких подобных устройств, особенно распределенных территориально, трудозатраты по их поддержке и администрированию возрастают значительно. Устройства под названием SIM-банки позволяют не только упростить работу с несколькими VoIP GSM шлюзами, но и добавить последним множество интересных возможностей. Сегодня, на примере SIM-банков SMB32 и SMB128 мы познакомимся и научимся работать с данным классом устройств.
![](https://habrastorage.org/r/w780q1/files/a10/9b6/8ae/a109b68ae66d4d94b4a16065d1243ffb.jpg)
SIM банк — это устройство агрегации SIM карт в одном месте. Проще говоря, это устройство, в которое физически подключаются SIM карты, а связь SIM карты с GSM шлюзом осуществляется через IP сеть. Это значит, что GSM-шлюзы могут быть установлены где угодно – даже в разных городах и странах, в то время как сами SIM-карты будут всегда у вас под рукой. При этом, для оператора связи точкой регистрации SIM карты будет расположение того шлюза, с которым она сейчас работает, а не действительное её месторасположение.
Агрегация множества SIM-карт в одном устройстве – это основная функция SIM-банка. Но также он может выполнять и другие функции, например:
Благодаря SIM банку можно в любой момент поменять местами SIM карты в шлюзах, расположенных в разных частях города или запрограммировать сценарий, по которому SIM-карты будут автоматически привязываться к другому GSM шлюзу и, тем самым, создать иллюзию передвижения SIM карты для оператора связи.
Пожалуй, самыми популярными на сегодняшний день устройствами класса SIM-банк являются те, что выпускаются под названием GoIP. Есть модель SMB32 на 32 SIM-карты, а есть модель SMB128, соответственно, на 128 SIM-карт. У нас под рукой оказалась старшая модель и пара четырехканальных VoIP GSM шлюзов GoIP 4. Описанные в статье настройки будут также применимы и к младшей модели SMB32 и к другим моделям VoIP GSM шлюзов GoIP (на один канал, на восемь, на шестнадцать).
![](https://habrastorage.org/r/w780q1/files/d2f/5d6/6b7/d2f5d66b7b0343ceb95013e49953f4e6.jpg)
Слева — SIM-банк SMB32, справа — SIM-банк SMB128
А вот на что следует обратить внимание, так это на производителя устройств. По славной китайской традиции VoIP GSM шлюзы под названием GoIP выпускают как минимум две компании — Hybertone и DBL. Несмотря на то, что на аппаратном уровне эти устройства идентичны, они могут иметь различия в ПО. Все описанное в этой статье применимо к GSM шлюзам и SIP-банкам производства компании DBL. Гарантировать применимость данных настроек к устройствам Hybertone, я, к сожалению, не могу.
Для полноты картины стоит отметить, что также SIM-банки выпускает и другой производитель VoIP GSM шлюзов – компания Dinstar. У них есть модели на 64 и 128 SIM-карт, однако поработать с ними пока, к сожалению, не доводилось.
SIM-банки GoIP могут работать в двух режимах: выступать в качестве сервера для GSM-шлюзов или работать совместно с бесплатным ПО SMB Scheduler Server. Первый вариант более простой, но имеет некоторые ограничения. Он подходит для тех компаний, которые используют один SIM-банк и не планируют передавать SIM-карты в нем между различными шлюзами. Работа с SMB Scheduler Server лишена этих ограничений – по заявлению разработчиков, поддерживается до 10000 SIM-карт, а также возможности их распределения как между каналами одного шлюза, так и между самими шлюзами.
Мы рассмотрим оба этих варианта работы – от простого к сложному. Но сначала необходимо зарегистрировать наши GSM-шлюзы на IP-АТС, в нашем случае это будет – Asterisk. Те, кто хорошо знаком и с VoIP GSM-шлюзами GoIP, и с Asterisk, могут просто пропустить следующий раздел.
Вначале совсем немного теории. GSM-шлюзы GoIP могут регистрироваться на SIP-сервере четырьмя различными способами:
Для базовой настройки связки GoIP – Asterisk мы будем использовать четвертый вариант, но в режиме с регистрацией. Все входящие на SIM-карты вызовы мы будем отправлять на некоторый внутренний номер на АТС. Исходящие вызовы будем маршрутизировать на основе префиксов: в зависимости от того, через какую SIM-карту требуется направить вызов, Asterisk будет подставлять в вызываемый номер определенный префикс. Шлюз будет анализировать префикс, после чего отбросит его и направит вызов через нужную SIM-карту (канал).
В Астериске создаем SIP пир для нашего шлюза с параметром Line ID – 70064 (это последние пять цифр серийного номера шлюза, для удобства):
Как я уже говорил, GSM шлюз в нашем примере будет распределять исходящие вызовы по своим линиям, основываясь на префиксе номера. Но для этого нам надо, чтобы Asterisk добавлял эти префиксы к номерам, руководствуясь какой-то логикой. В нашем случае особой логики не будет – Asterisk будет по очереди добавлять префиксы 011, 012, 013 и 014 (которые соответствуют 1-4 линиям шлюза) пока не найдет свободную линию и вызов не пройдет. Играясь с маской номера, можно построить более гибкую логику выбора исходящей линии, основанную, к примеру, на том, какому оператору связи принадлежит вызываемый номер.
Теперь в web-интерфейсе GoIP переходим в раздел Configurations — Basic VoIP. Для опции Config Mode выбираем вариант Trunk Gateway Mode — ниже отобразятся соответствующие настройки для этого режима. В опции SIP Trunk Gateway1 указываем IP адрес нашего SIP сервера или его доменное имя. В опции Phone Number указывается имя пира, созданного на стороне SIP сервера, в нашем случае — это goip70064. Re-register Period(s) — указывается интервал времени в секундах для повторной регистрации на SIP сервере; мы указали 60 секунд, если указать 0 — то регистрация осуществляться не будет. Далее идёт опция Authentication ID, где указывается имя для аутентификации шлюза на SIP сервере и часто совпадает с именем SIP пира, в нашем случае — это опять же goip70064. Затем указывается пароль в опции Password, мы указали — pass70064. В последней опции, Routing Prefix — указывается префикс, по которому будут распределяться исходящие вызовы между GSM линиями. В файле extensions.conf в Asterisk мы использовали префиксы 011 – 014, поэтому именно их и следует указать здесь:
![](https://habrastorage.org/r/w780q1/files/5d2/f45/620/5d2f45620dad4f26ab6204168fcbd1d5.jpg)
После основных настроек подключения, добавим настройки входящей и исходящей маршрутизации. Настройка входящей маршрутизации доступна в разделе Configuration — Call In. Здесь достаточно указать для каждой линии в опции Forwarding to VoIP Number — номер, который будет вызываться на IP-АТС. В нашем случае я указал просто 5555 для всех линий. Для того, чтобы просто проверить, что вызовы действительно приходят с наших GSM линий на SIP сервер, этого будет вполне достаточно.
![](https://habrastorage.org/r/w780q1/files/54f/a3b/48a/54fa3b48a3364095a11ea68056d5409a.jpg)
Настройка исходящей маршрутизации осуществляется в разделе Configuration — Call out. Для каждой линии настраивается параметр Dial Plan, в котором нужно прописать правило, которое будет удалять префикс (тот самый префикс, который мы задали в разделе Configurations — Basic VoIP) в начале вызываемого номера:
![](https://habrastorage.org/r/w780q1/files/0ea/6b1/865/0ea6b18658fe41b4b4a9ab2d92ad62f5.jpg)
Для нашего примера данных настроек будет вполне достаточно: мы сможем совершать звонки через линии шлюза GoIP, добавляя к вызываемым номерам соответствующий префикс, а так же принимать звонки с любой GSM линии, направляя их всех на внутренний номер 5555, заведенный на Asterisk. Аналогичные настройки мы произвели и для второго шлюза GoIP, который также будет работать с нашим SIM-банком.
Теперь подключим наши GSM-шлюзы GoIP 4 к SIM-банку SMB128, работающему в режиме сервера. Для этого необходимо перевести SIM-банк в режим работы сервера и добавить учетные записи для каждого GoIP шлюза. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Settings и в опции Operation Mode выбираем вариант Use Buil-in SIM Server. В разделе GoIP Clients, добавляем необходимое количество учетных записей для каждого шлюза GoIP. Потребуется заполнить следующие поля:
В нашем примере получились такие настройки (другие опции остались в значении по умолчанию):
![](https://habrastorage.org/r/w780q1/files/499/5fb/9a1/4995fb9a14504166849e8acdc5786f26.jpg)
Далее, подключаем шлюзы GoIP к SIM банку. В Web-интерфейсе шлюза GoIP переходим в раздел Configurations — Preferences. Переводим опцию Remote Server в состояние Enable, после чего появятся дополнительные опции. Remote SIM переключаем в состояние Enable — тем самым, указывая шлюзу использовать режим работы с удаленным SIM сервером. В опции Server указываем IP адрес SIM-банка или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый Login ID, который мы использовали при заведении учетной записи в SIM банке. В опции Password указываем соответствующий пароль.
![](https://habrastorage.org/r/w780q1/files/b87/0c8/483/b870c8483bd94dbdb170465518fcf1a0.jpg)
Как уже было сказано, режим работы SIM-банка в качестве сервера имеет некоторые ограничения. Самое главное из них заключается в том, что каждому каналу каждого GSM-шлюза выделяется собственный диапазон SIM-карт, который не может использоваться другими каналами. То есть, весь диапазон SIM-карт разбивается на несколько непересекающихся множеств, каждое из которых назначается определенному GSM-каналу.
Выглядит это следующим образом: в разделе Configurations — SIM Bank Settings Web-интерфейса SIM-банка есть опция # of SIM slots reserved per line, в которой указывается количество SIM-карт, которое может быть использовано каждым из каналов. В нашем примере у нас есть два четырехпортовых шлюза GoIP4, итого – 8 каналов. Если в этой опции мы укажем, например, значение «3», то первому каналу первого шлюза будут доступны SIM-карты №1, №2 и №3, второму каналу первого шлюза — №4, №5 и №6, а первому каналу второго шлюза — №13, №14 и №15.
![](https://habrastorage.org/r/w780q1/files/3af/24d/cd2/3af24dcd2aec468080b8eccf70ffb261.jpg)
После того, как мы выделили каждому каналу его множество SIM-карт, требуется дать ответы на два вопроса: во-первых, какое событие должно произойти, чтобы SIM-банк заменил для GSM-канала текущую SIM-карту на другую, из назначенного каналу множества. Во-вторых, на какую именно SIM-карту при наступлении этого события следует произвести замену? Ответ на первый вопрос мы дадим в следующем разделе, а вот на второй вопрос отвечает опция SIM Schedule Mode. Доступны следующие методы выбора рабочей SIM-карты:
Теперь самое время настроить события, наступление которых влечет за собой переключение на другую SIM-карту или выполнение SIM-банков еще каких либо действий. Для этого в разделе Configurations есть два подраздела:
![](https://habrastorage.org/r/w780q1/files/896/f4a/9a7/896f4a9a7e2a46269fe20079503485ab.jpg)
![](https://habrastorage.org/r/w780q1/files/bb5/ab6/921/bb5ab69214a24f7ab9746fbbf38fb0a3.jpg)
На наступление каждого из событий можно назначить следующие действия:
В принципе, это все основные настройки при работе SIM-банка в режиме сервера. Единственное, на что еще следует обратить внимание – это на правильную установку и удаление SIM-карт. Для того чтобы делать это безопасно, требуется предварительно отключить питание необходимого слота. Именно для этого и предназначены клавиши на корпусе SIM-банка, однако намного проще делать это с помощью Web-интерфейса. Заходим в раздел Install / Remove SIM Cards и кликаем по заголовку нужных слотов. Серый цвет означает, что питание на слот подается, красный цвет – нет. Нажимаем Submit для подтверждения действия, устанавливаем или удаляем SIM-карту, включаем питание слота и снова подтверждаем действие клавишей Submit.
Для мониторинга установленный в SIM-банке SIM-карт предназначен раздел SIM Slot Status. Данные в этом разделе представлены в виде таблицы, где каждая ячейка соответствует одной SIM-карте и содержит следующую информацию:
Также, при наведении курсора мыши на ячейку, появится всплывающая подсказка с расширенными параметрами состояния и статистикой для данной SIM-карты.
![](https://habrastorage.org/r/w780q1/files/43f/e29/d92/43fe29d92f3c406691833d90efc4eca8.jpg)
Работа SIM-банка в качестве клиента возможна при использовании бесплатного ПО Scheduler Server. Scheduler Server — это программный сервер, который позволяет управлять сразу несколькими шлюзами GoIP и SIM банками SMB. На момент написания статьи актуальная релизная версия ПО 1.7.2 и доступна для скачивания по ссылке.
При использовании Scheduler Server становятся доступны следующие возможности:
Забегая вперед, отмечу, что у Scheduler Server есть и свои ограничения по сравнению с использованием SIM-банка в качестве сервера. В первую очередь это касается того, что переключение между SIM-картами возможно только по времени, в по событиям – нет.
Требования к системе:
Требования к сети:
После разархивирования полученного пакета, нужно запустить скрипт smb_scheduler_install.sh, который задаст несколько уточняющих вопросов и всё установит, включая БД. Далее, вся настройка производится в веб интерфейсе.
Главная роль сервера — связать SIM-карту в SIM-банке с линией GoIP шлюза. Работает это следующим образом:
Есть два способа распределения SIM карт: в фиксированном режиме и в режиме группового назначения. Фиксированный режим — это установление связи GSM-линия — SIM слот вручную, данная связь не изменится, пока пользователь сам не внесет какие либо изменения. Режим группового назначения — это динамический режим создания связей GSM-линия — SIM слот.
В отличии от режима работы SIM-банка в качестве сервера, где каждая группа SIM-карт может быть привязана только к определенному GSM-каналу, использование Scheduler Server дает намного больше возможностей по распределению SIM-карт. Работает это следующим образом: создаются группы, к которым можно привязать как любые слоты в SIM-банке, так и любые GSM-линии любого GSM-шлюза. Соответственно, распределение SIM-карт по GSM-линиям осуществляется внутри этих групп.
Однако есть еще одна особенность – каждый GSM-шлюз (именно шлюз, не линия) привязывается к зоне. Зоны создаются самим пользователем и по задумке разработчиков должны характеризовать реальное территориальное расположение шлюза. Нужно для реализации функции эмуляции передвижения SIM-карты: Scheduler Server настроен по умолчанию таким образом, чтобы постоянно переключать SIM-карты между шлюзами из различных зон.
В каких случаях происходит переключение SIM-карты? Увы, в случае с Scheduler Server работают только временные условия. Для каждой группы могут быть заданы следующие временные правила распределения SIM-карт:
Последний вопрос, на который стоит ответить – это как происходит выбор следующей для назначения SIM-карты. Алгоритм работы тут довольно простой:
Для начала с помощью Web-интерфейса Scheduler Server требуется завести учетные записи для всех GSM-шлюзов и SIM-банков, которые будут к нему подключены. Учетные записи для GSM-шлюзов заводятся в разделе GoIP. Нажимаем Add и заполняем следующие поля:
![](https://habrastorage.org/r/w780q1/files/abe/f7c/4e6/abef7c4e67c94ab48269599ed53c3804.jpg)
Учетные записи для SIM-банков создаются, соответственно, в разделе SIM-Bank. Для добавления нового устройства, требуется заполнить следующие поля:
![](https://habrastorage.org/r/w780q1/files/a03/ee3/ccf/a03ee3ccf6b74c948b01afa7b3f1aaee.jpg)
Переходим к Web-интерфейсам наших устройств. Начнем с GSM-шлюза GoIP. В разделе Configurations — Preferences переводим опции Remote Server и Remote SIM в состояние Enable. В опции Server указываем IP адрес Scheduler Server или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый GoIP ID, который мы использовали при заведении учетной записи в Scheduler Server, в поле Password указываем соответствующий пароль. Переключатель Net protocol переводим в состояние UDP.
![](https://habrastorage.org/r/w780q1/files/1d9/fdc/58c/1d9fdc58cd7649d0ad305e87ae95a56c.jpg)
Теперь зарегистрируем на Scheduler Server наш SIM-банк. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Setting и в опции Operation Mode выбираем Use External SIM Server, а в опции SIM Data Communications with выбираем SIM Server. Все остальные настройки аналогичны настройкам GSM-шлюза.
![](https://habrastorage.org/r/w780q1/files/aa5/222/fc6/aa5222fc67984c0d816a8b111aa7813a.jpg)
Проще всего осуществлять настройку группового назначения SIM-карт в разделе Web-интерфейса Configuration – Group. После того, как необходимое количество групп создано, к ним можно привязывать слоты SIM-банка – для этого необходимо кликнуть по ссылке SIM справа от названия группы. Для того чтобы управлять привязанными к группе GSM-каналами есть ссылка GoIP, а для управления расписанием – Scheduler.
![](https://habrastorage.org/r/w780q1/files/f85/7d5/080/f857d508044147dfbaad9d67fc5e014a.jpg)
Если требуется одну или несколько SIM-карт «намертво» привязать к определенной GSM-линии определенного GSM-шлюза, то проще всего это сделать в разделе Monitor — GoIP Channel.
![](https://habrastorage.org/r/w780q1/files/079/097/835/0790978352204aa1bf241d127ed39412.jpg)
На этом мы заканчиваем наше краткое знакомство с основными функциями SIM-банков GoIP SMB и ПО Scheduler Server. Обладая этими базовыми знаниями, разобраться со всеми дополнительными возможностями будет уже значительно проще, чем делая это «с нуля». Для тех, кто хочет изучить вопрос еще глубже и/или получить больше функционала, я бы советовал обратить внимание на интерфейс GoAntiFraud. Это ПО сторонней компании, разработанное специально для управления и мониторинга устройствами GoIP и SMB. Распространяется оно по подписке и стоит, в общем-то, довольно прилично. Однако, имеется 7-дневный пробный период, который позволяет ознакомиться со всеми возможностями и принять решение о покупке.
![](https://habrastorage.org/files/a10/9b6/8ae/a109b68ae66d4d94b4a16065d1243ffb.jpg)
Что такое SIM-банк
SIM банк — это устройство агрегации SIM карт в одном месте. Проще говоря, это устройство, в которое физически подключаются SIM карты, а связь SIM карты с GSM шлюзом осуществляется через IP сеть. Это значит, что GSM-шлюзы могут быть установлены где угодно – даже в разных городах и странах, в то время как сами SIM-карты будут всегда у вас под рукой. При этом, для оператора связи точкой регистрации SIM карты будет расположение того шлюза, с которым она сейчас работает, а не действительное её месторасположение.
Агрегация множества SIM-карт в одном устройстве – это основная функция SIM-банка. Но также он может выполнять и другие функции, например:
- централизованное управление SIM картами;
- горячая замена / установка SIM карт;
- автоматическое распределение SIM карт между GSM шлюзами по временным правилам;
- автоматическая замена SIM карт на GSM шлюзах при наступлении определенных событий или по временным критериям.
Благодаря SIM банку можно в любой момент поменять местами SIM карты в шлюзах, расположенных в разных частях города или запрограммировать сценарий, по которому SIM-карты будут автоматически привязываться к другому GSM шлюзу и, тем самым, создать иллюзию передвижения SIM карты для оператора связи.
Какими SIM-банки бывают
Пожалуй, самыми популярными на сегодняшний день устройствами класса SIM-банк являются те, что выпускаются под названием GoIP. Есть модель SMB32 на 32 SIM-карты, а есть модель SMB128, соответственно, на 128 SIM-карт. У нас под рукой оказалась старшая модель и пара четырехканальных VoIP GSM шлюзов GoIP 4. Описанные в статье настройки будут также применимы и к младшей модели SMB32 и к другим моделям VoIP GSM шлюзов GoIP (на один канал, на восемь, на шестнадцать).
![](https://habrastorage.org/files/bbc/6e8/0d7/bbc6e80d7f9041ac8609fee95c7255dc.jpg)
![](https://habrastorage.org/files/d2f/5d6/6b7/d2f5d66b7b0343ceb95013e49953f4e6.jpg)
Слева — SIM-банк SMB32, справа — SIM-банк SMB128
А вот на что следует обратить внимание, так это на производителя устройств. По славной китайской традиции VoIP GSM шлюзы под названием GoIP выпускают как минимум две компании — Hybertone и DBL. Несмотря на то, что на аппаратном уровне эти устройства идентичны, они могут иметь различия в ПО. Все описанное в этой статье применимо к GSM шлюзам и SIP-банкам производства компании DBL. Гарантировать применимость данных настроек к устройствам Hybertone, я, к сожалению, не могу.
Для полноты картины стоит отметить, что также SIM-банки выпускает и другой производитель VoIP GSM шлюзов – компания Dinstar. У них есть модели на 64 и 128 SIM-карт, однако поработать с ними пока, к сожалению, не доводилось.
Режимы работы SIM-банка
SIM-банки GoIP могут работать в двух режимах: выступать в качестве сервера для GSM-шлюзов или работать совместно с бесплатным ПО SMB Scheduler Server. Первый вариант более простой, но имеет некоторые ограничения. Он подходит для тех компаний, которые используют один SIM-банк и не планируют передавать SIM-карты в нем между различными шлюзами. Работа с SMB Scheduler Server лишена этих ограничений – по заявлению разработчиков, поддерживается до 10000 SIM-карт, а также возможности их распределения как между каналами одного шлюза, так и между самими шлюзами.
Мы рассмотрим оба этих варианта работы – от простого к сложному. Но сначала необходимо зарегистрировать наши GSM-шлюзы на IP-АТС, в нашем случае это будет – Asterisk. Те, кто хорошо знаком и с VoIP GSM-шлюзами GoIP, и с Asterisk, могут просто пропустить следующий раздел.
Подключение шлюза GoIP к SIP серверу Астериск
Вначале совсем немного теории. GSM-шлюзы GoIP могут регистрироваться на SIP-сервере четырьмя различными способами:
- Single Server Mode — в этом режиме шлюз GoIP регистрируется на удаленном SIP сервере с помощью всего одной учетной записи. Все входящие и исходящие вызовы для всех линий на шлюзе будут проходить через одно SIP соединение. Маршрутизация при этом осуществляется за счет подстановки префикса к вызываемому номеру в соответствии с используемой GSM линией на шлюзе.
- Config By Line — в данном режиме для каждой GSM линии на шлюзе производятся свои независимые настройки. Соответственно, для каждой линии на SIP сервере заводится отдельная учетная запись. В таком режиме каждую линию на GSM шлюзе можно зарегистрировать на своем SIP-сервере.
- Config By Group — это режим есть объединение Single Server Mode и Config By Line — все линии на шлюзе объединяются в группы, а для каждой группы назначаются свои SIP настройки. Соответственно, линии объединенные в одну группу, используют SIP соединение соответствующее этой группе.
- Trunk Gateway Mode — главная особенность этого режима — возможность подключение к SIP серверу без регистрации. Маршрутизация вызовов, как и в первом режиме, осуществляется на базе префиксов, которые устанавливаются для каждой линии.
Для базовой настройки связки GoIP – Asterisk мы будем использовать четвертый вариант, но в режиме с регистрацией. Все входящие на SIM-карты вызовы мы будем отправлять на некоторый внутренний номер на АТС. Исходящие вызовы будем маршрутизировать на основе префиксов: в зависимости от того, через какую SIM-карту требуется направить вызов, Asterisk будет подставлять в вызываемый номер определенный префикс. Шлюз будет анализировать префикс, после чего отбросит его и направит вызов через нужную SIM-карту (канал).
В Астериске создаем SIP пир для нашего шлюза с параметром Line ID – 70064 (это последние пять цифр серийного номера шлюза, для удобства):
[goip70064]
type=friend
host=dynamic
defaultuser=goip70064
secret=pass70064
qualify=yes
dtmfmode=rfc2833
context=from-trunk-sip-goip70064
Файл /etc/asterisk/sip.confКак я уже говорил, GSM шлюз в нашем примере будет распределять исходящие вызовы по своим линиям, основываясь на префиксе номера. Но для этого нам надо, чтобы Asterisk добавлял эти префиксы к номерам, руководствуясь какой-то логикой. В нашем случае особой логики не будет – Asterisk будет по очереди добавлять префиксы 011, 012, 013 и 014 (которые соответствуют 1-4 линиям шлюза) пока не найдет свободную линию и вызов не пройдет. Играясь с маской номера, можно построить более гибкую логику выбора исходящей линии, основанную, к примеру, на том, какому оператору связи принадлежит вызываемый номер.
[from-phones]
exten => _8XXXXXXXXXX,1,Dial(SIP/goip70064/011${EXTEN}) ; Звонок через первую GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/012${EXTEN}) ; Звонок через вторую GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/013${EXTEN}) ; Звонок через третью GSM линию
exten => _8XXXXXXXXXX,n,Dial(SIP/goip70064/014${EXTEN}) ; Звонок через четвертую GSM линию
exten => _8XXXXXXXXXX,n,Hangup()
Файл /etc/asterisk/sip.confТеперь в web-интерфейсе GoIP переходим в раздел Configurations — Basic VoIP. Для опции Config Mode выбираем вариант Trunk Gateway Mode — ниже отобразятся соответствующие настройки для этого режима. В опции SIP Trunk Gateway1 указываем IP адрес нашего SIP сервера или его доменное имя. В опции Phone Number указывается имя пира, созданного на стороне SIP сервера, в нашем случае — это goip70064. Re-register Period(s) — указывается интервал времени в секундах для повторной регистрации на SIP сервере; мы указали 60 секунд, если указать 0 — то регистрация осуществляться не будет. Далее идёт опция Authentication ID, где указывается имя для аутентификации шлюза на SIP сервере и часто совпадает с именем SIP пира, в нашем случае — это опять же goip70064. Затем указывается пароль в опции Password, мы указали — pass70064. В последней опции, Routing Prefix — указывается префикс, по которому будут распределяться исходящие вызовы между GSM линиями. В файле extensions.conf в Asterisk мы использовали префиксы 011 – 014, поэтому именно их и следует указать здесь:
- Line1: 011
- Line2: 012
- Line3: 013
- Line4: 014
![](https://habrastorage.org/files/5d2/f45/620/5d2f45620dad4f26ab6204168fcbd1d5.jpg)
После основных настроек подключения, добавим настройки входящей и исходящей маршрутизации. Настройка входящей маршрутизации доступна в разделе Configuration — Call In. Здесь достаточно указать для каждой линии в опции Forwarding to VoIP Number — номер, который будет вызываться на IP-АТС. В нашем случае я указал просто 5555 для всех линий. Для того, чтобы просто проверить, что вызовы действительно приходят с наших GSM линий на SIP сервер, этого будет вполне достаточно.
![](https://habrastorage.org/files/54f/a3b/48a/54fa3b48a3364095a11ea68056d5409a.jpg)
Настройка исходящей маршрутизации осуществляется в разделе Configuration — Call out. Для каждой линии настраивается параметр Dial Plan, в котором нужно прописать правило, которое будет удалять префикс (тот самый префикс, который мы задали в разделе Configurations — Basic VoIP) в начале вызываемого номера:
- для CH1: 011:-011|
- для CH2: 012:-012|
- для CH3: 013:-013|
- для CH4: 014:-014|
![](https://habrastorage.org/files/0ea/6b1/865/0ea6b18658fe41b4b4a9ab2d92ad62f5.jpg)
Для нашего примера данных настроек будет вполне достаточно: мы сможем совершать звонки через линии шлюза GoIP, добавляя к вызываемым номерам соответствующий префикс, а так же принимать звонки с любой GSM линии, направляя их всех на внутренний номер 5555, заведенный на Asterisk. Аналогичные настройки мы произвели и для второго шлюза GoIP, который также будет работать с нашим SIM-банком.
SIM-банк в роли сервера
Подключение шлюза GoIP к SIM-банку
Теперь подключим наши GSM-шлюзы GoIP 4 к SIM-банку SMB128, работающему в режиме сервера. Для этого необходимо перевести SIM-банк в режим работы сервера и добавить учетные записи для каждого GoIP шлюза. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Settings и в опции Operation Mode выбираем вариант Use Buil-in SIM Server. В разделе GoIP Clients, добавляем необходимое количество учетных записей для каждого шлюза GoIP. Потребуется заполнить следующие поля:
- GoIP Type — модель шлюза GoIP, выбираем из выпадающего списка
- Login ID — идентификационный номер шлюза, используется как логин для подключения к SIM банку. Должен состоять только из цифр. Для удобства можно использовать несколько последних цифр серийного номера или MAC адреса шлюза
- Password — пароль для подключения к SIM банку
В нашем примере получились такие настройки (другие опции остались в значении по умолчанию):
- Operation Mode: Use Built-in SIM Server
- GoIP Type: GoIPx4 Login ID: 70064 Password: pass70064
- GoIP Type: GoIPx4 Login ID: 70061 Password: pass70061
![](https://habrastorage.org/files/499/5fb/9a1/4995fb9a14504166849e8acdc5786f26.jpg)
Далее, подключаем шлюзы GoIP к SIM банку. В Web-интерфейсе шлюза GoIP переходим в раздел Configurations — Preferences. Переводим опцию Remote Server в состояние Enable, после чего появятся дополнительные опции. Remote SIM переключаем в состояние Enable — тем самым, указывая шлюзу использовать режим работы с удаленным SIM сервером. В опции Server указываем IP адрес SIM-банка или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый Login ID, который мы использовали при заведении учетной записи в SIM банке. В опции Password указываем соответствующий пароль.
![](https://habrastorage.org/files/b87/0c8/483/b870c8483bd94dbdb170465518fcf1a0.jpg)
Правила распределения SIM-карт
Как уже было сказано, режим работы SIM-банка в качестве сервера имеет некоторые ограничения. Самое главное из них заключается в том, что каждому каналу каждого GSM-шлюза выделяется собственный диапазон SIM-карт, который не может использоваться другими каналами. То есть, весь диапазон SIM-карт разбивается на несколько непересекающихся множеств, каждое из которых назначается определенному GSM-каналу.
Выглядит это следующим образом: в разделе Configurations — SIM Bank Settings Web-интерфейса SIM-банка есть опция # of SIM slots reserved per line, в которой указывается количество SIM-карт, которое может быть использовано каждым из каналов. В нашем примере у нас есть два четырехпортовых шлюза GoIP4, итого – 8 каналов. Если в этой опции мы укажем, например, значение «3», то первому каналу первого шлюза будут доступны SIM-карты №1, №2 и №3, второму каналу первого шлюза — №4, №5 и №6, а первому каналу второго шлюза — №13, №14 и №15.
![](https://habrastorage.org/files/3af/24d/cd2/3af24dcd2aec468080b8eccf70ffb261.jpg)
После того, как мы выделили каждому каналу его множество SIM-карт, требуется дать ответы на два вопроса: во-первых, какое событие должно произойти, чтобы SIM-банк заменил для GSM-канала текущую SIM-карту на другую, из назначенного каналу множества. Во-вторых, на какую именно SIM-карту при наступлении этого события следует произвести замену? Ответ на первый вопрос мы дадим в следующем разделе, а вот на второй вопрос отвечает опция SIM Schedule Mode. Доступны следующие методы выбора рабочей SIM-карты:
- In sequence — последовательное распределение — выбирается первая по списку SIM карта
- At random — случайный выбор рабочей SIM карты
- Idle the longest — выбирается SIM карта, которая дольше всего находится в сотоянии ожидания
- The fewest amount of outgoing calls — выбирается SIM карта, которая имеет наименьшее количество исходящих вызовов
- The least amount of accumulative talk time — выбирается SIM карта с наименьшим количеством суммарного времени разговора
Условия переключения между SIM-картами
Теперь самое время настроить события, наступление которых влечет за собой переключение на другую SIM-карту или выполнение SIM-банков еще каких либо действий. Для этого в разделе Configurations есть два подраздела:
- Current Allocation Session — настраиваются события, которые могут наступить прямо во время текущей сессии работы SIM-карты и даже прямо во время разговора. Например, это может быть достижение определенной длительности работы SIM-карты в активном режиме, длительности текущего разговора, количества успешных вызовов, количества неудачных вызовов подряд, первая успешная регистрация SIM-карты после назначения и другие (полный список событий – на скриншоте).
![](https://habrastorage.org/files/896/f4a/9a7/896f4a9a7e2a46269fe20079503485ab.jpg)
- SIM Card History — события, которые проверяются на основе накопленной статистики работы SIM-карты и проверяются после каждого законченного вызова через SIM карту, удачного или неудачного. Например, это может быть достижение определенной суммарной длительности разговоров, количества всех вызовов, количества неудачных вызовов, снижение баланса до определенного уровня и другие (опять же – на скриншоте).
![](https://habrastorage.org/files/bb5/ab6/921/bb5ab69214a24f7ab9746fbbf38fb0a3.jpg)
На наступление каждого из событий можно назначить следующие действия:
- Null — действие не назначено, ничего не произойдет
- Re-allocate another SIM — назначить другую SIM карту для этой GSM линии, текущая SIM карта будет переведена в режим ожидания
- Disable the SIM and re-allocate another SIM — назначить другую SIM-карту для этой GSM линии, текущая SIM карта будет отключена, то есть исключена из множества SIM-карт, назначенных линии.
- Re-assign a new IMEI — назначить новое значение IMEI для этой линии GSM
- Disable the SIM and Re-assign a new IMEI and re-allocate another SIM — отключить текущую SIM карту, затем назначить новое значение IMEI и назначить другую SIM карту для этой GSM линии
- Check Balance — произвести проверку баланса на счете текущей SIM карты. Для работы данного пункта нужно произвести настройки в разделе Configurations — Get Balance
- Display Warning — отобразить предупреждение, которое появится в разделе мониторинга состояния SIM слотов — раздел SIM Slot Status
В принципе, это все основные настройки при работе SIM-банка в режиме сервера. Единственное, на что еще следует обратить внимание – это на правильную установку и удаление SIM-карт. Для того чтобы делать это безопасно, требуется предварительно отключить питание необходимого слота. Именно для этого и предназначены клавиши на корпусе SIM-банка, однако намного проще делать это с помощью Web-интерфейса. Заходим в раздел Install / Remove SIM Cards и кликаем по заголовку нужных слотов. Серый цвет означает, что питание на слот подается, красный цвет – нет. Нажимаем Submit для подтверждения действия, устанавливаем или удаляем SIM-карту, включаем питание слота и снова подтверждаем действие клавишей Submit.
Мониторинг SIM-карт
Для мониторинга установленный в SIM-банке SIM-карт предназначен раздел SIM Slot Status. Данные в этом разделе представлены в виде таблицы, где каждая ячейка соответствует одной SIM-карте и содержит следующую информацию:
- Название ячейки — это номер слота (SIM 1, SIM 2 и т.д). В зависимости от состояния слота меняется цвет названия:
- серый — слот не активен или SIM карта не установлена
- зеленый — установлена SIM карта и данный слот включен в работу, то есть привязан к одной из линий GSM шлюза
- синий — SIM карта установлена, но находится в состоянии ожидания, другими словами, не привязана в настоящий момент к GSM шлюзу
- красный — питание отключено
- S — (Status) отображает текущее состояние:
- RUNNING — SIM-карта находится в работе, те подключена к GSM шлюзу
- SLEEP – SIM карта установлена, но находится в состоянии ожидания, другими словами, не привязана в настоящий момент к GSM шлюзу
- DISCNT — SIM-карта была удалена из слота или питание отключено
- B (Bind Line) — номер GSM линии, в связке с которой работает данная SIM карта; состоит из <идентификационный номер шлюза> + <номер GSM линии> — например, для нашего шлюза с ID 70064 первая линия будет иметь вид — 7006401, вторая — 7006402 и так далее.
- G — (GSM Register) указывает, зарегистрирована ли SIM карта или нет: Y — зарегистрирована, N — не зарегистрирована.
- T — (Call Time) общее время звонков, в минутах
- C — (Call Count) общее количество вызовов
Также, при наведении курсора мыши на ячейку, появится всплывающая подсказка с расширенными параметрами состояния и статистикой для данной SIM-карты.
![](https://habrastorage.org/files/43f/e29/d92/43fe29d92f3c406691833d90efc4eca8.jpg)
SIM-банк в роли клиента
Работа SIM-банка в качестве клиента возможна при использовании бесплатного ПО Scheduler Server. Scheduler Server — это программный сервер, который позволяет управлять сразу несколькими шлюзами GoIP и SIM банками SMB. На момент написания статьи актуальная релизная версия ПО 1.7.2 и доступна для скачивания по ссылке.
При использовании Scheduler Server становятся доступны следующие возможности:
- централизованное управление несколькими устройствами SIM-банк SMB и шлюзами GoIP
- статическая привязка SIM-карты к линии GSM шлюза
- динамическое распределение SIM-карт между GSM шлюзами
- автоматическая замена SIM-карт на GSM шлюзах при наступлении определенного события
- автоматическое переключение SIM-карты с одного GSM шлюза на другой
Забегая вперед, отмечу, что у Scheduler Server есть и свои ограничения по сравнению с использованием SIM-банка в качестве сервера. В первую очередь это касается того, что переключение между SIM-картами возможно только по времени, в по событиям – нет.
Установка Scheduler Server
Требования к системе:
- рекомендуется использовать в качестве ОС — Linux Centos 32-bit
- в качестве HTTP сервера рекомендуется использовать Apache 2 или выше
- PHP 5 или выше
- сервер MySQL версии 5 или выше
Требования к сети:
- потери пакетов не должны превышать 5%
- задержка передачи пакетов не должна превышать 300 мс
- один SIM канал может занимать полосу до 11 Кбит/сек
После разархивирования полученного пакета, нужно запустить скрипт smb_scheduler_install.sh, который задаст несколько уточняющих вопросов и всё установит, включая БД. Далее, вся настройка производится в веб интерфейсе.
Как работает Scheduler Server
Главная роль сервера — связать SIM-карту в SIM-банке с линией GoIP шлюза. Работает это следующим образом:
- GSM-шлюз и SIM-банк регистрируются на Scheduler сервере
- Scheduler сервер связывает SIM-карту в SIM-банке с линией GSM-шлюза в соответствии с заданными правилами
- GSM-шлюз регистрирует соответствующую SIM карту у оператора связи
Есть два способа распределения SIM карт: в фиксированном режиме и в режиме группового назначения. Фиксированный режим — это установление связи GSM-линия — SIM слот вручную, данная связь не изменится, пока пользователь сам не внесет какие либо изменения. Режим группового назначения — это динамический режим создания связей GSM-линия — SIM слот.
Режим группового назначения
В отличии от режима работы SIM-банка в качестве сервера, где каждая группа SIM-карт может быть привязана только к определенному GSM-каналу, использование Scheduler Server дает намного больше возможностей по распределению SIM-карт. Работает это следующим образом: создаются группы, к которым можно привязать как любые слоты в SIM-банке, так и любые GSM-линии любого GSM-шлюза. Соответственно, распределение SIM-карт по GSM-линиям осуществляется внутри этих групп.
Однако есть еще одна особенность – каждый GSM-шлюз (именно шлюз, не линия) привязывается к зоне. Зоны создаются самим пользователем и по задумке разработчиков должны характеризовать реальное территориальное расположение шлюза. Нужно для реализации функции эмуляции передвижения SIM-карты: Scheduler Server настроен по умолчанию таким образом, чтобы постоянно переключать SIM-карты между шлюзами из различных зон.
В каких случаях происходит переключение SIM-карты? Увы, в случае с Scheduler Server работают только временные условия. Для каждой группы могут быть заданы следующие временные правила распределения SIM-карт:
- циклический интервал — перераспределение выполняется через равные промежутки времени, например каждый час
- по дневному расписанию — на каждый день выделяется до 9 временных интервалов, в каждый из которых работает одна SIM-карта. По истечении этого временного интервала, SIM-карта переходит в режим ожидания. При наступлении нового интервала – GSM-линии назначается следующая SIM-карта.
- по недельному расписанию — аналогично предыдущему пункту, но расписание назначается сразу на всю неделю.
Последний вопрос, на который стоит ответить – это как происходит выбор следующей для назначения SIM-карты. Алгоритм работы тут довольно простой:
- В первый раз SIM карта и GSM-линия из одной группы связываются случайным образом и запускаются в работу
- Когда рабочее время заканчивается, SIM карта и GSM-линия разрывают связь и переходят в состояние ожидания
- При наступлении нового рабочего интервала, собирается новая связь с учетом следующих правил:
- SIM карта не будет связана с GSM-линией, с которой она была связана в последний раз
- SIM карта не будет связана с линией GSM-шлюза, имеющего тот же номер зоны, что был в последний раз
Подключение устройств к Scheduler Server
Для начала с помощью Web-интерфейса Scheduler Server требуется завести учетные записи для всех GSM-шлюзов и SIM-банков, которые будут к нему подключены. Учетные записи для GSM-шлюзов заводятся в разделе GoIP. Нажимаем Add и заполняем следующие поля:
- GoIP ID(number): ID номер (будет использоваться как логин при подключении)
- GoIP Name: произвольное название подключаемого шлюза
- Password: пароль
- Type: модель шлюза GoIP — выбирается из выпадающего списка
- Group: группа, в которую будет включен GoIP (если уже создана)
- Zone ID: номер территориальной зоны
- Zone Name: произвольное название территориальной зоны
![](https://habrastorage.org/files/abe/f7c/4e6/abef7c4e67c94ab48269599ed53c3804.jpg)
Учетные записи для SIM-банков создаются, соответственно, в разделе SIM-Bank. Для добавления нового устройства, требуется заполнить следующие поля:
- SIM Bank ID(Number): ID номер (будет использоваться как логин при подключении)
- SIM Bank Name: произвольное название подключаемого SIM-банка
- Password: пароль
- Type: тип — модель SIM-банка — выбирается из выпадающего списка
- Group: группа, в которую будет включен SIM банк (если уже создана)
- Остальные параметры относятся уже к тонкой настройке работы Scheduler Server, в рамках этой статьи мы их рассматривать не будем.
![](https://habrastorage.org/files/a03/ee3/ccf/a03ee3ccf6b74c948b01afa7b3f1aaee.jpg)
Переходим к Web-интерфейсам наших устройств. Начнем с GSM-шлюза GoIP. В разделе Configurations — Preferences переводим опции Remote Server и Remote SIM в состояние Enable. В опции Server указываем IP адрес Scheduler Server или его доменное имя, в опции ID указывается идентификационный номер шлюза — тот самый GoIP ID, который мы использовали при заведении учетной записи в Scheduler Server, в поле Password указываем соответствующий пароль. Переключатель Net protocol переводим в состояние UDP.
![](https://habrastorage.org/files/1d9/fdc/58c/1d9fdc58cd7649d0ad305e87ae95a56c.jpg)
Теперь зарегистрируем на Scheduler Server наш SIM-банк. В Web-интерфейсе SMB128 переходим в раздел Configurations — SIM Bank Setting и в опции Operation Mode выбираем Use External SIM Server, а в опции SIM Data Communications with выбираем SIM Server. Все остальные настройки аналогичны настройкам GSM-шлюза.
![](https://habrastorage.org/files/aa5/222/fc6/aa5222fc67984c0d816a8b111aa7813a.jpg)
Настройка режима группового назначения
Проще всего осуществлять настройку группового назначения SIM-карт в разделе Web-интерфейса Configuration – Group. После того, как необходимое количество групп создано, к ним можно привязывать слоты SIM-банка – для этого необходимо кликнуть по ссылке SIM справа от названия группы. Для того чтобы управлять привязанными к группе GSM-каналами есть ссылка GoIP, а для управления расписанием – Scheduler.
![](https://habrastorage.org/files/f85/7d5/080/f857d508044147dfbaad9d67fc5e014a.jpg)
Настройка режима фиксированного назначения
Если требуется одну или несколько SIM-карт «намертво» привязать к определенной GSM-линии определенного GSM-шлюза, то проще всего это сделать в разделе Monitor — GoIP Channel.
- В строке с линией, к которой требуется привязать SIM-слот, в столбце Operation нажимаем Modify
- В опции Group выбираем None (for fixed bind mode)
- В опции Plan to bind Sim выбираем SIM-слот, если он уже доступен и нажимаем Save.
- Теперь переходим в раздел просмотра SIM слотов Monitor — SIM Slot
- В строке со слотом, который требуется привязать к GSM-линии, в столбце Operation нажимаем на ссылку Modify
- В опции Group следует выбрать None (for fixed bind mode)
- В опции Plan to bind GoIP Channel выбираем GSM-линию и нажимаем Save.
![](https://habrastorage.org/files/079/097/835/0790978352204aa1bf241d127ed39412.jpg)
На этом мы заканчиваем наше краткое знакомство с основными функциями SIM-банков GoIP SMB и ПО Scheduler Server. Обладая этими базовыми знаниями, разобраться со всеми дополнительными возможностями будет уже значительно проще, чем делая это «с нуля». Для тех, кто хочет изучить вопрос еще глубже и/или получить больше функционала, я бы советовал обратить внимание на интерфейс GoAntiFraud. Это ПО сторонней компании, разработанное специально для управления и мониторинга устройствами GoIP и SMB. Распространяется оно по подписке и стоит, в общем-то, довольно прилично. Однако, имеется 7-дневный пробный период, который позволяет ознакомиться со всеми возможностями и принять решение о покупке.