суббота, 14 апреля 2012 г.

Cisco Callmanager и GSM-шлюзы

Cisco Callmanager and GSM Gateways

Обзор протестированных GSM-шлюзов
История проб и ошибок

Необходимость GSM-шлюза для большого офиса с развитой внутренней телефонией очевидна и обоснованна. Однако выбор самого GSM-шлюза, конкретной модели за конкретные (и возможно за "конкретные") деньги, уже не столь очевиден и его не так легко обосновать, особенно начальству, которое эти деньги выделяет.

История моего первого знакомства с GSM-шлюзами началась недавно относительно продолжительности опыта работы в IT и уже давно относительно дня, когда было принято решение о его приобретении.
Мне было дано указание: а) шлюз выбрать, б) тыкнуть пальцем какой. Естественно, что изначально даётся негласное, а потом уже и гласное замечание о приемлемости, адекватности, умеренности цены.

Первое из чего я исходил, это, конечно же, система нашей телефонии. Как не трудно догадаться из содержания блога и названия поста, это конечно же Cisco Callmanager, а если точнее, то Unified Communications Manager 8.0.3. Поскольку я (равно как и мои нынешние и бывшие коллеги) никогда с таковой задачей не сталкивались, то далее я пошёл по пути стандартизированности. Самый популярный протокол GSM-шлююзов на данный момент, конечно, SIP. Однако, как известно, SIP SIPу рознь. Что в последствие и подтвердилось. Поэтому я стал ориентироваться на старый, проверенный и проработанный H.323. Найти шлюз с поддержкой этого протокола оказалось значительно сложнее. Тут следует сразу сказать, что не верьте всему, что пишут НА ОДНОМ сайте. Проверьте, хотя бы на нескольких, и ещё лучше на сайте производителя, если таковой найдёте. :-)

Всё началось с вот этой железяки.


Название её варируется от сайта к сайту. Например, на некоторых сайтах девайс называется просто в соответствии с тем, что написано непосредственно на нём, а именно GoIP4 c припиской 4-хканальный VoIP GSM шлюз. На других сайтах можно узнать, что это GSM VoIP шлюз HyberTone GoIP4. А в том, интернет магазине, где нашёл я, сие называлось почему-то "Четырёхканальный шлюз ITCOM-GoIP04 c поддержкой протоколов SIP и H.323."

Железка отвратительная во всех смыслах. Когда уже берёшь в руки, понимаешь, что держишь китайское "Г".
Перечислю, как полагается, сначала достоинства:
1) Цена. Стоит он, как для GSM-шлюзов замечательно дёшево - 650$.
Всё.
Теперь недостатки:
1) Бракоделие. Я не люблю "кидаться какашками" раньше, чем сам всё проверю-перепроверю и буду уверен, что дело не в моей безолаберности. Правда бывает, что я подхожу не с того конца, потому что я, наверно, слегка наивен. Ну не могло же устройство предназначенное для GSM-связи не распознавать главного - SIM-карт. Могло! Не успели купить - пришлось ехать менять.
2) Тупость (тупит он значится). Замена , конечно, помогла. Карты начали распознаваться. Но любую махинацию с ними, которую вы производите придётся сопровождать сохранением и перегрузкой, и при чём я помню, что пользовался именно отключением/включением питания. И это в том числе во многом касается не только SIM-карт.
3) Отсутствие H.323. Его там не оказалось и в помине, не смотря на само название девайса на сайте. Более того, сначала нам выслали инструкцию к нему. Там как и положено описывалась настройка протокола H.323. Но увы и ах!
4) Тут я ничего не могу устверждать точно, но я не смог увязать этот ЖоИП с CallManager. Инструкций по этому поводу, как вы понимаете, в интернете не сыщешь, инструкция самого ЖоИПа вообще мало что объясняла. А перехват пакетов между CUCM и GoIP4 с помощью Wireshark позволил выловить сообщение sip "Method not allowed".

Итог: устройство вернули в магазин и на том им спасибо.

Устройство номер 2.
Planet VIP-281GS

С этим всё было уже гораздо лучше, и даже можно сказать, обнадёживающе. Цена его была тоже вполне приемлемой - 262.50$. 2-х канальный. Ну не делают они 4-х канальные. Мы решили,что в принципе достаточно. За такие деньги очень даже неплохо.
На этот раз мы были осмотрительнее и попросили устройство на тест.
На первых порах всё шло достаточно гладко. Тупенький он был вмеру. H.323, как и было заявлено, присутствовал и настройка его была довольно лёгкой. Всё шло хорошо, пока мы не перешли на этап тестирования, так сказать, в полевых условиях. Подвоха ждать пришлось недолго. При одной вставленной и работающей SIM-карте второй звонок, пытавшийся пройти через шлюз, "вышибал" первый. Я говорю пытавшийся, потому что и сам он не совершался.

