VoIP Recept

Innen: KIFÜ Wiki
A lap korábbi változatát látod, amilyen Misi(AT)niif.hu (vitalap | szerkesztései) 2012. április 16., 13:59-kor történt szerkesztése után volt. (Új oldal, tartalma: „= Egy lehetséges Asterisk recept, avagy hozzávalók sok személyre = == Debain Alaprendszer == Először is rakjunk fel egy Debian (Lenny) alap install ;Érdemes megfo…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Egy lehetséges Asterisk recept, avagy hozzávalók sok személyre

Debain Alaprendszer

Először is rakjunk fel egy Debian (Lenny) alap install

Érdemes megfontolni a HW környezet kialakításánál
  • redundáns tápegység
  • két hálózati kártya (redundáns hálózati kapcsolat miatt)
  • két merevlemez (raid miatt)

Javasolt Particionálás (RAID 1 + LVM)

két partíció(software raid):

  1. az egyik a /boot-nak 300-400M
  2. a másik raid azaz többi pedig az LVM és aztán ezt már lehet tovább szabdalni.... erre lehet tenni a swap-et.


Alap install után érdemes a nem kellő csomagokat törölni és netfilter(iptables)-el megvédeni a gépet

  • NETFILTER(iptables) védelmét a számítógépnek mindenki alakítsa ki saját szája íze szerint.
  • ami nem kell azt szedjük ne hallgasson semmi feleslegesen

például

aptitude purge pidentd,nfs-common,portmap
aptitude install ssh

Redundáns hálózat azaz hálózati interface bonding beállítása

 

 

Csomagok installálása
aptitude install vlan ifenslave-2.6
cat > /etc/modprobe.d/bonding
alias bond0 bonding
options bonding mode=active-backup updelay=4000 downdelay=1 miimon=10 primary=eth0
Az /etc/network/interfaces file-t ezen minta alapján írjuk át.
Itt több vlan-ra van a példa de értelemszerűen, ha csak egy vlan van akkor csak a 10-es VLAN-t kell csak átírni a többit lehet törölni. Azért érdemes így csinálni még akkor is ha csak egy VLAN-unk van, mert bármikor később a több VLAN kezelése hasznos lehet.
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
         up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12
        netmask 255.255.0.0
        network 10.10.0.0
        broadcast 10.10.255.255
        vlan-raw-device bond0
        gateway 10.10.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-search voip.niif.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12
        netmask 255.255.0.0
        network 10.20.0.0
        broadcast 10.20.255.255
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12
        netmask 255.255.0.0
        network 10.30.0.0
        broadcast 10.30.255.255
        vlan-raw-device bond0
Ha a Másik oldal cisco eszköz akkor egy lehetséges minta konfiguráció.
interface GigabitEthernet1/2
 description eht0
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport mode trunk
 no ip address
 no cdp enable
 spanning-tree portfast trunk


Több ip cím felhúzása egy interface-re

Több ip címre STUN protokoll miatt mindenképp szükségünk lesz. Az STUN-hoz 2 darab ipv4 cím szükséges! Ha ezentúl külön ip címre akarjuk rakni a szolgáltatást akkor ezzel is számolnunk kell.

auto eth0
iface eth0 inet static
        address 19.111.158.110
        netmask 255.255.255.0
        broadcast 19.111.158.255
        gateway 19.111.158.1
        post-up for last in `seq 111 114`; do ip addr add 19.111.158.$last/32 dev $IFACE; done || true

Ha már van alap OS-ünk redundáns tápunk/merevlemez/hálózatunk és ha mindezt le is teszteltük, akkor bele is kezdhetünk az érdemi telepítésekbe.

Ajánlott csomagok telepítése

aptitude update
aptitude upgrade
aptitude install atftpd dhcp3-server mysql-server mysql-client ntp
aptitude install asterisk asterisk-config asterisk-mp3 asterisk-sounds-extra asterisk-sounds-main asterisk-mysql
dahdi dahdi_dummy

A dahdi_dummy-ra az időzítésekhez lehet szükség, bár vannak 1.6.x asteriskben több mindent tud időzítőként használni. Timer source-ra főleg a MeetMe alkalmazásnak és az IAX protokolnak van szüksége.

aptitude install dahdi-source
m-a a-i dahdi

További csomagok

Természetesen még ízlés szerint telpíthető
monitorozáshoz: nagios-nrpe-server,munin-node,munin-plugins-extra
mentéshez: bacula-fd ajánlott

NTP beállítása

Ezt a sort a /etc/ntp.conf-ban

#server ntp.your-provider.example

cseréljük le kedvenc lokális ntp szerverünkre. pl.

server 172.20.0.1

MySQL root jelszó beállítása

mysql root jelszó megváltoztatása

 mysqladmin -u root -p password titok

A kényelem miatt, hogy ne kelljen begépelnünk a a jelszót:

cat > /root/.my.cnf
[client]
user=root
password=titok

Hálózati kialakítás / konfiguráció

REINVITE vagy No REINVITE ez itt a kérdés? Mindkettőnek megvannak az előnyei és hátrányai.

Én a konfigurációkban mindenütt a 172.20.0.0/16 tartományt használom, de mindenkit bátorítanék aki csak megteheti, hogy használjon nyilvános címeket. Szűréssel könnyen csökkenthető a támadási felület és a media közvetlenül tud folyni. Azért is hogy maga a media reinvite esetén ne menjen át szükségszerűen semmilyen NAT-on, vagy RTP media proxy-n ami bottleneck lehet és ha kiesik akkor visz magával a hívást. Persze a másik oldal, hogy a bottleneck csökkenti a támadási felületet. De a támadási felület jól konfigurált router ACL-el is elérhető, sőt ezt javaslom.

A példa itt most egy egyszerű sin topológiát használ.

 

DHCP szerver

A DHCP szerver default configjához képest ezeket kell értelem szerűen megváltoztatni illetve a subnet részt hozzáadni.

option domain-name "tartomány.hu";
option domain-name-servers 193.6.10.1, 193.225.13.113;

authoritative;

subnet 172.20.0.0 netmask 255.255.0.0 {
  range 172.20.0.10 172.20.255.254;
  option routers 172.20.0.1;
}

TFTP

A tftp a telefonok frissítésére és a konfigurációjuknak a mentésére szolgál. Az atftpd TFTP szerver a /var/lib/tftpboot könyvtárból szolgál ki, így minden konfigurációs állományt és firmware-t ebbe a jegyzékbe másolunk majd be. Érdemes a NETFILTER/(iptables) szabályokat úgy készíteni, hogy csak a helyi telefonok férhessenek hozzá.

Asterisk konfiguráció

Kis Takarítás

Először is mozgassuk el az összes példa konfigurációs file-t a saját home könyvtárunkba, és utána kezdjük el a minták fokozatos visszamásolgatását és átírását.

másoljuk vissza a következő fileokat és a manager.d könyvtárt
agents.conf  asterisk.conf  extconfig.conf   features.conf  iax.conf	  modules.conf	    rtp.conf	     udptl.conf
alsa.conf    cdr.conf	    extensions.ael   followme.conf  manager.conf  musiconhold.conf  sip.conf	     users.conf
amd.conf     enum.conf	    extensions.conf  http.conf	    manager.d	  res_snmp.conf     sip_notify.conf  voicemail.conf
cp /usr/share/doc/asterisk-mysql/examples/cdr_mysql.conf.sample /etc/asterisk/cdr_mysql.conf
cp /usr/share/doc/asterisk-mysql/examples/res_mysql.conf.sample /etc/asterisk/res_mysql.conf

modules.conf

Ezután egy kis nyesegetéssel ilyen csinos formára hozzuk a modules.conf-ot

;
; Asterisk configuration file
;
; Module Loader configuration file
;

[modules]
autoload=yes

;load
load => res_musiconhold.so


;noload

;chan
noload => chan_alsa.so
noload => chan_oss.so
noload => chan_capi.so
noload => chan_skinny.so
noload => chan_zap.so
noload => chan_mgcp.so
noload => chan_vpb.so
noload => chan_phone.so
noload => chan_gtalk.so
noload => chan_modem.so
noload => chan_modem_aopen.so
noload => chan_modem_bestdata.so
noload => chan_modem_i4l.so
;res
noload => res_jabber.so
noload => res_odbc.so
noload => res_smdi.so
noload => res_config_odbc.so
noload => res_config_pgsql.so
;func
noload => func_odbc.so
;pbx
noload => pbx_dundi.so
noload => pbx_gtkconsole.so
noload => pbx_kdeconsole.so
;;cdr
noload => cdr_sqlite.so
noload => cdr_custom.so
noload => cdr_manager.so 
noload => cdr_pgsql.so
;app
noload => app_festival.so
noload => app_zapras.so
noload => app_zapbarge.so
noload => app_zapscan.so
noload => app_talkdetect.so
noload => app_alarmreceiver.so
noload => app_image.so 
noload => app_directory_odbc.so
noload => app_voicemail_odbc.so
noload => app_voicemail_imap.so
noload => app_intercom.so
; Module names listed in "global" section will have symbols globally
; exported to modules loaded after them.
;
[global]


Indication

indication.conf
 
[general]
country=hu

[hu]
description = Hungary
ringcadance = 1000,4000
dial = 425
busy = 425/500,0/500
;ring = 440+480/2000,0/4000 ; is what I heard on an ISDN line... looks like NA ring.
ring = 440/1000,0/4000 ; is what I heard via an analogue GSM adaptor...
congestion = 425/300,0/300
callwaiting = 425/40,0/1960
; Dialrecall not used in Hungary, use standard (using UK standard)
dialrecall = 350+440
; Record tone is not used in Hungary, use busy tone
record = 425/250,0/250
info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
Forrás
http://www.voip-info.org/wiki/view/Asterisk+indications+Hungary

Teszt eszközök

aptitude install sip-tester sipsak sofia-sip-bin

SIPP

xml alapú config sip teszt eseteket lehet vele készíteni és tesztelni

sipsak

egyszerű sip teszt tool hívás tesztre, options üzenet küldésére

sofia sip

NOKIA sip stack LGPL pl. dns feloldást lehet tesztelni vele /usr/bin/addrinfo /usr/bin/localinfo /usr/bin/sip-date /usr/bin/sip-dig /usr/bin/sip-options /usr/bin/stunc