Asterisk и IP-телефония

Роутер + GPRS модем = mini VoIP АТС или GSM шлюз своими руками

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

Роутер + GPRS модем = mini VoIP АТС или GSM шлюз своими руками
На днях появилась необходимость поднять в удаленном, маленьком, офисе телефонию.
Стабильного канала Интернет, как и в большинстве удаленных регионов, в городке не нашлось, по этому задача свелась к созданию бюджетной АТС с локальным GSM каналом + VoIP связь с центральной (корпоративной) АТС.
Описание решения
Система состоит:
1. Роутер — DLink DIR-320. Конечно можно было посмотреть на более производительные (например ASUS RT-N16, 400Мгц против 200Мгц), но задача собрать бюджетное
решение (4500р. Asus против 1500 Dlink).
2. GPRS модем — Huawei E1550, этот выбор обоснован техническими особенностями, причины будут ясны по мере прочтения статьи.
3. USB Hub 7 портов — StLab, можно любой другой, главное — внешнее питание.
4. MicroSD Flash на 1ГБ — любая (объем тоже может быть большим).
Предстоящие задачи:
1. Прошиваем роутер «альтернативной» прошивкой.
2. Подготовка GPRS модема.
3. Монтируем MicroSD карту для устанавливаемого на роутер ПО.
4. Установка и настройка на роутер IP-PBX Asterisk.
Прошиваем роутер «альтернативной» прошивкой
Этот пункт наверное очень «замылен», и тем неменее кратко приведу последовательность действий.
Саму прошивку можно взять
отсюда
, ее особенностью является ядро верси 2.6, т.к. 2.4 не поддерживает тайминги процессора, что очень необходимо как астериску так и его модулю chan_datacard (с помощью которого мы и будем использовать GSM модем как канал).
В связи с ограничениями Flash выбранного роутера из прошивки исключены Samba, FTP, SSH, что без труда можно доустановить потом.
Прошивку скачали, осталось прошить. Предполагается что в руках DIR-320 «из коробки».
В корне системного диска на ПК (для удобства) создадим каталог «bin», в него помещаем прошивку и переименовываем ее в firmware.bin.
Там-же (в каталоге bin), создаем скрипт
flashing.bat
со следующим содержимым:
@Echo Off
:BEGIN
ping -n 1 -w 1 192.168.0.1
If errorlevel 1 Goto BEGIN
If errorlevel 0 Goto FLASH
Goto END
:FLASH
Echo *** Start Flashing ****
tftp -i 192.168.0.1 put c:\bin\firmware.bin
:END
В строке «c:\bin\firmware.bin» букву диска меняем на свою.
Устанавливаем настройки сетевой карты (к которой подключен роутер):
IP адрес — 192.168.0.2
Маска подсети — 255.255.255.0
При выключенном питании роутера нажимаем и удерживаем кнопку Reset (задняя панель роутера), включаем питание.
Как только на роутере загорится индикатор LAN порта отпускаем кнопку Reset и запускаем скрипт flashing.bat.
Прошивка займет 1-2 минуты, как только загорится индикатор статуса — сбрасываем настройки роутера, нажатием с удержанием кнопки Reset пока не заморгает индикатор статуса.
Настройки сетевой карты возвращаем на «получать автоматически».
IP адрес роутера — 192.168.1.1, логин от WEB интерфейса управления — admin/admin.
Кратко необходимые настройки роутера:
1. Change Name — для удобства можно сменить на root.
2. Change Password — меняем на свой.
3. Убеждаемся что telnet разрешен.
4. Примеряем настройки и перезагружаем роутер.
Подготовка GPRS модема
В своем «нормальном» состоянии модем E1550 виден ОС как составное USB устройство.
Роутеру мешает наличие эмуляции модемом CDRom с ПО, вот ее то (эмуляцию) мы и отключим, а заодно и привязку к симкарте оператора снимем.
1. Нам потребуется dc-unloker для ввода команд и отображения состояния устройства, скачать его можно
здесь
Качаем, устанавливаем.
2. Подключаем GSM модем с MicroSD картой к ПК, дожидаемся установки драйверов и обнаружения
устройства.
3. Запускаем dc-unloker и нажимаем «Поиск».
4. Как только устройство будет найдено увидим краткое его описание, с перечислением IMEI, версии ПО и прочее. Копируем IMEI в буфер.
5. Идем на
страницу OnLine генератора
кодов разблокировки.
6. Вставляем IM
I и заполняем капчу. В результате получаем 2 кода Unlock и Flash (код для перепрошивки устройства). Нам нужен Unlock, копируем в буфер.
7. В dc-unloker необходимо выполнить 2 команды, в текстовом окне:
AT^U2DIAG=256 (девайс в режиме модем + Card Reader)
AT^CARDLOCK="
Модем отвязан от операторских SIM и не эмулирует CDRom.
Монтируем MicroSD карту для устанавливаемого на роутер ПО
1. Используемое ПО:
Putty
WinCP
2. Подключаем модем к роутеру. Включаем питание роутера.
3. Используя протокол Telnet в Putty подключаемся к роутеру IP 192.168.1.1, логин/пароль admin/admin.
4. Используя утилиту fdisk удаляем существующие разделы с карты, MicroSD будет видна как /dev/sda.
Выполняем команды:
fdisk /dev/sda
Command (m for help): p
Если разделы есть, последовательно удаляем их:
Command (m for help): d
Если разделов нет либо удалили на предыдущем этапе:
Command (m for help): n
далее везде по умолчанию (просто Enter)
Command (m for help): w
5. Созданный раздел отформатируем:
mke2fs -j /dev/discs/disca/part1
6. Смонтируем раздел в каталог /opt
mount /dev/discs/disca/part1 /opt
7. Следующие команды позовлят в дальнейшем использовать ipkg для установки пакетов из репозитория:
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update
8. Установим необходимый (либо просто удобный) софт из репозитория:
ipkg install mc (файловый менеджер)
ipkg install nano (текстовый редактор)
ipkg install opnenssh (SSH сервер и SFTP)
ipkg install asterisk16 (IP АТС астериск)
9. Настроим автомонтирование MicroSD карты и автозапуск OpenSSH сервера и Asterisk:
в каталоге /etc создаем файл fstab, наприемр так:
touch /etc/fstab
открываем (nano /etc/fstab) и пишем в него:
#!/bin/sh
/dev/discs/disca/part1 /opt ext3 rw,noatime 1 1
в каталоге /tmp/local/ создаем файл .files:
touch /tmp/local/.files
записываем в него:
/etc/fstab
в каталоге /tmp/local/ создаем каталог sbin и в нем следующие файлы
mkdir /tmp/local/sbin
touch /tmp/local/sbin/pre-mount (скрипт вызывающийся перед монтированием)
touch /tmp/local/sbin/post-mount (скрипт вызывающийся после монтирования)
touch /tmp/local/sbin/pre-shutdown (скрипт вызывающийся перед выключении/перезагрузке)
в файл pre-mount записываем:
#!/bin/sh
e2fsck -f -y -v /dev/discs/disca/part1 (проверка файловой системы перед монтированием)
в файл post-mount записываем:
#!/bin/sh
/opt/etc/init.d/S40sshd (запуск OpenSSH демона)
Позвонить +7 (343) 382-33-16