Это был удар. Сокрушительный удар по нашим представлениям о качественном VoIP-to-GSM-преобразовании в ценовом диапазоне примерно 150$ на канал. И нам пришлось вернуться к устройству выбранному изначально мной по отзывам в инетернете и не только, но отброшенного как вариант по причине цены. Итак, победитель...

Устройство номер 3 по порядку и номер 1 по качеству работы.
2N VoiceBlue Next

ПРОДОЛЖЕНИЕ СЛЕДУЕТ...
(в продолжении настройка 2N VoiceBlue Next и CUCM 8.0)

четверг, 22 марта 2012 г.

Именованый список доступа (ТОЛЬКО) для DHCP

Named Access-List (ONLY) for DHCP

ip access-list extended DHCP_vlan_in 
 permit udp host 0.0.0.0 eq 68 host 255.255.255.255 eq 67 
 deny ip any any

ip access-list extended DHCP_vlan_out 
 permit udp host [IP-адрес DHCP-сервера] eq 67 host 255.255.255.255 eq 68 
 deny ip any any

В конфиге будет выглядеть немного красивее:

ip access-list extended DHCP_vlan_in 
 permit udp host 0.0.0.0 eq bootpc host 255.255.255.255 eq bootps   
 deny ip any any

ip access-list extended DHCP_vlan_out 
 permit udp host [IP-адрес DHCP-сервера] eq bootps host 255.255.255.255 eq bootpc
 deny ip any any

Почему так...


Вид сообщений DHCP
Обнаружение DHCP
DHCPDISCOVER
Предложение DHCP
DHCPOFFER
Запрос DHCP
DHCPREQUEST
Подтверждение DHCP
DHCPACK
UDP Src=0.0.0.0
Dest=255.255.255.255

Опция 53: обнаружение DHCP
Опция 50: запрос адреса 192.168.1.100
UDP Src=[IP-адрес DHCP-сервера]
Dest=255.255.255.255

Опция 53: предложение DHCP
Опция 1: mask 255.255.255.0
Опция 3: default-gateway
Опция 51: срок аренды IP-адреса
Опция 54: DHCP-сервер
UDP Src=0.0.0.0
Dest=255.255.255.255

Опция 53: запрос DHCP
Опция 50: запрос адреса
Опция 54: DHCP-сервер
UDP Src=[IP-адрес DHCP-сервера]
Dest=255.255.255.255

Опция 53: подтверждение DHCP
Опция 1: маска подсети
Опция 3: маршрутизатор
Опция 51: срок аренды IP-адреса
Опция 54: DHCP-сервер

А также привожу packet capture вовремя получения IP-адреса:


No.TimeSourceDestinationProtocolLenghtInfo
10.0086460.0.0.0255.255.255.255DHCP364DHCP Request - Transaction ID 0x184d0999
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)

20.01015110.20.20.1255.255.255.255DHCP342DHCP NAK - Transaction ID 0x184d0999
Internet Protocol Version 4, Src: 10.20.20.1 (10.20.20.1), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)

30.0301020.0.0.0255.255.255.255DHCP342DHCP Discover - Transaction ID 0x238fc2dd
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)

40.03314110.20.20.1255.255.255.255DHCP342DHCP Offer - Transaction ID 0x238fc2dd
Internet Protocol Version 4, Src: 10.20.20.1 (10.20.20.1), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)

50.0347920.0.0.0255.255.255.255DHCP370DHCP Request - Transaction ID 0x238fc2dd
Internet Protocol Version 4, Src: 0.0.0.0 (0.0.0.0), Dst: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: bootpc (68), Dst Port: bootps (67)

четверг, 23 февраля 2012 г.

Cisco ASA Failover

В качестве объектов настройки 2 x ASA5540.
ASA соединены кабелем через Gi0/2.
ASA#1 (Gi0/2) <----> (Gi0/2) ASA#2
Начинаем с чистого листа. Никаких настроек, кроме присвоения hostname не производилось.


