Zoo VoIP – zaopatrzenie

Wejście

Pewnego dnia kierownictwo zatwierdziło eksperyment mający na celu wprowadzenie telefonii IP w naszym biurze. Ponieważ moje doświadczenie w tej dziedzinie było skąpe, zadanie wzbudziło we mnie duże zainteresowanie i pogrążyłem się w studiowaniu różnych aspektów zagadnienia. Pod koniec nurkowania postanowiłem podzielić się zdobytą wiedzą w nadziei, że komuś się przyda. Więc…

Surowe dane

Wybrano gwiazdkę i wdrożono ją jako centralę IP PBX. Flota telefonów składa się z urządzeń Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 i Dlink DPH-150S(E)/F3, Yealink T19 i T21. To zróżnicowanie wynika z faktu, że w ramach eksperymentu postanowiono spróbować wszystkiego po trochu, aby wyrobić sobie opinię na temat stosunku ceny do jakości i wygody.

Zadanie

Uprość i ujednolić proces konfigurowania nowych urządzeń tak bardzo, jak to możliwe. Wszystkie telefony muszą być zsynchronizowane czasowo, mieć wczytaną książkę telefoniczną z serwera oraz zapewniać administratorowi dostęp do ustawień.

Rozwiązanie tego problemu jest proste – należy wdrożyć automatyczną konfigurację telefonów, tzw. Aprowizacja. Właściwie omówiona zostanie moja implementacja tej wspaniałej funkcji.

Konfiguracja tftpd, dhcpd

Aby dystrybuować ustawienia do telefonów, wybrałem tftp jako opcję uniwersalną, obsługiwaną przez wszystkie platformy, łatwą w konfiguracji i zarządzaniu.

Dla tftp nie była wymagana żadna szczególna konfiguracja. Zainstalowałem standardowy tftpd i umieściłem wszystkie niezbędne pliki w jego katalogu głównym.
Pliki ustawień umieściłem w katalogach zgodnych z zaleceniami producenta telefonu. To prawda, że ​​​​urządzenie Cisco nigdy nie trafiło do jego folderu, więc musiałem je przechowywać w katalogu głównym.

Aby wskazać telefonom lokalizację serwera tftp, użyłem opcji-66. Dodatkowo podzielił je na osobne klasy według producenta. Każda klasa otrzymała własny segment adresowy i indywidualny folder na pliki konfiguracyjne. Nawiasem mówiąc, urządzenia z D-link musiały być obliczane według adresów MAC, ponieważ nie dostarczają informacji o producencie w żądaniu dhcp.

Fragment dhcpd.conf

# Określ wymagane opcje opcja opcja-66 kod 66 = tekst; class "panasonic" { dopasowanie, jeśli podciąg (opcja identyfikator-klasy dostawcy,0,9) = "Panasonic"; opcja opcja-66 „10.1.1.50/panasonic/”; } class "cisco" { dopasuj, jeśli podciąg (opcja identyfikator-klasy dostawcy, 0,36) = "Cisco Systems, Inc. Telefon IP CP-7906"; opcja opcja-66 „10.1.1.50/cisco/”; } class "grandstream" { dopasuj, jeśli podciąg (opcja identyfikator-klasy dostawcy,0,11) = "Grandstream"; opcja opcja-66 „10.1.1.50/grandstream/”; } class "dlink" { dopasowanie if (binarny do-ascii (16,8,":",substring(hardware,1,4)) = "c8:d3:a3:8d") lub (binarny do-ascii (16,8,":",substring(sprzęt,1,4)) = "90:94:e4:72"); opcja opcja-66 „10.1.1.50/dlink/”; } class "yealink" { dopasuj, jeśli podciąg (opcja identyfikator-klasy dostawcy,0,7) = "Yealink"; opcja opcja-66 „10.1.1.50/yealink/”; }

Telefony trzeba było siłą wykluczyć z ogólnej puli. Inaczej nie chciało im się iść na swój „brodzik”.
Przykład ustawień podsieci

