VoIP állomány – Provisioning

Bevezetés

Egyszer a vezetőség jóváhagyott egy kísérletet az IP telefonálás bevezetésére a hivatalunkban. Mivel a tapasztalatom ezen a területen minimális volt, a feladat óriási érdeklődést keltett bennem, és elmerültem a kérdés különböző aspektusainak tanulmányozásában. A tanulmány végén úgy döntöttem, hogy megosztom az újonnan szerzett tudásomat – abban a reményben, hogy mások számára hasznos lehet. Szóval...

Forrásadatok

Az IP-ATC-ként az Asterisk lett kiválasztva és telepítve. A telefonpark Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400 és Dlink DPH-150S(E)/F3, Yealink T19 és T21 készülékekből áll. Ez a sokszínűség annak köszönhető, hogy a kísérlet keretében úgy döntöttünk, hogy mindent egy kicsit kipróbálunk, hogy véleményt alkothassunk az ár/minőség/kényelem arányáról.

Feladat

Makszimálisan egyszerűsíteni és egységesíteni a új készülékek beállítási folyamatát. Minden telefonnak szinkronizálva kell lennie időben, rendelkeznie kell egy telefonkönyvvel, amelyet a a szerver feltöltenek, és biztosítaniuk kell a beállításokhoz való hozzáférést az adminisztrátor számára.

Ennek a feladatnak a megoldása egyszerű – megvalósítani a telefonok automatikus beállítását, a közismert Provisioning-et. Valójában erről a csodás funkcióról fog szólni a beszámolóm.

tftpd, dhcpd beállítása

A telefonok beállításainak biztosításához a tftp-t választottam mint egy univerzális lehetőséget, amelyet minden platform támogat, könnyen beállítható és kezelhető.

A tftp specifikus beállítására nem volt szükség. Telepítettem a gyári tftpd-t, és minden szükséges fájlt elhelyeztem a gyökérkönyvtárában.
A beállítási fájlokat gyártó szerint helyeztem el a könyvtárakba. Igaz, a Cisco készülék nem ment be a saját mappájába, ezért a gyökérkönyvtárban kellett tárolnom.

Annak érdekében, hogy megmutassam a telefonoknak a tftp szerver helyét, az option-66-ot használtam. Ezen kívül az egyes gyártók szerint különböző osztályokra osztottam őket. Minden osztály saját IP-címtartományt és egyedi mappát kapott a konfigurációs fájlokhoz. Érdemes megjegyezni, hogy a D-link készülékek MAC-címek alapján lettek számítva, mivel a gyártóra vonatkozó információkat nem adták meg a dhcp-kérdésben.

dhcpd.conf részlet

# Указываем необходимые опции 
option option-66 code 66 = text;

class "panasonic" {
	match if substring (option vendor-class-identifier,0,9) = "Panasonic";
	option option-66 "10.1.1.50/panasonic/";
}
class "cisco" {
	match if substring (option vendor-class-identifier,0,36) = "Cisco Systems, Inc. IP Phone CP-7906";
	option option-66 "10.1.1.50/cisco/";
}

class "grandstream" {
 match if substring (option vendor-class-identifier,0,11) = "Grandstream";
 option option-66 "10.1.1.50/grandstream/";
}

class "dlink" {
	match if (binary-to-ascii (16,8,":",substring(hardware,1,4)) = "c8:d3:a3:8d") or
	(binary-to-ascii (16,8,":",substring(hardware,1,4)) = "90:94:e4:72");
	option option-66 "10.1.1.50/dlink/";
}

class "yealink" {
                match if substring (option vendor-class-identifier,0,7) = "Yealink";
                option option-66 "10.1.1.50/yealink/";
        }

A telefonokat kényszerűen ki kellett zárnom a közös poolból. Máskülönben sehogy sem akartak elmenni a saját „béka mappájukba”.
A subnet beállítások példája

alhálózat 10.1.1.0 hálózati maszk 255.255.255.0 {
        opció útválasztók 10.1.1.1;
        tartomány {
                tagadja "cisco";
                tagadja "panasonic";
                tagadja "dlink";
                tartomány 10.1.1.230 10.1.1.240;
        }
        tartomány {
                engedélyez tagokat a "cisco";
                tartomány 10.1.1.65 10.1.1.69;
        }
        tartomány {
                engedélyez tagokat a "panasonic";
                tartomány 10.1.1.60 10.1.1.64;
        }
        tartomány {
                engedélyez tagokat a "dlink";
                tartomány 10.1.1.55 10.1.1.59;
        }
}

