Dieses Wiki ist ein Archiv bis 2023. Das aktuelle Wiki findet sich unter https://wiki.hamburg.ccc.de/
VoIP:Vermittlung
Contents
Server-Dokumentation vermittlung.hamburg.ccc.de
Server
(Bild)
(Specs)
Ansprechpartner
Der Verteiler für allgemeine Anfragen, die mit der Telefonvermittlung zu tun haben, ist: frollein(at)vermittlung.hamburg.ccc.de (Hauke, Bayer, Pirx, Ali. Wer mag, darf sich in /etc/aliases gerne selber hinzufügen)
Mail an postmaster und faxmaster wird von Hauke gelesen.
Mail an root wird an Hauke und den Bayern verteilt (wer mag, darf sich in /etc/aliases gerne selber hinzufügen).
Sudo-Accounts haben:
Ali (ali(at)hamburg.ccc.de)
Bayer (bayer(at)hamburg.ccc.de)
Haegar (haegar(at)ccc.de)
Hauke (packbart(at)hamburg.ccc.de)
Pirx (pirx(at)ccc.de)
README.root
(wichtige Dinge, die man wissen sollte, kommen noch in diesen Abschnitt)
- Reboot: Die vermittlung hat ein Crypto-Root. Die initrd wartet auf 212.12.50.213:61391 auf eine SSL-Verbindung über die die Passphrase übertragen wird.
- Die Verbindung kann mit
openssl s_client
,socat
,telnet-ssl
o.ä. hergestellt werden - Ich verwende z.B.:
{ echo -n "Password: "; socat STDIN,echo=0 OPENSSL:212.12.50.213:61391,verify=1,cafile=/home/packbart/vermittlung.cert; }
- Die Passphrase befindet sich in der Mappe im Hängeordner
- Eine Umstellung auf SSH ist geplant, siehe http://www.debian-administration.org/articles/579
- Die Verbindung kann mit
Alt. TODO: Neues Crypto-Root beschreiben. Das will ich aber noch auf SSH umstellen.
- Reboot: Die verschlüsselte Partition /srv wird nicht automatisch gestartet
- Nach Reboot einloggen und als root
mount /srv
aufrufen - GPG-Passphrase befindet sich in der Mappe
- Danach
/etc/init.d/exim4 start
und/etc/init.d/asterisk start
aufrufen - Wenn asterisk sofort stirbt, den Restart-Zyklus mit
killall safe_asterisk
o.ä. abbrechen und Fehler suchen- z.B. in /var/log/asterisk/messages
- Evtl. noch vserver starten?
- Nach Reboot einloggen und als root
- Unregelmäßige Backups nach /backup/backup/vermittlung/
- dort liegt ein kleines mkbackup.sh, das / und /srv als .tar.bz2.gpg sichert
- Backups werden mit dem GPG Public Key von "root" verschlüsselt
- GPG-Passphrase befindet sich in der Mappe
- Backup von pubring.gpg und secring.gpg in .gnupg/
- Die Backups sollten evtl. auf einem anderen Server oder auch offsite gesichert werden
- Eine CD mit Public und Private Keys sollte in den Safe
- Austausch verschlüsselter Backups übers VPN? Hamburg sichert Hannover und Berlin, Hannover sichert Hamburg und Berlin, etc.
- Notizen zu wichtigen Wartungsmaßnahmen finden sich in /root/doc/
- doku-sync der Faxe und Voicemails auf doku.ccc.de läuft per cron um 02,23,42 Minuten
- Neue SIP-Accounts sollten in /etc/asterisk/accounts/$fnord/sip.conf angelegt werden
- Anleitung zum Anlegen neuer Accounts mit Fax und Voicemail in /root/doc/doku-sync.txt
- Sourcen zur Asterisk-Installation in /usr/src/asterisk_pbx/
- Wir benutzen die jeweils die neueste "stable"
- asterisk (http://www.asterisk.org/)
- zaptel (http://www.asterisk.org/)
- mISDN (http://www.misdn.org/)
- mISDNuser (http://www.misdn.org/)
- spandsp (http://www.soft-switch.org/)
- app_txfax, app_rxfax: http://www.soft-switch.org/downloads/snapshots/spandsp/test-apps-asterisk-1.2/
- Patches in /usr/src/asterisk_pbx/asterisk_patches/
- Installieren nach /usr/local/stow/$paketname-$version/, kein unüberlegtes "make install"
- mit stow -Dv <alt>, stow -v <neu> dann die Links aktualisieren
- Wir benutzen die jeweils die neueste "stable"
- Haegar kompiliert gelegentlich einen neuen Kernel
- mISDN- und Zaptel-Module müssen ggf. mit den neuen Kernel-Sourcen gebaut und installiert werden
Installierte Software
- Die Auswahl installierter Debian-Pakete wird immer mal mit
dpkg --get-selections
in /root/doc/dpkg-selections dokumentiert.
Telefonvermittlung
- Asterisk
- Version 1.2.X
- siehe auch: (Link auf VOIP:Konfiguration)
Update von Asterisk & Co.
Nach Kernelupdate müssen häufig zaptel und misdn neu übersetzt werden und die eine oder andere neue Version. Die einzelnen Komponenten werden nach dem Kernel in diese Reihenfolge kompiliert:
- Zaptel
- http://downloads.digium.com/pub/zaptel/
- 1.2
- Patches:
- zaptel_nodev.patch: keine Devices im Install-Verzeichnis anlegen
- Devices existieren bereits mit owner asterisk.asterisk
- Alternative Möglichkeit root.dialout, vielleicht besser?
- zaptel_nodev.patch: keine Devices im Install-Verzeichnis anlegen
- kompilieren:
nice make -j 2 KVERS=2.6.20 KSRC=/usr/src/kernel/2.6.20-vermittlung/linux DESTDIR=/usr/src/asterisk_pbx/install-zaptel all install
- Verzeichnisstruktur anpassen
- dev löschen - ist eh leer
- etc löschen - zaptel.conf existiert schon
- lib/modules/... nach /lib/modules/.../extra
mv usr/* .; rmdir usr
- installieren nach /usr/local/stow/zaptel-1.2.xx
chown -R root.root
stow -D -v zaptel-1.2.<alt>
stow -v zaptel-1.2.<neu>
- mISDN
- http://www.misdn.org/downloads/releases/
- Patches:
- misdn_kmemcompat.patch: Kompatibilität zu Kernel 2.6.20
- ohne das gibts "error: too few arguments to function 'kmem_cache_create'"
--- mISDN-1_1_7_2/drivers/isdn/hardware/mISDN/capi.c 2008-01-18 10:24:49.000000000 +0100 +++ mISDN-1_1_7_2-vermittlung/drivers/isdn/hardware/mISDN/capi.c 2008-04-19 07:52:44.000000000 +0200 @@ -2,6 +2,8 @@ * */ +#define MISDN_COMPAT_KMEMCACHE 1 + #include <linux/module.h> #include "core.h" #include "m_capi.h"
- kompilieren:
nice make -j 2 KVERS=2.6.20 LINUX=/usr/src/kernel/2.6.20-vermittlung/linux LINUX_SOURCE=/usr/src/kernel/2.6.20-vermittlung/linux DEPMOD=/bin/true MODULES_UPDATE=/bin/true UPDATE_MODULES=/bin/true INSTALL_PREFIX=/usr/src/asterisk_pbx/install-misdn all install
- Verzeichnisstruktur anpassen
- etc löschen
- lib/modules/... nach /lib/modules/.../extra
mv usr/* .; rmdir usr
- installieren nach /usr/local/stow/mISDN-1.1.xx
chown -R root.root
stow -D -v mISDN-1.1.<alt>
stow -v mISDN-1.1.<neu>
- kompilieren:
- mISDNuser
- http://www.misdn.org/downloads/releases/
- kompilieren:
nice make MISDNDIR=/usr/src/asterisk_pbx/install-misdn INSTALL_PREFIX=/usr/src/asterisk_pbx/install-misdnuser all install
- irgendwo stimmen die Abhängigkeiten im Makefile nicht, mit -j 2 braucht man zwei Durchgänge wegen "No rule to make target `lib/libtenovis.a'"
- Verzeichnisstruktur anpassen
mv usr/* .; rmdir usr
- installieren nach /usr/local/stow/mISDNuser-1.1.xx
chown -R root.root
stow -D -v mISDNuser-1.1.<alt>
stow -v mISDNuser-1.1.<neu>
- WENN man Asterisk auf einem anderen Host kompilieren möchte, ohne mISDN lokal zu installieren, muss man install-misdn/* und install-misdnuser/* in ein Verzeichnis install-misdnboth/ zusammenkopieren.
- spandsp
- http://www.soft-switch.org/downloads/spandsp/
- 0.0.4
- kompilieren:
./configure --enable-mmx --enable-sse
nice make DESTDIR=/usr/src/asterisk_pbx/install-spandsp all install
- mit -j 2 zerlegt sich manchmal der Make-Vorgang. merkwürden.
- Verzeichnisstruktur anpassen
mv usr/local/* .; rm -r usr/
- installieren nach /usr/local/stow/spandsp-0.0.xx
chown -R root.root
stow -D -v spandsp-0.0.<alt>
stow -v spandsp-0.0.<neu>
- Asterisk
- http://downloads.digium.com/pub/asterisk/
- 1.2
- Patches:
- app_fax_apps.patch: app_rxfax, app_txfax
- app_fax_makefile.patch
- asterisk_makefile_paths.patch
- chan_iax2_calleridprefix.patch
- chan_misdn_makefile.patch
- fileperms_apps.patch
- fileperms_voicemail.patch
- spandsp_header.patch
- kompilieren:
nice make -j 2 all; make DESTDIR=/usr/src/asterisk_pbx/install-asterisk install
- /etc/asterisk.makeopts:
K6OPT = -DK6OPT PROC = pentium4
- Verzeichnisstruktur anpassen
- etc löschen
- var löschen - ist alles schon vorhanden
mv usr/local/* .; rm -r usr
- bin löschen - ist eh leer
- installieren nach /usr/local/stow/asterisk-1.2.xx
chown -R root.root
stow -D -v asterisk-1.2.<alt>
stow -v asterisk-1.2.<neu>
- Verzeichnisstruktur anpassen
- chan_misdn
- das in Asterisk 1.2 enthaltene chan_misdn wirft segfaults wegen double free nach Hangup
- das tat es früher nicht. SMP-Foo?
- im aktuellen chan_misdn sind if(needs_release) um die entsprechenden Aufrufe herum
- http://www.beronet.com/downloads/chan_misdn/stable/chan_misdn.tar.gz
- kompilieren:
make MISDNUSERLIB=/usr/local/lib
- wenn man chan_misdn auf einem Host kompilieren möchte, auf dem misdn lokal nicht installiert ist, muss man das Makefile anpassen. MISDNUSERLIB wird nur halbherzig verwendet, andere Pfade sind hart vorgegeben oder benutzen defaults
- das neue chan_misdn.so installieren nach
/usr/local/stow/asterisk-1.2.<neu>/lib/asterisk/modules/chan_misdn.so
- Exim 4
- Standard Debian-Paket (exim4-daemon-heavy)
- Konfiguration in /etc/exim4/exim4.conf, keine automatische Frickelei mit conf.d
- Einsatz als Backup-MX ist in /root/doc/README.postmaster beschrieben
- ClamAV
- aus Haegars Debian-Paket (aktuell: 0.90.3-0.sdinetB1)
- Daemon lauscht auf /var/run/clamav/clamd.ctl, nicht über TCP
- clamav-freshclam ist installiert und aktualisiert regelmäßig die Signatur-Datei
- Spamassassin
- aus Haegars Debian-Paket (aktuell: 3.2.1-0.sdinetB1)
- Daemon lauscht auf /var/run/spamd/spamd.ctl, nicht über TCP
- sa-update aktualisiert täglich die Tests
Sonstiges
- ntpd
- Bezieht die Zeit von mehreren nahegelegenen Stratum-2-Servern
- Icecast
- Für Streaming aus Asterisk-Konferenzen (app_ices)
- Todo: Iceast als On-demand-Relay für Streams konfigurieren um Bandbreite zu schonen, wenn mehrere Personen demselben Stream über die Vermittlung lauschen
Todo
- Software, die evtl. noch installiert werden könnte:
- Apache mit dynamischen Geraffel - aber wozu?
- Postgres/MySQL/sonstwas als Datenbank - aber wozu?
- Hauke sagt: Dann können wir gleich eine bunte LDAP-Datenbank entwerfen und darin Mitglieder, Telefonnummern, etc. verwalten
Konfiguration
(Dinge, die nicht in README.root stehen)
Siehe VoIP:Konfiguration_neu für Asterisk-nahen Kram inkl. Fax, libtiff usw.