podsieć 10.1.1.0 maska ​​sieci 255.255.255.0 { opcja routery 10.1.1.1; basen { odmów członkom „cisco”; odmówić członkom „panasonic”; odmówić członkom „dlink”; zakres 10.1.1.230 10.1.1.240; } basen {zezwól członkom „cisco”; zakres 10.1.1.65 10.1.1.69; } basen {zezwól członkom „panasonic”; zakres 10.1.1.60 10.1.1.64; } pula {zezwól członkom „dlink”; zakres 10.1.1.55 10.1.1.59; } }

Po ponownym uruchomieniu wszystkich zaangażowanych usług telefony bezpiecznie udały się do przypisanego im serwera tftp w celu uzyskania ustawień. Pozostaje tylko je tam umieścić.

Cisco 7906

Urządzenia te otrzymałem w oryginalnym opakowaniu. Musiałem to zmienić, żeby zaprzyjaźnić się z gwiazdką. Ale to inna historia. W konkretnym przypadku, aby skonfigurować urządzenie zgodnie z instrukcją, utworzyłem plik SEPAABBCCDEEFF.cnf.xml w katalogu głównym serwera tftp. Gdzie AABBCCDEEFF jest adresem MAC urządzenia.

O konfigurowaniu telefonów od Cisco było już pisane nie raz, więc zostawię tylko działający plik z ustawieniami.
Ustawienia Cisco

<?xml version="1.0" encoding="UTF-8"?>
<device xsi_type="axl:XIPPhone" ctiid="94">
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>root</sshUserId>
<sshPassword>ADMIN_PWD</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>D-M-Y</dateTemplate>
<timeZone>Central Pacific Standard Time</timeZone>
<ntps>
<ntp>
<name>10.1.1.4</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members> <member priority="0"> <callManager>
<name>10.1.1.50</name>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>10.1.1.50</processNodeName>
</callManager> </member> </members>
</callManagerGroup>
<srstInfo>
<srstOption>Disable</srstOption>
</srstInfo>
<connectionMonitorDuration>120</connectionMonitorDuration>
</devicePool>
<sipProfile>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI>
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
<rfc2543Hold>false</rfc2543Hold>
<callHoldRingback>2</callHoldRingback>
<localCfwdEnable>true</localCfwdEnable>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>2</callerIdBlocking>
<dndControl>0</dndControl>
<remoteCcEnable>true</remoteCcEnable>
<retainForwardInformation>false</retainForwardInformation>
</sipCallFeatures>
<sipStack>
<sipInviteRetx>6</sipInviteRetx>
<sipRetx>10</sipRetx>
<timerInviteExpires>180</timerInviteExpires>
<timerRegisterExpires>3600</timerRegisterExpires>
<timerRegisterDelta>5</timerRegisterDelta>
<timerKeepAliveExpires>120</timerKeepAliveExpires>
<timerSubscribeExpires>120</timerSubscribeExpires>
<timerSubscribeDelta>5</timerSubscribeDelta>
<timerT1>500</timerT1>
<timerT2>4000</timerT2>
<maxRedirects>70</maxRedirects>
<remotePartyID>true</remotePartyID>
<userInfo>None</userInfo>
</sipStack>
<autoAnswerTimer>1</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>false</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>none</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<kpml>3</kpml>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<phoneLabel>Cisco Phone</phoneLabel>
<stutterMsgWaiting>2</stutterMsgWaiting>
<callStats>false</callStats>
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
<poundEndOfDial>false</poundEndOfDial>
<startMediaPort>16384</startMediaPort>
<stopMediaPort>32766</stopMediaPort>
<sipLines>
<line button="1" lineIndex="1">
<featureID>9</featureID>
<proxy>10.1.1.50</proxy>
<port>5060</port>
<autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer>
<callWaiting>3</callWaiting>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messagesNumber></messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>true</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<featureLabel></featureLabel>
<displayName>User #103</displayName>
<name>103</name>
<authName>103</authName>
<authPassword>SIP_PWD</authPassword>
</line>
</sipLines>
<externalNumberMask>$num</externalNumberMask>
<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
</sipProfile>
<commonProfile>
<phonePassword>*0#</phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>2</callLogBlfEnabled>
</commonProfile>
<loadInformation></loadInformation>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<forwardingDelay>1</forwardingDelay>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>1</autoSelectLineEnable>
<webAccess>0</webAccess>
<daysDisplayNotActive>1,7</daysDisplayNotActive>
<displayOnTime>09:00</displayOnTime>
<displayOnDuration>12:00</displayOnDuration>
<displayIdleTimeout>01:00</displayIdleTimeout>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>2</loggingDisplay>
<loadServer>10.1.1.50</loadServer>
<recordingTone>0</recordingTone>
<recordingToneLocalVolume>100</recordingToneLocalVolume>
<recordingToneRemoteVolume>50</recordingToneRemoteVolume>
<recordingToneDuration></recordingToneDuration>
<displayOnWhenIncomingCall>0</displayOnWhenIncomingCall>
<rtcp>0</rtcp>
<moreKeyReversionTimer>5</moreKeyReversionTimer>
<autoCallSelect>1</autoCallSelect>
<logServer>10.1.1.50</logServer>
<g722CodecSupport>0</g722CodecSupport>
<headsetWidebandUIControl>0</headsetWidebandUIControl>
<handsetWidebandUIControl>0</handsetWidebandUIControl>
<headsetWidebandEnable>0</headsetWidebandEnable>
<handsetWidebandEnable>0</handsetWidebandEnable>
<peerFirmwareSharing>0</peerFirmwareSharing>
<enableCdpSwPort>1</enableCdpSwPort>
<enableCdpPcPort>1</enableCdpPcPort>
</vendorConfig>
<versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>
<userLocale>
<name>Russian_Russian_Federation</name>
<langCode>ru_RU</langCode>
<version></version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale></networkLocale>
<networkLocaleInfo>
<name></name>
<version></version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL></authenticationURL>
<directoryURL>http://10.1.1.50/provisioning/cisco-services.xml</directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL>http://10.1.1.50/provisioning/cisco-services.xml</servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<singleButtonBarge>0</singleButtonBarge>
<capfAuthMode>0</capfAuthMode>
<capfList><capf>
<phonePort>3804</phonePort>
<!-- <processNodeName>10.1.1.50</processNodeName> -->
</capf> </capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<advertiseG722Codec>1</advertiseG722Codec>
</device>