A minden érintett szolgáltatás újraindítása után a telefonok magabiztosan irányozták beállításaikat a számukra kijelölt tftp-szerverre. Csak annyit kellett ott elhelyezni.

Cisco 7906

Ezek a készülékek gyári csomagolásban kerültek hozzám. Újra kellett programoznom őket, hogy működjenek az asterisk-szel. De ez egy külön történet. Az adott esetben a készülék beállításához az utasítások szerint létrehoztam a tftp-szerver gyökerében a SEPAABBCCDDEEFF.cnf.xml fájlt. Ahol AABBCCDDEEFF a készülék MAC-címe.

A Cisco telefonok beállításáról már többször írtak, ezért egyszerűen csak megosztom a működő beállítási fájlt.
Beállítások a cisco számára

true
 SIP
 root
 ADMIN_PWD

 
 D-M-Y
 Közép-csendes-óceáni időszámítás
     
         
             10.1.1.4
              Unicast
          
     
 

   
 10.1.1.50
 
 2000
 5060
 5061
 
 10.1.1.50
   
 

 Disable


120
 

 
 true
 x-cisco-serviceuri-cfwdall
 x-cisco-serviceuri-pickup
 x-cisco-serviceuri-opickup
 x-cisco-serviceuri-gpickup
 x-cisco-serviceuri-meetme
 x-cisco-serviceuri-abbrdial
 false
 2
 true
 true
 2
 2
 0
 true
 false
 
 
 6
 10
 180
 3600
 5
 120
 120
 5
 500
 4000
 70
 true
 None
 
1
 false
 true
 false
 false
 none
 101
 3
avt
 3
 false
 false
 Cisco Phone
 2
 false
 15000
10
 true
 false
 16384
 32766

 
 9
 10.1.1.50
 5060
  2 
 3
 false
 3
 
 4
 5
 
 true
 true
 false
 true
 

 Felhasználó #103
 103
 103
 SIP_PWD
 
 
$num
5060
 184
 0
 dialplan.xml
 

 *0#
 true
 2
 


 false
 false
 1
 0
 1
 0
 0
 0
 1
 0
 1,7
 09:00
 12:00
 01:00
 1
 2
 10.1.1.50
 0
 100
 50
 
 0
 0
 5
 1
 10.1.1.50
 0
 0
 0
 0
 0
 0
 1
 1
 
1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37

 Orosz_Orosz_Federáció
 hu_HU
 
 utf-8
 

 
 
 
 
1
 0
 
 http://10.1.1.50/provisioning/cisco-services.xml
 
 
 
 
 http://10.1.1.50/provisioning/cisco-services.xml
 96
 0
 96
 2
 0
 0
 
 3804
 <!-- 10.1.1.50 -->
  

 false
 1

D-Link DPH-150S/F3

Ha még csak most tervezi, hogy megvásárolja a sorozat telefonját, legyen óvatos, az automatikus beállítás csak a 150S/F3 készülékeknél támogatott. A nálam lévő 150S/F2 típusnál ezt a funkciót nem találtam.

A konfigurációs fájl lehet xml formátumban vagy egyszerű szöveges fájlban. Az xml fájl esetében van egy követelmény: a címkének a sor elején kell lennie, különben a parser figyelmen kívül hagyja, és a megfelelő paraméter értéke nem változik.

A telefon beállításához két fájlt használnak. f0D00580000.cfg — az összes telefon beállításainak tárolására, és 00112233aabb.cfg (MAC-cím kisbetűs) az egyedi beállításokhoz. Az egyedi beállítások természetesen nagyobb prioritással bírnak.

A teljes beállítási lista több mint ezer sort számlál, hogy ne terhelje a cikket, a minimálisan elegendő beállítást írom le.

Kötelező a gyökércsomópont VOIP_CONFIG_FILE és benne található csomópont version. A beállítások csak akkor lépnek életbe, ha a fájl verziója magasabb, mint a készülék jelenlegi beállításainak verziója. Ezt az értéket a telefon webes felületén a karbantartás (rendszerkezelés) részében lehet megtudni. Az alapértelmezett beállításokkal rendelkező telefonok esetén ez mindkét esetben 2.0002. Ezen kívül az egyedi fájl verziójának magasabbnak kell lennie, mint a közös fájl verziója.

Először bemutatom a közös konfigurációs fájlt minden telefonhoz. Valójában ez tárolja az összes beállítást, az egyedi fájl csak a telefonszámért és a képernyőn megjelenő feliratért felelős.

