In Deutschland sind Telefonate über das Mobilfunk nur im deutschen Netz durch eine Flatrate abgedeckt.
Anrufe im Ausland oder vom Ausland können erheblichen Kosten verursachen. Ist eine Tarif, welchen Ausland-Telefonate im Festnetz vorhanden, wäre es günstig, über ein Internet-Telefone die Anrufe tätigen zu können.
Die Festnetztelefonie erfolgt über das Internet und die zur Verfügung gestellten Router besitzen oft eine Schnittstelle zu den Telefone und bieten der Einrichtung von IP-Telefone an.
Da der vorhandenen Internet-Router ein AVM Fritz!Box ist konnte es nur damit getestet werden, es sollte aber analog für Router andere Hersteller sein.
AVM bietet der Einrichtung einer VPN-Dienst, damit können Fritz!Box untereinander verbunden werden, aber auch eine Verbindung zum Heimnetz hergestellt werden.
Eingerichtete SIP-Telefone können sich über das VPN-Tunnel am Telefonserver der Fritz!Box anmelden.
Nachteile sind jedoch vorhanden, wenn über einen fremdem WIFI Netz die Verbindung erfolgen soll. Die lokale IP Adressenbereiche müssen sich unterscheiden.
Ein Ausweg ist es eine alternativer VPN-Verbindung zu verwenden. Dazu ist ein zusätzlichen Server einzurichten.
ZeroTier ermöglicht es VPN Tunnel zu erzeugen, Software für alle gängige Bertiebssystem ist vorhanden.
WireGuard kann auf ein normaler Rechner eingerichtet werden, dieser sollte aber keiner allzu großen Leistungsaufnahme verursachen. Ein Raspberry PI sollte ausreichend sein (Einrichtung, siehe Internet). Wenn ein NAS vorhanden ist, kann diesen so eingerichtet werden, dass er als WireGuard Server dient.
WireGuard ist für praktisch alle Betriebssysteme vorhanden.
Für viele NAS-Geräte ist Entware vorhanden. Entware bietet eine Umgebung die es ermöglicht viele Programme aus der Linux Welt auf NAS-Systeme laufen zu lassen und sogar solchen die nur als Quellen vorhanden sind.
Für der Raspberry PI muss WireGuard durch installation der Kernelheaders und ein Rückport des wireguard.ko Module, die Software installliert werden. Die WireGuard-tools sind auch zu installieren.
Raspbian bietet ein älteren siproxd Paket welche auch installiert werden kann.
Auf der NAS wird ein WireGuard Module selten zu finden sein, dafür kann wireguard-go von der Entware Repository installiert werden.
Für siproxd müssen die Quellen verwendet werden, die impliziert der Installation von git, gcc sowie die Gnu auto… tools und m4. Libosip2 kann von Github heruntergeladen werden, kompiliert uns installiert werden. Für siproxd sind die Sourcen aus sourceforge.net.
Nach Aufruf von ./configure --prefix=/opt kann mit den Aufruf gcc compiliert werden. Zur Installation sind Root rechte zu erlangen und gcc install aufzurufen.
Die Konfiguration kann wie auf der Internetpräsenz des Projektes (https://www.wireguard.com/) erfolgen. Am besten ist es alle Konfigurationsdateien auf der Server (inklusive Schlüssel generierung für der Client) anzufertigen. Für Smartphone und Tabletts kann mit qrencode ein QR-Code bild angefertigt werden.
Die IP-Adresse des tunnels sollte nicht mit die des WIFI Netz (oft 192.168.x.0/24 wobei x oft 0, 1, 2, 178, 179 als Wert aufweist) oder der von Mobile Provider verwendete Adresse (meistens im Bereich 10.0.0.0/8). Das FreiFunk (WIFI für Alle) verwendet auch IP Adressen in diesen Bereich.
Das Bereich 172.16.0.0/12 (172.16.0.1 bis 172.31.255.254) dürfte weniger oft zu finden sein. Auf NAS Geräte kann die eine oder andere Adresse zur Anwendung kommen.
Ein weiterer reservierten Bereich ist 100.64.0.0/1, ein Adressbereich für Carrier Grade NAT (100.64.0.1 bis 100.100.127.255.254). Ein /24 Segment aus dieses Bereich kann auch erwähnt werden, es dürfte kaum zur Kollision kommen.
[Interface]
PrivateKey = +Be9cRL8kuvY7BPu+WmwgUvuoBtRO4I1P84+Ik34RkI=
ListenPort = 51820
AllowedIPs = 100.64.2.0/24
[Peer]
#Smartphone
PublicKey = dmnx4bVWOkZBuGYxF1LhofX7Qga5iScpzBoUAMsCyHo=
AllowedIPs = 100.64.2.2/32
[Peer]
#PC
...
#!/bin/sh
ENABLED=yes
PROCS=wireguard-go
ARGS="wg0"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
. /opt/etc/init.d/rc.func
case $1 in
start)
wireguard-go wg0
wg setconf wg0 /opt/etc/wireguard/wg0.conf
ip a a 100.64.2.1/32 dev wg0
ip r a 10.74.2.0/24 dev wg0
sysctl -w net.ipv4.conf.all.forwarding=1
sysctl -w net.ipv4.ip_forward=1
;;
esac
#Smartphone
[Interface]
Address = 100.64.2.2/32
ListenPort = 51820
PrivateKey = ULY5RGYRe4kAlw0wGl1rdTA30jB01/EkObb0H/ER9Xc=
[Peer]
PublicKey = GwUZbiz5vgdWDwcI/2eYhG3r3PYYzkNMCOSpae9cN3M=
AllowedIPs = 100.64.2.0/24
Endpoint = my-external-net.ip:51820
if_inbound = wg0 # VPN Interface
if_outbound = ovs_eth0 # Interface zur Heim LAN
sip_listen_port = 5060
daemonize = 1
silence_log = 1
registration_file = /opt/var/lib/siproxd/siproxd_registrations
autosave_registrations = 300
pid_file = /var/run/siproxd/siproxd.pid
rtp_proxy_enable = 1
rtp_port_low = 7070
rtp_port_high = 7089
rtp_timeout = 300
rtp_dscp = 46
sip_dscp = 0
rtp_input_dejitter = 0
rtp_output_dejitter = 0
tcp_timeout = 600
tcp_connect_timeout = 500
tcp_keepalive = 20
debug_level = 0x00000000
debug_port = 0
outbound_domain_name = 192.168.178.1
outbound_proxy_host = 192.168.178.1
outbound_proxy_port = 5060
outbound_domain_host = 192.168.178.1
outbound_domain_port = 5060
plugindir=/opt/lib/siproxd/
load_plugin=plugin_stats.la
plugin_stats_to_syslog = 300
plugin_stats_to_file = 300
plugin_stats_filename = /opt/var/lib/siproxd/siproxd_stats
Diese Konfiguration bewirkt, dass siproxd die ein- augegehende Streams mit der passende Adressen weitergeleitet werden. Die Registrierung des Soft-Phone erfolgt erfolgt auf der Fritz!Box mit der Adresse des NAS im LAN (Beispielsweise 192,168.178.2). Die Fritz!Box sieht ein SIP-Telephone, welches im eigener Netzwerk sich befindet, und leitet die SIP und RTP streams an siproxd der als Client betrachtet wird.
Damit es funktioniert muss allerdings der SIP-Telefon die Verwendung einen Proxy-Server erlauben. Bei Linphone ist als SIP-Adresse die Fritz!Box (192.168.178.1) anzugeben und die "“SIP-Serveradresse” (Tunnel Adresse auf den NAS) zu geben und zusätzlich die Route über die gleiche Adresse (Linphone Desktop) einzutragen oder in de Smartphone APP “Ausgehende Proxy” einzuschalten. Stunserver usw. sind nicht zu konfigurieren (keins).