====== Kamailio SIP Server ====== Installation mit MariaDB-Datenbank apt-get install kamailio kamailio-tls-modules kamailio-mysql-modules kamailio-presence-modules #!define WITH_MYSQL #!define WITH_AUTH #!define WITH_TLS #!define WITH_PRESENCE #!define WITH_USRLOCDB alias="sip.mydomain.com" listen=udp:192.168.0.2:5060 listen=tcp:192.168.0.2:5061 SIP_DOMAIN=mydomain.com DBENGINE=MYSQL DBHOST=localhost DBNAME=kamailio DBRWUSER="kamailio" DBRWPW="********" DBROUSER="kamailioro" DBROPW="******" Für den Fall daß der RPTProxy verwendet werden soll, noch folgendes ergänzen: #!define WITH_NAT Datenbank erstellen mit kamdbctl create ===== Logging ===== Ergänzung in ''rsyslog.conf'' # Kamailio local0.* -/var/log/kamailio.log /var/log/kamailio*.log { daily missingok rotate 14 compress delaycompress create 0644 root adm postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } ===== TLS ===== Zertifikat normal mit Let's Encrypt anlegen. Anschließend in die Konfiguration eintragen: method = TLSv1.2+ verify_certificate = yes require_certificate = yes private_key = /etc/ssl/private/sip.key certificate = /etc/ssl/certs/sip.crt ===== Datenbank ===== Zugangsdaten in ''kamctlrc'' eintragen. ===== RTP-Proxy ===== Es existiert kein Debian-Paket mehr. Erstellen aus den Quellen: apt-get install libssl-dev libsrtp2-dev cd /usr/local/src git clone -b master https://github.com/sippy/rtpproxy.git git -C rtpproxy submodule update --init --recursive cd rtpproxy git checkout v3.0.1 ./configure make clean all make install ++++ Init-Script | #! /bin/sh ### BEGIN INIT INFO # Provides: rtpproxy # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: RTP Proxy # Description: Relay for VoIP media streams ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=rtpproxy DESC="RTP relay" DAEMON=/usr/local/bin/$NAME USER=$NAME GROUP=$USER PIDFILE="/var/run/$NAME/$NAME.pid" PIDFILE_DIR=`dirname $PIDFILE` CONTROL_SOCK="unix:$PIDFILE_DIR/$NAME.sock" test -x $DAEMON || exit 0 umask 002 . /lib/lsb/init-functions # Include defaults if available if [ -f /etc/default/$NAME ] ; then . /etc/default/$NAME fi DAEMON_OPTS="-s $CONTROL_SOCK -u $USER:$GROUP -p $PIDFILE $EXTRA_OPTS" if [ ! -d "$PIDFILE_DIR" ];then mkdir "$PIDFILE_DIR" chown $USER:$GROUP "$PIDFILE_DIR" fi set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON echo "$NAME." ;; status) echo -n "Status $DESC: " if [ ! -e "$PIDFILE" ]; then echo "$NAME is NOT running. No PID-File." exit 7 fi PID=$(cat $PIDFILE) kill -0 $PID rc=$? # Check exit code if [ "$rc" -ne 0 ] then echo "$NAME is NOT running." exit 7 else echo "$NAME is running with PID: $PID" fi ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|status|restart|force-reload}" >&2 exit 1 ;; esac exit 0 ++++ Einstellungen für das Init-Skript USER=kamailio GROUP=kamailio CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock" EXTRA_OPTS="-l -d INFO" Die Kommunikation lassen wir über einen Unix-Socket stattfinden und nicht wie im Standard über UDP. Dafür ist noch eine Anpassung in Kamailio erforderlich: #!define WITH_NAT [...] modparam("rtpproxy", "rtpproxy_sock", "unix:/var/run/rtpproxy/rtpproxy.sock") ===== Befehle ===== Anzeige der angelegten Geräte kamctl db show subscriber Anzeige der angemeldeten Geräte (kamailio muß laufen) kamctl ul show kamctl online Nummern (Subscriber) anlegen kamctl add Nummer wieder entfernen kamctl rm ===== VoIP-Clients ===== Selbstverständliche kann jedes IP-Telefon verwendet werden. Hersteller sind z.B. Grandstream und Snom. Softphones auf dem PC: * Twikle * Linphone, anscheinend kein vernänftiges Logging Apps auf dem Smartphone: * ???