Az alábbi két blokkban a időzóna és időszinkronizálás paraméterei, az RTP kezdeti portja, valamint a WAN és LAN portok közötti hálózati híd aktiválása van beállítva.

1. számú fragmentum

DHCP
2
1
1
0
VOIP
10000
200
10.1.1.4
1


0
60
12
1500


1
1

A konfigurációs paraméterek nevei önmagukban is „beszédesek”, így nem szükséges részletesen leírni őket.
SIP egy vonalhoz

5060


SIP1
10.1.1.50
5060
3600
1
10.1.1.50
1
0
G711A,G711U,G722

Távoli irányítás beállításai

23
80
0
443
1
0



Item1
10.1.1.152
10.1.1.160




Account1
admin
ADMIN_PWD
10


Account2
guest
GUEST_PWD
5

Telefonbeállítások

123
123

0
112
Cég
5
1
30
0

1
0,,1
0
0
1


XML-PBook1
Telefonkönyv
http://10.1.1.50/provisioning/dlink-phonebook.xml
:
0
0


barát,otthon,munka,üzlet,osztálytárs,munkatárs

Minden egyéb beállítás alapértelmezetten marad. Most bármely Dlink telefon, amely csatlakozik a hálózatra, azonnal átveszi a közös beállításokat. Az egyedi beállításokhoz külön fájlra van szükség, amelyben csupán a szükséges beállításokat kell megadni az egyes felhasználók számára.
felhasználói beállítások

2.0006



SIP1
Felhasználó #117
117
5060
117
SIP_PWD
3600
1
5060
117
SIP_PWD

Panasonic UT-KX123B

Ezek az eszközök más módon kapják meg a beállításokat. A konfiguráció szöveges fájlokban tárolódik. A konfigurációs fájl maximális mérete 120 KB. A fájlok számától függetlenül a fájlok összes mérete nem haladhatja meg a 120 KB-ot.
A konfigurációs fájl egy sorokból álló készlet, amelyekre az alábbi feltételek vonatkoznak:

  • Elsőként mindig egy megjegyzés sor áll, amely a következő karakterláncot tartalmazza (44 bájt):
    # Panasonic SIP Phone Standard Format File #
    A karakterlánc hexadecimális ábrázolása:
    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 6C 65 20 23
    A telepített karakterlánc véletlenszerű módosításának megakadályozása érdekében ajánlott a konfigurációs fájlt az alábbi sorral kezdeni:
    # Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!
  • A konfigurációs fájloknak üres sorral kell végződniük.
  • Minden sor végén a "" sorozatnak kell szerepelnie.
  • A sor maximális hossza 537 bájt, beleértve a "" sorozatot.
  • A következő sorokat figyelmen kívül hagyják:
    • a 537 bájtot meghaladó sorok;
    • üres sorok;
    • a "#" karakterrel kezdődő megjegyzések;
  • Minden paraméter sorának a következő formában kell szerepelnie: XXX="yyy" (XXX: a paraméter neve, yyy: értéke). Az értéknek idézőjelekbe kell kerülnie.
  • A paraméterek sorainak több sorra való felbontása nem megengedett. Ez a konfigurációs fájl feldolgozási hibájához vezet, ami a kezdeményezés leállását eredményezi.
  • Néhány paraméter értékeit külön kell megadni minden vonalhoz. Az "_1" végződésű paraméter az 1. vonalra vonatkozik; az "_2" a 2. vonalra, stb.
  • A paraméter nevének maximális hossza 32 karakter.
  • A paraméter értékének maximális hossza 500 karakter, kivéve az idézőjelek.
  • A sorokban a szóközök nem megengedettek, kivéve, ha az érték szóköz karaktert tartalmaz.
  • Egyes paraméterek értékeit meg lehet adni "üresen", hogy üres paraméterértéket állítsunk be.
  • A paraméterek megadása nem követel meg bizonyos sorrendet.
  • Ha ugyanazt a paramétert többször is megadjuk a konfigurációs fájlban, az elsőként megadott érték érvényesül.

Ez a komoly követelményrendszer a konfigurációs fájlra őszintén szomorít. Véleményem szerint az interakciós megvalósítás a szerverrel Panasonic telefonok kezelésével rendkívül kényelmetlen. E tekintetben a telefon jelentősen lemarad a többiekhez képest.
Készülék első bekapcsolásakor (vagy gyári beállítások visszaállításakor) megpróbálja betölteni az úgynevezett termék fájlt (jelen esetben ez a KX-UT123RU.cfg), amelynek tartalmaznia kell a többi konfigurációs fájl elérési útját.
Termék fájl# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!

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"

