Ugrás a fő tartalomra

VoIP Recept

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.

/etc/mdam.conf-ban vagy /etc/aliases (root) ne felejtsük beállítani hogy raid problémáról kinek küldjön levelet

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

debian_bonding.png

ip_softswitch.png

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

Érdemes a switchek között Rapid Spanning Tree-t használni, hogy a konvergenciát lecsökkentsük. Érdemes odafigyelni hogy el ne felejtsük bekapcsolni a "portfast"-et! A két hálózati kártyát két független switch-be illik kötni. A két swich-ben legyen egységes a konfiguráció. Végül ne legyünk restek az egészet letesztelni.

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.

voip_pleda.png

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]

!!! warning "A szócikk vagy fejezet még megírásra vár"

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