Настройка (в целях проверки) связи между ASA
Настраиваем интерфейсы:
ASA#1ASA#2
asa1(config)# interface gi0/2
asa1(config-if)# ip address 10.20.0.89 255.255.255.248

asa2(config)# interface gi0/2
asa2(config-if)# ip address 10.20.0.90 255.255.255.248

Казалось бы и всё! Но не тут то было.

asa5540-1# ping 10.20.0.90
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.90, timeout is 2 seconds:
No route to host 10.20.0.90
Success rate is 0 percent (0/1)
asa5540-2# ping 10.20.0.89
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.90, timeout is 2 seconds:
No route to host 10.20.0.89
Success rate is 0 percent (0/1)

Когда речь идёт об ASA важно не забыть, если знал, или узнать, если понятия об этом не имел (как я), что нужно сделать следующее:
asa5540-1(config-if)# nameif ToSecondary
INFO: Security level for "ToSecondary" set to 0 by default.
asa5540-1(config-if)# nameif ToSecondary
INFO: Security level for "ToSecondary" set to 0 by default.

После этого мы увидим, что ситуация немного изменилась:

asa1# ping 10.20.0.90
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.90, timeout is 2 seconds:
?????
Success rate is 0 percent (0/5)
asa2# ping 10.20.0.89
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.90, timeout is 2 seconds:
No route to host 10.20.0.89
Success rate is 0 percent (0/1)

Повторим данную операцию на другом ASA:
ToSecondary
INFO: Security level for "ToSecondary" set to 0 by default.
asa2(config-if)# nameif ToPrimary
INFO: Security level for "ToPrimary" set to 0 by default.
И вот только теперь мы увидим, что всё "в ажуре":


asa1# ping 10.20.0.90
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.90, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5)
, round-trip min/avg/max = 1/4/10 ms
asa2# ping 10.20.0.89
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.89, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5)
, round-trip min/avg/max = 1/4/10 ms


Настройка Failover

Будем вводить команды и смотреть, как будет меняться наш running-config.
Первым делом необходимо определится, кто "главный", т.е.
1. Указать какая ASA будет primary, а какая secondary unit:

asa1(config)# failover lan unit primaryasa2(config)# failover lan unit secondary
Смотрим конфиг:

sh run

interface GigabitEthernet0/2
nameif ToSecondary
no security-level
ip address 10.20.0.89 255.255.255.248

no failover
failover lan unit primary

sh run

interface GigabitEthernet0/2
nameif ToPrimary
no security-level
ip address 10.20.0.89 255.255.255.248

no failover
failover lan unit secondary


Если сразу назначать адреса, то возникнет следующая проблема:

(config)# failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90
Interface FailoverLink is unknown.

Поэтому сначала необходимо
2. Указать какой интерфейс будет использоваться для Failover:
asa1(config)# failover lan interface FailoverLink GigabitEthernet0/2
INFO: Non-failover interface config is cleared on Ethernet0/2 and its sub-interfaces
asa2(config)# failover lan interface FailoverLink GigabitEthernet0/2
INFO: Non-failover interface config is cleared on Ethernet0/2 and its sub-interfaces
Если не снять адресацию с интерфейсов:

asa1(config)#failover lan interface FailoverLink GigabitEthernet0/2
Interface already in use
asa2(config)#failover lan interface FailoverLink GigabitEthernet0/2
Interface already in use
В таком случае:
asa1(config)#interface GigabitEthernet0/2
asa1(config-if)# no nameif
asa1(config-if)# exit
asa2(config)#interface GigabitEthernet0/2
asa2(config-if)# no nameif
asa2(config-if)# exit

3. Назначить IP-адреса для Failover-интерфейсов:
asa1(config)# failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90 asa2(config)# failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90
Active-адрес и standby-адрес должны быть из одной сети. На Secondary команда должна в точности повторять команду введенную на Primary ASA.
Смотрим конфиг:
!
interface GigabitEthernet0/2
description LAN Failover Interface
!

no failover
failover lan unit primary
failover lan interface FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90
!
interface GigabitEthernet0/2
description LAN Failover Interface
!

no failover
failover lan unit secondary
failover lan interface FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90

Немного теории: Режимы работы failover
1. Stateful failover - с сохранением текущего состояния: обе ASA обмениваются информацией о состоянии сеансов по выделенному линку (Statefull Failover Link), и если какая-либо из ASA выйдет из строя, то другая подхватит существующие сеансы и продолжит работу.
2. Stateless failover - когда при отказе основной все сеансы связи сбрасываются; активируется резервная ASA, соединения для всех сеансов устанавливаются заново (использует Failover Link).