Ezt követően a telefon megjelenít egy üzenetet, amely a készülék előkészítésének sikerességéről tájékoztat, és vár, amíg újra nem indítják. Az újraindítás után elkezdi feldolgozni a megfelelő konfigurációs fájlokat.

A master.cfg fájlban ajánlott a minden telefonra vonatkozó általános beállítások megadása. Ahogyan a Dlink esetében, csak néhány paramétert említek. A többi paraméter nevét és értékét a gyártó weboldalán található dokumentációban lehet megtalálni.
master.cfg############################################################
# System Settings #
############################################################
## Login Account Settings
ADMIN_ID="admin"
ADMIN_PASS="ADMIN_PWD"
USER_ID="user"
USER_PASS="USER_PWD"

## System Time Settings
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=""

## Syslog Settings
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"

## Provisioning Settings
OPTION66_ENABLE="Y"
OPTION66_REBOOT="N"
PROVISION_ENABLE="Y"
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"

############################################################
# Network Settings #
############################################################
## IP Settings
CONNECTION_TYPE="1"
HOST_NAME="UT123"
DHCP_DNS_ENABLE="Y"
STATIC_IP_ADDRESS=""
STATIC_SUBNET=""
STATIC_GATEWAY=""
USER_DNS1_ADDR=""
USER_DNS2_ADDR=""

## DNS Settings
DNS_QRY_PRLL="Y"
DNS_PRIORITY="N"
DNS1_ADDR="10.1.1.1"
DNS2_ADDR=""

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

## XML Application Settings
XML_HTTPD_PORT="6666"
XMLAPP_ENABLE="Y"
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=""

A készülék egyedi konfigurációs fájljában hagyományosan csak az előfizetői beállítások maradnak.
aabbccddeeff.cfgDISPLAY_NAME_1=„Felhasználó #168”

PHONE_NUMBER_1=„168”
SIP_URI_1=„168”
LINE_ENABLE_1=„Engedélyezve”
PROFILE_ENABLE_1=„Engedélyezve”
SIP_AUTHID_1=„168”
SIP_PASS_1=„SIP_PWD”

Grandstream GXP-1400

Ezeknek a telefonoknak a beállításai egy xml fájlban tárolódnak, amelynek neve cfg{mac}.xml, vagy egy sima szöveges fájlban cfg{mac} néven. Ez a telefon csak egyedi konfigurációs fájlt kér, így nem lehet a beállításokat egy közös fájlba kiemelni. A Grandstream-ek beállításának egy másik sajátossága a paraméterek elnevezése. Mindegyik paraméter számozva van és P###-ként van jelölve. például:

P1650 – a telefon kezelőfelületéért felel (0 – HTTPS, 1 – HTTP)
P47 – a SIP szerver címe a csatlakozáshoz.

Ha a konfiguráció szöveges fájlban van tárolva, a paramétereknek nincs szükségük csoportosításra és bármilyen sorrendben megadhatók. A # jellel kezdődő sorokat kommentárként kezeljük.

Ha a beállítások xml formátumban vannak, a következő struktúrában kell szerepelniük: <config version=„1”>, amely viszont be kell, hogy legyen ágyazva <gs_provision version=„1”> elembe. Minden paramétert a megfelelő tagekben kell rögzíteni, a paraméter értéke a tag belsejében.
Beállítási példa

<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
  <config version="1">
    <P271>1<\/P271>
    <!-- Fiók neve. Nem lehet üres. -->
    <P270>109<\/P270>
    <!-- SIP Felhasználói azonosító -->
    <P35>109<\/P35>
    <!-- Azonosító -->
    <P36>109<\/P36>
    <!-- Azonosító jelszó -->
    <P34>SIP_PWD<\/P34>
    <!-- Megjelenítési név (John Doe) -->
    <P3>Felhasználó# 109<\/P3>
<!-- Közös beállítások -->
        <P207>10.1.1.50<\/P207>
        <P208>2<\/P208>
   <P47>10.1.1.50<\/P47><!-- 1. sor SIP szerver -->
   <P401>0<\/P401><!-- 2. sor tiltsa le -->
   <P2>ADMIN_PWD<\/P2><!-- admin jelszó -->
   <P196>USER_PWD<\/P196><!-- felhasználói web konzol pwd -->
   <P1362>hu<\/P1362><!-- megjelenítő nyelv -->
        <P212>0<\/P212><!-- Frissítés TFTP-ből -->
        <P192>10.1.1.50/grandstream<\/P192>
   <P1357>1<\/P1357><!-- zárolja a beállítást telefonon (csak alap) -->
   <P64>TZc-11<\/P64><!-- időzóna -->
   <P30>10.1.1.4<\/P30><!-- NTP-szerver -->
        <P330>1<\/P330><!-- PB letöltés HTTP-ből -->
        <P331>http:\/\/10.1.1.50\/provisioning\/grandstream<\/P331><!-- telefonkönyv alap URL -->
        <P333>30<\/P333><!-- Automatikus PB frissítés 30 percenként -->
  <\/config>