D-Link DPH-150S/F3

Jeśli dopiero planujesz zakup telefonu z tej serii, bądź ostrożny, automatyczne dostrajanie obsługiwane jest tylko w urządzeniach 150S/F3. W urządzeniu 150S/F2, które trafiło w moje ręce, nie znalazłem takiej funkcjonalności.

Plik konfiguracyjny może mieć format XML lub zwykły tekst. XML ma jedno wymaganie: znacznik musi znajdować się na początku linii, w przeciwnym razie parser go zignoruje, a wartość odpowiedniego parametru nie ulegnie zmianie.

Do konfiguracji telefonu służą dwa pliki. f0D00580000.cfg - do przechowywania ustawień dla wszystkich telefonów i 00112233aabb.cfg (adres MAC pisany małymi literami) do ustawień indywidualnych. Indywidualne ustawienia mają oczywiście wyższy priorytet.

Pełny zestaw ustawień zawiera ponad tysiąc linii, aby nie zaśmiecać artykułu, opiszę minimalny wystarczający zestaw ustawień.

Węzeł główny jest wymagany VOIP_CONFIG_FILE i węzeł w nim zagnieżdżony wersja. Ustawienia zostaną zastosowane tylko w przypadku, gdy wersja pliku jest wyższa niż aktualne ustawienia w urządzeniu. Tę wartość można znaleźć w interfejsie internetowym telefonu w sekcji konserwacji (zarządzanie systemem). Dla telefonów z ustawieniami fabrycznymi w obu przypadkach jest to 2.0002. Ponadto indywidualna wersja pliku musi być większa niż wersja udostępnionego pliku.

Najpierw udostępnię plik z konfiguracją wspólną dla wszystkich telefonów. Tak naprawdę przechowuje wszystkie ustawienia, indywidualny plik będzie odpowiedzialny jedynie za numer telefonu i napis na ekranie.

W dwóch poniższych blokach ustawia się strefę czasową i parametry synchronizacji czasu, włącza się port początkowy dla protokołu RTP oraz mostek sieciowy pomiędzy złączami WAN i LAN urządzenia.

Fragment nr 1

<GLOBAL_CONFIG_MODULE>
<WAN_Mode>DHCP</WAN_Mode>
<Default_Protocol>2</Default_Protocol>
<Enable_DHCP>1</Enable_DHCP>
<DHCP_Auto_DNS>1</DHCP_Auto_DNS>
<DHCP_Auto_Time>0</DHCP_Auto_Time>
<Host_Name>VOIP</Host_Name>
<RTP_Initial_Port>10000</RTP_Initial_Port>
<RTP_Port_Quantity>200</RTP_Port_Quantity>
<SNTP_Server>10.1.1.4</SNTP_Server>
<Enable_SNTP>1</Enable_SNTP>
<Time_Zone>71</Time_Zone>
<Time_Zone_Name>UCT_011</Time_Zone_Name>
<Enable_DST>0</Enable_DST>
<SNTP_Timeout>60</SNTP_Timeout>
<Default_UI>12</Default_UI>
<MTU_Length>1500</MTU_Length>
</GLOBAL_CONFIG_MODULE>
<LAN_CONFIG_MODULE>
<Enable_Bridge_Mode>1</Enable_Bridge_Mode>
<Enable_Port_Mirror>1</Enable_Port_Mirror>
</LAN_CONFIG_MODULE>

Rzeczywiste nazwy parametrów konfiguracyjnych są na tyle opisowe, że można uniknąć ich szczegółowego opisywania.
SIP dla jednej linii

<SIP_CONFIG_MODULE>
<SIP__Port>5060</SIP__Port>
<SIP_Line_List>
<SIP_Line_List_Entry>
<ID>SIP1</ID>
<Register_Addr>10.1.1.50</Register_Addr>
<Register_Port>5060</Register_Port>
<Register_TTL>3600</Register_TTL>
<Enable_Reg>1</Enable_Reg>
<Proxy_Addr>10.1.1.50</Proxy_Addr>
<DTMF_Mode>1</DTMF_Mode>
<DTMF_Info_Mode>0</DTMF_Info_Mode>
<VoiceCodecMap>G711A,G711U,G722</VoiceCodecMap>
</SIP_Line_List_Entry>
</SIP_Line_List>
</SIP_CONFIG_MODULE>

Ustawienia pilota

<MMI_CONFIG_MODULE>
<Telnet_Port>23</Telnet_Port>
<Web_Port>80</Web_Port>
<Web_Server_Type>0</Web_Server_Type>
<Https_Web_Port>443</Https_Web_Port>
<Remote_Control>1</Remote_Control>
<Enable_MMI_Filter>0</Enable_MMI_Filter>
<Telnet_Prompt></Telnet_Prompt>
<MMI_Filter>
<MMI_Filter_Entry>
<ID>Item1</ID>
<First_IP>10.1.1.152</First_IP>
<End_IP>10.1.1.160</End_IP>
</MMI_Filter_Entry>
</MMI_Filter>
<MMI_Account>
<MMI_Account_Entry>
<ID>Account1</ID>
<Name>admin</Name>
<Password>ADMIN_PWD</Password>
<Level>10</Level>
</MMI_Account_Entry>
<MMI_Account_Entry>
<ID>Account2</ID>
<Name>guest</Name>
<Password>GUEST_PWD</Password>
<Level>5</Level>
</MMI_Account_Entry>
</MMI_Account>
</MMI_CONFIG_MODULE>

Ustawienia telefonu

<PHONE_CONFIG_MODULE>
<Menu_Password>123</Menu_Password>
<KeyLock_Password>123</KeyLock_Password>
<Fast_Keylock_Code></Fast_Keylock_Code>
<Enable_KeyLock>0</Enable_KeyLock>
<Emergency_Call>112</Emergency_Call>
<LCD_Title>Company</LCD_Title>
<LCD_Constrast>5</LCD_Constrast>
<LCD_Luminance>1</LCD_Luminance>
<Backlight_Off_Time>30</Backlight_Off_Time>
<Enable_Power_LED>0</Enable_Power_LED>
<Time_Display_Style>0</Time_Display_Style>
<Enable_TimeDisplay>1</Enable_TimeDisplay>
<Alarm__Clock>0,,1</Alarm__Clock>
<Date_Display_Style>0</Date_Display_Style>
<Date_Separator>0</Date_Separator>
<Enable_Pre-Dial>1</Enable_Pre-Dial>
<Xml_PhoneBook>
<Xml_PhoneBook_Entry>
<ID>XML-PBook1</ID>
<Name>Phonebook</Name>
<Addr>http://10.1.1.50/provisioning/dlink-phonebook.xml</Addr>
<Auth>:</Auth>
<Policy>0</Policy>
<Sipline>0</Sipline>
</Xml_PhoneBook_Entry>
</Xml_PhoneBook>
<Phonebook_Groups>friend,home,work,business,classmate,colleague</Phonebook_Groups>
</PHONE_CONFIG_MODULE>

Wszystkie pozostałe ustawienia pozostaną „domyślne”. Teraz każdy telefon Dlink podłączony do sieci natychmiast zaakceptuje wspólny dla wszystkich zestaw parametrów. Do ustawienia poszczególnych parametrów urządzenia potrzebny jest osobny plik. W nim wystarczy określić niezbędne ustawienia dla indywidualnego abonenta.
ustawienia abonenta

<?xml version="1.0" encoding="UTF-8"?>
<VOIP_CONFIG_FILE>
<version>2.0006</version>
<SIP_CONFIG_MODULE>
<SIP_Line_List>
<SIP_Line_List_Entry>
<ID>SIP1</ID>
<Display_Name>User #117</Display_Name>
<Phone_Number>117</Phone_Number>
<Register_Port>5060</Register_Port>
<Register_User>117</Register_User>
<Register_Pswd>SIP_PWD</Register_Pswd>
<Register_TTL>3600</Register_TTL>
<Enable_Reg>1</Enable_Reg>
<Proxy_Port>5060</Proxy_Port>
<Proxy_User>117</Proxy_User>
<Proxy_Pswd>SIP_PWD</Proxy_Pswd>
</SIP_Line_List_Entry>
</SIP_Line_List>
</SIP_CONFIG_MODULE>
</VOIP_CONFIG_FILE>

Panasonica UT-KX123B

Urządzenia te otrzymują ustawienia według nieco innego schematu. Konfiguracja zapisana jest w plikach tekstowych. Maksymalny rozmiar pliku konfiguracyjnego wynosi 120 KB. Niezależnie od ilości plików, ich łączny rozmiar nie powinien przekraczać 120 KB.
Plik konfiguracyjny składa się z zestawu linii, które podlegają następującym warunkom:

  • Pierwsza linia jest zawsze linią komentarza zawierającą następującą sekwencję znaków (44 bajty):
    # Plik w formacie standardowego telefonu SIP firmy Panasonic #
    Szesnastkowa reprezentacja tej sekwencji:
    23 20 50 61 6E 61 73 6F 6E 69 63 20 53 49 50 20 50 68 6F 6E 65 20 53 74 61 6E 64 61 72 64 20 46 6F 72 6D 61 74 20 46 69 6 C 65 20 23
    Aby zapobiec przypadkowym zmianom ustalonego ciągu znaków, zaleca się rozpoczęcie pliku konfiguracyjnego od wiersza:
    # Plik w standardowym formacie telefonu SIP firmy Panasonic # NIE ZMIENIAJ TEJ LINII!
  • Pliki konfiguracyjne muszą kończyć się pustą linią.
  • Każda linia musi kończyć się sekwencją „ „.
  • Maksymalna długość ciągu wynosi 537 bajtów, łącznie z sekwencją „ "
  • Następujące linie są ignorowane:
    • linie przekraczające limit 537 bajtów;
    • puste linie;
    • linie komentarza zaczynające się od „#”;
  • Ciąg znaków dla każdego parametru zapisywany jest w postaci XXX=„yyy” (XXX: nazwa parametru, yyy: jego wartość). Wartość musi być ujęta w cudzysłów.
  • Niedozwolone jest dzielenie linii parametrów na kilka linii. Spowoduje to błąd przetwarzania pliku konfiguracyjnego i w efekcie niepowodzenie inicjalizacji.
  • Wartości niektórych parametrów należy określić osobno dla każdej linii. Parametr z przyrostkiem „_1” w nazwie jest parametrem dla linii 1; „_2” — dla linii 2 itd.
  • Maksymalna długość nazwy parametru wynosi 32 znaki.
  • Maksymalna długość wartości parametru wynosi 500 znaków z wyłączeniem cudzysłowów.
  • W ciągu znaków nie są dozwolone żadne spacje, chyba że wartość zawiera znak spacji.
  • Niektóre wartości parametrów można określić jako „puste”, aby ustawić parametr na pustą wartość.
  • Parametry są określone w dowolnej kolejności.
  • Jeśli ten sam parametr zostanie określony więcej niż raz w pliku konfiguracyjnym, zastosowana zostanie wartość określona jako pierwsza.