4. Настройка stateful Failover-интерфейса:
asa1(config)# failover link FailoverLink GigabitEthernet0/2 asa2(config)# failover link FailoverLink GigabitEthernet0/2

Смотрим конфиг:


!
interface GigabitEthernet0/2
description LAN/STATE Failover Interface
!

no failover
failover lan unit primary
failover lan interface FailoverLink GigabitEthernet0/2
failover link FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90
!
interface GigabitEthernet0/2
description LAN/STATE Failover Interface
!

no failover
failover lan unit secondary
failover lan interface FailoverLink GigabitEthernet0/2
failover link FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90

А вот как выглядел бы description, если не указать lan interface для Failover:
!
interface GigabitEthernet0/2
description STATE Failover Interface
!

no failover
failover lan unit primary
failover link FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90
!
interface GigabitEthernet0/2
description STATE Failover Interface
!

no failover
failover lan unit secondary
failover link FailoverLink GigabitEthernet0/2
failover interface ip FailoverLink 10.20.0.89 255.255.255.248 standby 10.20.0.90


5. Запуск Failover
asa1(config)#failoverasa2(config)#failover
Если на одном сконфигурировано, а на другом нет, Вы увидите следующее сообщение:
No Response from Mate
Если всё сделано правильно:
Detected an Active mate
Beginning configuration replication: Sending to mate.
End Configuration Replication to mate
Detected an Active mate
Beginning configuration replication from mate.
End Configuration Replication to mate

6. И, как всегда, на всякий случай, не забыть внести немного security:
asa1(config)#failover key <текст> asa2(config)#failover key <тот же текст>


После этого Вы увидите, что hostname на ASA#2 измениться на hostname ASA#1. Теперь для Вас это единое устройство. А вот понять, на какой железке Вы находитесь, поможет следующая команда :

asa1# show failover
Failover On
Failover unit Primary
Failover LAN Interface: LANFAIL GigabitEthernet0/2 (up)
Unit Poll frequency 1 seconds, holdtime 15 seconds
Interface Poll frequency 5 seconds, holdtime 25 seconds
Interface Policy 1
Monitored Interfaces 5 of 210 maximum
Version: Ours 8.2(2), Mate 8.2(2)
Last Failover at: 11:09:35 UTC Dec 14 2011
This host: Primary - Active
Active time: 8456091 (sec)
slot 0: ASA5540 hw/sw rev (2.0/8.2(2)) status (Up Sys)
Interface dmz-wifi-guest (10.20.13.1): Normal
Interface inside (10.20.0.66): Normal
Interface outside (10.20.0.81): Normal
Interface dmz-wan (10.20.0.73): Normal
Interface dmz-srv (10.20.0.33): Normal
slot 1: ASA-SSM-40 hw/sw rev (1.0/6.0(6)E3) status (Up/Up)
IPS, 6.0(6)E3, Up
Other host: Secondary - Standby Ready
Active time: 0 (sec)
slot 0: ASA5540 hw/sw rev (2.0/8.2(2)) status (Up Sys)
Interface dmz-wifi-guest (10.20.13.2): Normal
Interface inside (10.20.0.67): Normal
Interface outside (10.20.0.82): Normal
Interface dmz-wan (10.20.0.74): Normal
Interface dmz-srv (10.20.0.34): Normal
slot 1: ASA-SSM-40 hw/sw rev (1.0/6.0(6)E4) status (Up/Up)
IPS, 6.0(6)E4, Up

Stateful Failover Logical Update Statistics
Link : LANFAIL GigabitEthernet0/2 (up)
Stateful Obj xmit xerr rcv rerr
General 963813520 0 1127463 0
sys cmd 1127463 0 1127463 0
up time 0 0 0 0
RPC services 0 0 0 0
TCP conn 254249759 0 0 0
UDP conn 707416403 0 0 0
ARP tbl 1014592 0 0 0
Xlate_Timeout 0 0 0 0
IPv6 ND tbl 0 0 0 0
VPN IKE upd 2310 0 0 0
VPN IPSEC upd 2993 0 0 0
VPN CTCP upd 0 0 0 0
VPN SDI upd 0 0 0 0
VPN DHCP upd 0 0 0 0
SIP Session 0 0 0 0

Logical Update Queue Information
Cur Max Total
Recv Q: 0 17 1127463
Xmit Q: 0 1024 983248660