<\/gs_provision>

Yealink T19 és T21

Ezek a modellek lehetővé teszik az egyedi konfigurációs fájlok használatát az eszközökhöz, valamint a modellek közötti közös fájlokat. Az én esetemben a közös paramétereket az y000000000031.cfg és y000000000034.cfg fájlokban kellett elhelyeznem. Az egyedi konfigurációs fájlok neve a MAC-cím szerint van: 00112233aabb.cfg.

A Yealink beállítások szöveges formátumban tárolódnak. Az egyetlen kötelező követelmény az, hogy a fájl első sorában szerepeljen a verzió, a következő formátumban: #!version:1.0.0.1.

Minden paraméter az alábbi formátumban van megadva: paraméter = érték. A megjegyzések a "#" jelzettel kezdődnek. A paraméterek neveit és azok értékeit a gyártó weboldalán található dokumentációban lehet megtalálni.
általános beállítások#!version:1.0.0.1
#Configure the WAN port type; 0-DHCP (default), 1-PPPoE, 2-Static IP Address;
network.internet_port.type = 0
#Configure the PC port type; 0-Router, 1-Bridge (default);
network.bridge_mode = 1
#Configure the access type of the web server; 0-Disabled, 1-HTTP & HTTPS(default), 2-HTTP Only, 3-HTTPS Only;
network.web_server_type = 3
#Configure the maximum local RTP port. It ranges from 0 to 65535, the default value is 11800.
network.port.max_rtpport = 10100
#Configure the minimum local RTP port. It ranges from 0 to 65535, the default value is 11780.
network.port.min_rtpport = 10000
security.user_name.admin = root
security.user_password = root:ADMIN_PWD
security.user_name.user = user
security.user_password = user:USER_PWD
#Specify the web language, the valid values are: English, Chinese_S, Turkish, Portuguese, Spanish, Italian, French, Russian, Deutsch and Czech.
lang.wui = orosz
#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.
lang.gui = orosz
#Configure the time zone and time zone name. The time zone ranges from -11 to +12, the default value is +8.
#The default time zone name is China(Beijing).
#Refer to Yealink IP Phones User Guide for more available time zones and time zone names.
local_time.time_zone = +11
local_time.time_zone_name = Vladivostok
#Configure the domain name or the IP address of the NTP server. The default value is cn.pool.ntp.org.
local_time.ntp_server1 = 10.1.1.4
#Configure the logo mode of the LCD screen; 0-Disabled (default), 1-System logo, 2-Custom logo;
phone_setting.lcd_logo.mode = 1
#Configure the access URL and dispaly name of the remote phonebook. X ranges from 1 to 5.
remote_phonebook.data.1.url = 10.1.1.50/provisioning/yealink-phonebook.xml
remote_phonebook.data.1.name = Telefonkönyv
features.remote_phonebook.flash_time = 3600

egyedi beállítások#!version:1.0.0.1
#Enable or disable the account1, 0-Disabled (default), 1-Enabled;
account.1.enable = 1
#Configure the label displayed on the LCD screen for account1.
account.1.label = Teszt telefon
#Configure the display name of account1.
account.1.display_name = Felhasználó 998
#Configure the username and password for register authentication.
account.1.auth_name = 998
account.1.password = 998
#Configure the register user name.
account.1.user_name = 998
#Configure the SIP server address.
account.1.sip_server_host = 10.1.1.50
#Specify the port for the SIP server. The default value is 5060.
account.1.sip_server_port = 5060

Végül, a szuper auto-provision funkciónak köszönhetően, amelyet az említett telefonok biztosítanak, nem voltak problémák az új készülékek hálózatra csatlakozásával. Az egész azzal zárult, hogy meg kellett tudni a telefon MAC-címét, és konfigurációs fájlt kellett generálni a sablon szerint.

Remélem, hogy végigolvasta a szöveget, és hasznot húzott belőle.

Köszönöm a figyelmet.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster