Inštalácia a základné nastavenie pre spustenie SIP Proxy OpenSER
Inštalácia je možná priamo z repozitárov:
apt-get install openser
Spustenie však nie je možné, nakoľko treba ešte nasataviť koľko pamäte a ako bude openser spúšťaný, preto kým to nenastavíme systém bude hlásiť
pstest:/home/palo# /etc/init.d/openser OpenSER not yet configured. Edit /etc/default/openser first
Na nastavenie treba zeditovať /etc/default/openser a tam nastaviť:
RUN_OPENSER=yes USER=root GROUP=root MEMORY=64
Teraz môžeme server na overenie spustiť a overiť či beží:
pstest:/home/palo# /etc/init.d/openser start Starting openser: openserListening on udp: 127.0.0.1 [127.0.0.1]:5060 udp: 158.193.139.51 [158.193.139.51]:5060 tcp: 127.0.0.1 [127.0.0.1]:5060 tcp: 158.193.139.51 [158.193.139.51]:5060 Aliases: tcp: pstest:5060 tcp: pstest.ps.sip.uniza.sk:5060 tcp: localhost:5060 udp: pstest:5060 udp: pstest.ps.sip.uniza.sk:5060 udp: localhost:5060
Aby server obsluhoval danú DNS zónu je treba vložiť do konfiguráku /etc/openser/openser.cfg parameter alias menom danej domény, lebo ináč neprebehne registrácia a odpoveď servera je Too many hops
alias=MENO_VASEJ _ZONY
u mňa
alias=ps.sip.uniza.sk
a server treba reštarnúť:
pstest:/home/palo# /etc/init.d/openser restart Restarting openser: openserListening on
udp: 127.0.0.1 [127.0.0.1]:5060
udp: 158.193.139.51 [158.193.139.51]:5060
tcp: 127.0.0.1 [127.0.0.1]:5060
tcp: 158.193.139.51 [158.193.139.51]:5060
Aliases:
tcp: pstest:5060
tcp: pstest.ps.sip.uniza.sk:5060
tcp: localhost:5060
udp: pstest:5060
udp: pstest.ps.sip.uniza.sk:5060
udp: localhost:5060
*: ps.sip.uniza.sk:*
vo výpise by sa mala objaviť daná zóna, ktorú server obsluhuje. OpenSER nám beží ako služba, pri čistej inštalácii nie je problém sa registrovať na serveri (keďže autentifikácia je vypnutá).
Pokiaľ je nejaký problém s registráciou, over si či DNS odkazuje na IP adresu, ktorú si nastavil pre server pri inštalácii debianu. Pokiaľ adresa servera nesedí, zmeň ju (návod pre debian).
dig -t SRV _sip._udp.ps.sip.uniza.sk ; <<>> DiG 9.6-ESV-R1 <<>> -t SRV _sip._udp.ps.sip.uniza.sk ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8276 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;_sip._udp.ps.sip.uniza.sk. IN SRV ;; ANSWER SECTION: _sip._udp.ps.sip.uniza.sk. 3600 IN SRV 0 1 5060 pstest.ps.sip.uniza.sk. ;; AUTHORITY SECTION: ps.sip.uniza.sk. 3600 IN NS ns.kis.fri.uniza.sk. ;; ADDITIONAL SECTION: pstest.ps.sip.uniza.sk. 3600 IN A 158.193.139.51 ns.kis.fri.uniza.sk. 3600 IN A 158.193.152.2 ;; Query time: 2 msec ;; SERVER: 158.193.152.2#53(158.193.152.2) ;; WHEN: Tue Nov 2 11:04:05 2010 ;; MSG SIZE rcvd: 142
Diagnostika na strane servera cez ngrep
Kde môžeme vidieť príjem správ na danom porte.
pstest:/home/palo# ngrep port 5060 -W byline interface: eth0 (158.193.139.0/255.255.255.0)
filter: (ip or ip6) and ( port 5060 )
#
U 158.193.152.64:14879 -> 158.193.139.51:5060
REGISTER sip:ps.sip.uniza.sk SIP/2.0.
Via: SIP/2.0/UDP 192.168.10.108:61414;branch=z9hG4bK-d8754z-475f35500469b14d-1---d8754z-;rport.
Max-Forwards: 70.
Contact: <sip:palo@192.168.10.108:61414;rinstance=fd568b7c9b6cef9f>.
To: "palo"<sip:palo@ps.sip.uniza.sk>.
From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=2c799944.
Call-ID: YjNkMzhjNDIzMzMzZjFmNjVhOWQwOTI4NThiMmZlOGI..
CSeq: 1 REGISTER.
Expires: 3600.
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO.
User-Agent: eyeBeam release 1102q stamp 51814.
Content-Length: 0.
.
#
U 158.193.139.51:5060 -> 158.193.152.64:14879
SIP/2.0 200 OK.
Via: SIP/2.0/UDP 192.168.10.108:61414;branch=z9hG4bK-d8754z-475f35500469b14d-1---d8754z-;rport=14879;received=158.193.152.64.
To: "palo"<sip:palo@ps.sip.uniza.sk>;tag=329cfeaa6ded039da25ff8cbb8668bd2.93e5.
From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=2c799944.
Call-ID: YjNkMzhjNDIzMzMzZjFmNjVhOWQwOTI4NThiMmZlOGI..
CSeq: 1 REGISTER.
Contact: <sip:palo@192.168.10.108:61414;rinstance=fd568b7c9b6cef9f>;expires=3600.
Server: OpenSER (1.3.2-notls (x86_64/linux)).
Content-Length: 0.
.
Inštalácia Mysql servera a mysql modulov pre OpenSer
Inštalácia z repozitárov
pstest:/home/palo# apt-get install mysql-server openser-mysql-module
počas inštalácie a konfigurácie sa nás server opýta na heslo rep mysql admina
Teraz je potrebné nastaviť prepojenie OpenSER a DB, vykonáme zeditovaním súbora /etc/openser/openserctlrc aby zohľadňoval naše nastavenia
pstest:/home/palo# vim /etc/openser/openserctlrc
a nastavíme (odkomentujeme)
## your SIP domain SIP_DOMAIN=ps.sip.uniza.sk ## database type: MYSQL, PGSQL, DB_BERKELEY, or DBTEXT, by default none is loaded # If you want to setup a database with openserdbctl, you must at least specify # this parameter. DBENGINE=MYSQL ## database host DBHOST=localhost ## database name DBNAME=openser # database path used by dbtext or db_berkeley # DB_PATH="/usr/local/etc/openser/dbtext" ## database read/write user DBRWUSER=openser ## password for database read/write user DBRWPW="openserrw" ## database read only user DBROUSER=openserro ## password for database read only user DBROPW=openserro ## database super user DBROOTUSER="root"
# Describe what additional tables to install. Valid values for the variables # below are yes/no/ask. With ask (default) it will interactively ask the user # for an answer, while yes/no allow for automated, unassisted installs. # # If to install tables for the modules in the EXTRA_MODULES variable. INSTALL_EXTRA_TABLES=ask # If to install presence related tables. INSTALL_PRESENCE_TABLES=ask # openser standard modules STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher"
## type of aliases used: DB - database aliases; UL - usrloc aliases ## - default: none ALIASES_TYPE="DB" ## control engine: FIFO or UNIXSOCK ## - default FIFO CTLENGINE="FIFO" ## path to FIFO file OSER_FIFO="FIFO" ## OPENSER START Options ## PID file path - default is: /var/run/openser.pid PID_FILE=/var/run/openser.pid
Teraz vytvoríme tabuľku
openserdbctl create
a máme to
pstest:/home/palo# openserdbctl create MySQL password for root: INFO: test server charset INFO: creating database openser ... INFO: Core OpenSER tables succesfully created. Install presence related tables? (y/n): y INFO: creating presence tables into openser ... INFO: Presence tables succesfully created. Install tables for imc cpl siptrace domainpolicy carrierroute? (y/n): y INFO: creating extra tables into openser ... INFO: Extra tables succesfully created.
Môžme skúsiť vytvoriť nového používateľa
openserctl add palo palo%password palo@mail.com new user 'palo' added
Konfigurácia OpenSER aby použil MySQL
1. odkomentuj modul mysql.so aby ho openser začal používať
loadmodule "mysql.so"
2. Odkomentuj moduly, ktoré zabezpečujú autentifikáciu
loadmodule "auth.so" loadmodule "auth_db.so"
3. Odkomentuj parametre modulu
modparam("usrloc", "db_mode", 2) modparam("usrloc", "db_url", "mysql://openser:openserrw@localhost/openser")
a zakomentuj
#modparam("usrloc", "db_mode", 0)
a odkomentuj
modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") modparam("auth_db", "db_url","mysql://openser:openserrw@localhost/openser")
Konfigurácia auntentifikácie pri registrácií – konfigurácia Registrar.
Vložiť kód do openser.cfg alebo odkomentovať už existujúci.
Autentifikácia Proxy autentifikácie, ak volajúci je z local domény
if (!(method=="REGISTER") && from_uri==myself) { if (!proxy_authorize("", "subscriber")) { proxy_challenge("", "0"); exit; } if (!check_from()) { sl_send_reply("403","Forbidden auth ID"); exit; } consume_credentials(); # caller authenticated }
a autentifikácie pri registrácii na registrar
if (is_method("REGISTER")) { # authenticate the REGISTER requests (uncomment to enable auth) if (!www_authorize("", "subscriber")) { www_challenge("", "0"); exit; } ## if (!check_to()) { sl_send_reply("403","Forbidden auth ID"); exit; } if (!save("location")) sl_reply_error(); exit; }
Overenie odregistrovaním a zaregistrovaním klienta, ak všetko funguje login musí byť fail ak daný user nie je v DB vytvorený.
pstest:/tmp# ngrep port 5060 interface: eth0 (158.193.139.0/255.255.255.0) filter: (ip or ip6) and ( port 5060 ) # U 158.193.152.64:32043 -> 158.193.139.51:5060 REGISTER sip:ps.sip.uniza.sk SIP/2.0..Via: SIP/2.0/UDP 192.168.10.108:5676;branch=z9hG4bK-d8754z -d06a244b5b7c9554-1---d8754z-;rport..Max-Forwards: 70..Contact: <sip:palo@192.168.10.108:5676;ri nstance=3b2f2f3d4a823ee8>..To: "palo"<sip:palo@ps.sip.uniza.sk>..From: "palo"<sip:palo@ps.sip.un iza.sk>;tag=fa30a813..Call-ID: NWIxYWJlZTMwZDkxMGZlMmFmOThmM2Y0NjM3MGIwODc...CSeq: 1 REGISTER..E xpires: 3600..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO. .User-Agent: eyeBeam release 1102q stamp 51814..Content-Length: 0.... # U 158.193.139.51:5060 -> 158.193.152.64:32043 SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 192.168.10.108:5676;branch=z9hG4bK-d8754z-d06a244b5b7 c9554-1---d8754z-;rport=32043;received=158.193.152.64..To: "palo"<sip:palo@ps.sip.uniza.sk>;tag= 329cfeaa6ded039da25ff8cbb8668bd2.4ccb..From: "palo"<sip:palo@ps.sip.uniza.sk>;tag=fa30a813..Call -ID: NWIxYWJlZTMwZDkxMGZlMmFmOThmM2Y0NjM3MGIwODc...CSeq: 1 REGISTER..WWW-Authenticate: Digest re alm="ps.sip.uniza.sk", nonce="4ccff2fe4f2758a37bc6b0364885be9ee1e93499"..Server: OpenSER (1.3.2- notls (x86_64/linux))..Content-Length: 0....
Pridanie nového používateľa
openserctl add temp temp temp@temp.sk new user 'temp' added
ak sa do SIP UA nastavia dané hodnoty a doméne účtu, server nás autentifikuje. Cez ngrep alebo log daného SIP UA (napr. Xlite) uvidíme výmenu popísanú v call flow diagrame pre registráciu.