Tak poważny zestaw wymagań dotyczących pliku konfiguracyjnego, szczerze mówiąc, zdenerwował mnie. Moim zdaniem realizacja interakcji z serwerem sterującym w telefonach Panasonic jest wyjątkowo niewygodna. Pod tym parametrem telefon wyraźnie ustępuje innym.
Przy pierwszym włączeniu urządzenie (lub po przywróceniu ustawień fabrycznych) próbuje wczytać tzw. plik produktowy (w tym przypadku jest to KX-UT123RU.cfg), który powinien zawierać ścieżki do pozostałe pliki konfiguracyjne.
Plik produktu# Plik w standardowym formacie telefonu SIP firmy Panasonic # NIE ZMIENIAJ TEJ LINII!

CFG_STANDARD_FILE_PATH="tftp://10.1.1.50/panasonic/{mac}.cfg"
CFG_PRODUCT_FILE_PATH="tftp://10.1.1.50/panasonic/KX-UT123RU.cfg"
CFG_MASTER_FILE_PATH="tftp://10.1.1.50/panasonic/master.cfg"

Następnie telefon wyświetli komunikat o pomyślnym zakończeniu przygotowań i będzie czekał na ponowne uruchomienie. A po ponownym uruchomieniu zacznie przetwarzać przypisane do niego pliki konfiguracyjne.

Zalecane jest określenie ogólnych ustawień dla wszystkich telefonów w pliku master.cfg. Podobnie jak w przypadku Dlinka, podam tylko niektóre parametry. Nazwy pozostałych parametrów i ich wartości znajdziesz w dokumentacji na stronie producenta.
master.cfg################################################## ##########
#Ustawienia systemowe#
################################################## ##########
## Ustawienia konta logowania
ADMIN_ID="administrator"
ADMIN_PASS="ADMIN_PWD"
USER_ID="użytkownik"
USER_PASS="HASŁO UŻYTKOWNIKA"

## Ustawienia czasu systemowego
NTP_ADDR="10.1.1.4"
TIME_ZONE="660"
DST_ENABLE="N"
DST_OFFSET="60"
DST_START_MONTH="3"
DST_START_ORDINAL_DAY="2"
DST_START_DAY_OF_WEEK="0"
DST_START_TIME="120"
DST_STOP_MONTH="10"
DST_STOP_ORDINAL_DAY="2"
DST_STOP_DAY_OF_WEEK="0"
DST_STOP_TIME="120"
LOCAL_TIME_ZONE_POSIX=""

## Ustawienia syslogu
SYSLOG_ADDR="10.1.1.50"
SYSLOG_PORT="514"
SYSLOG_EVENT_SIP="6"
SYSLOG_EVENT_CFG="6"
SYSLOG_EVENT_VOIP="6"
SYSLOG_EVENT_TEL="6"

## Ustawienia udostępniania
OPTION66_ENABLE="T"
OPTION66_REBOOT="N"
PROVISION_ENABLE="T"
CFG_STANDARD_FILE_PATH="tftp://10.1.1.50/panasonic/{mac}.cfg"
CFG_PRODUCT_FILE_PATH="tftp://10.1.1.50/panasonic/KX-UT123RU.cfg"
CFG_MASTER_FILE_PATH="tftp://10.1.1.50/panasonic/master.cfg"

################################################## ##########
#Ustawienia sieci#
################################################## ##########
## Ustawienia IP
POŁĄCZENIE_TYPE="1"
HOST_NAME="UT123"
DHCP_DNS_ENABLE="T"
STATIC_IP_ADDRESS=""
STATIC_SUBNET=""
STATIC_GATEWAY=""
USER_DNS1_ADDR=""
USER_DNS2_ADDR=""

## Ustawienia DNS
DNS_QRY_PRLL="T"
DNS_PRIORITY="N"
DNS1_ADDR="10.1.1.1"
DNS2_ADDR=""

## Ustawienia HTTP
HTTPD_PORTOPEN_AUTO="T"
HTTP_VER="1"
HTTP_USER_AGENT="Panasonic_{MODEL}/{fwver} ({mac})"
HTTP_SSL_VERIFY="0"
CFG_ROOT_CERTIFICATE_PATH=""

## Ustawienia aplikacji XML
XML_HTTPD_PORT="6666"
XMLAPP_ENABLE="T"
XMLAPP_USERID=""
XMLAPP_USERPASS=""
XMLAPP_START_URL=""
XMLAPP_INITIAL_URL=" "
XMLAPP_INCOMING_URL=""
XMLAPP_TALKING_URL=""
XMLAPP_MAKECALL_URL=""
XMLAPP_CALLLOG_URL=""
XMLAPP_IDLING_URL=""
XMLAPP_LDAP_URL="10.1.1.50/provisioning/panasonic-phonebook.xml»
XMLAPP_LDAP_USERID=""
XMLAPP_LDAP_USERPASS=""

Tradycyjnie w indywidualnym pliku konfiguracyjnym urządzenia pozostają jedynie ustawienia abonenta.
aabbccddeeff.cfgDISPLAY_NAME_1="Użytkownik nr 168"

PHONE_NUMBER_1="168"
SIP_URI_1="168"
LINE_ENABLE_1="Włączone"
PROFILE_ENABLE_1="Włączone"
SIP_AUTHID_1="168"
SIP_PASS_1="SIP_PWD"

Grandstream GXP-1400

Parametry tych telefonów zapisane są w jednym pliku xml o nazwie cfg{mac}.xml. Lub zwykłym tekstem o nazwie cfg{mac}. Ten telefon żąda tylko indywidualnego pliku konfiguracyjnego, więc optymalizacja ustawień poprzez przeniesienie ich do wspólnego pliku nie będzie działać. Kolejną cechą konfigurowania Grandstreamów jest nazewnictwo parametrów. Wszystkie są ponumerowane i oznaczone jako P###. Na przykład:

P1650 – odpowiedzialny za interfejs WWW do zarządzania telefonem (0 – HTTPS, 1 – HTTP)
P47 – Adres serwera SIP do połączenia.

Jeśli konfiguracja zapisana jest w pliku tekstowym, parametry nie wymagają grupowania i są w dowolnej kolejności. Linie zaczynające się od # są traktowane jako komentarze.

Jeśli ustawienia są prezentowane w formacie xml, muszą być zagnieżdżone w węźle , który z kolei musi zostać zagnieżdżony . Wszystkie parametry zapisywane są w formie odpowiednich znaczników, w których znajduje się wartość parametru.
Przykład ustawienia

1.0 8 1 1 SIP_PWD Użytkownik nr 271 1 271 270 109 ADMIN_PWD USER_PWD ru 270 35/wielki strumień 109 TZc-35 36 109 http://36/provisioning/grandstream trzydzieści

Yealink T19 i T21

Urządzenia tych modeli obsługują indywidualne pliki konfiguracyjne dla urządzeń i wspólne dla modeli. W moim przypadku parametry ogólne musiałem umieścić odpowiednio w plikach y000000000031.cfg i y000000000034.cfg. Poszczególne pliki konfiguracyjne nazywane są zgodnie z adresem MAC: 00112233aabb.cfg.

Ustawienia Yealinks są przechowywane w formacie tekstowym. Jedyne obowiązkowe wymagania to obecność wersji pliku w pierwszej linii, w formacie #!version:1.0.0.1.

Wszystkie parametry zapisywane są w postaci parametr = wartość. Komentarze muszą zaczynać się od znaku „#”. Nazwy parametrów i ich wartości można znaleźć w dokumentacji na stronie producenta.
Ustawienia główne#!wersja:1.0.0.1
#Skonfiguruj typ portu WAN; 0-DHCP (domyślnie), 1-PPPoE, 2-Statyczny adres IP;
typ.portu_sieciowego = 0
#Skonfiguruj typ portu komputera; 0-router, 1-most (domyślnie);
tryb_sieciowy = 1
#Skonfiguruj typ dostępu serwera WWW; 0-wyłączone, 1-HTTP i HTTPS (domyślnie), tylko 2-HTTP, tylko 3-HTTPS;
typ_serwera_sieciowego = 3
#Skonfiguruj maksymalny lokalny port RTP. Zakres wynosi od 0 do 65535, wartość domyślna to 11800.
sieć.port.max_rtpport = 10100
#Skonfiguruj minimalny lokalny port RTP. Zakres wynosi od 0 do 65535, wartość domyślna to 11780.
sieć.port.min_rtpport = 10000
security.user_name.admin = root
security.user_password = root:ADMIN_PWD
bezpieczeństwo.nazwa_użytkownika.użytkownik = użytkownik
security.user_password = użytkownik:USER_PWD
#Określ język sieciowy, prawidłowe wartości to: angielski, chiński_S, turecki, portugalski, hiszpański, włoski, francuski, rosyjski, niemiecki i czeski.
lang.wui = rosyjski
#Określ język wyświetlacza LCD, prawidłowe wartości to: angielski (domyślny), chiński_S, chiński_T, niemiecki, francuski, turecki, włoski, polski, hiszpański i portugalski.
lang.gui = rosyjski
#Skonfiguruj strefę czasową i nazwę strefy czasowej. Strefa czasowa mieści się w zakresie od -11 do +12, wartość domyślna to +8.
#Domyślna nazwa strefy czasowej to Chiny (Pekin).
#Więcej dostępnych stref czasowych i nazw stref czasowych można znaleźć w Podręczniku użytkownika telefonów IP Yealink.
local_time.time_zone = +11
local_time.time_zone_name = Władywostok
#Skonfiguruj nazwę domeny lub adres IP serwera NTP. Wartość domyślna to cn.pool.ntp.org.
local_time.ntp_server1 = 10.1.1.4
#Skonfiguruj tryb logo na ekranie LCD; 0-Wyłączone (domyślnie), 1-Logo systemu, 2-Logo niestandardowe;
Phone_setting.lcd_logo.mode = 1
#Skonfiguruj adres URL dostępu i nazwę wyświetlaną zdalnej książki telefonicznej. X mieści się w zakresie od 1 do 5.
Remote_phonebook.data.1.url = 10.1.1.50/provisioning/yealink-phonebook.xml
Remote_phonebook.data.1.name = Książka telefoniczna
funkcje.remote_phonebook.flash_time = 3600

indywidualne ustawienia#!wersja:1.0.0.1
#Włącz lub wyłącz konto1, 0-Wyłączone (domyślnie), 1-Włączone;
konto.1.włącz = 1
#Skonfiguruj etykietę wyświetlaną na ekranie LCD dla konta 1.
account.1.label = Testuj telefon
#Skonfiguruj nazwę wyświetlaną konta 1.
konto.1.display_name = Użytkownik 998
#Skonfiguruj nazwę użytkownika i hasło do uwierzytelnienia rejestru.
konto.1.auth_name = 998
konto.1.hasło = 998
#Skonfiguruj zarejestrowaną nazwę użytkownika.
konto.1.nazwa_użytkownika = 998
#Skonfiguruj adres serwera SIP.
konto.1.sip_server_host = 10.1.1.50
#Określ port dla serwera SIP. Wartość domyślna to 5060.
konto.1.sip_server_port = 5060

W rezultacie, dzięki wspaniałej funkcji auto-provision, jaką zastosowano we wspomnianych telefonach, nie było problemów z podłączaniem nowych urządzeń do sieci. Wszystko sprowadzało się do ustalenia adresu MAC telefonu i wygenerowania pliku konfiguracyjnego za pomocą szablonu.

Mam nadzieję, że przeczytałeś do końca i wyciągniesz korzyści z tego, co przeczytałeś.

Dziękuję za uwagę.

Źródło: www.habr.com

Dodaj komentarz