M0n0wall & SIP

Betrifft OS:
FreeBSD

M0n0wall ist eine umfangreiche und einfach zu konfigurierende Firewall-Distribution von FreeBSD.

Das Protokoll VoIP verträgt sich sehr schlecht mit NAT-Firewalls, welche jedoch stark verbreitet sind und z.B. auch eine der Hauptfunktionen von M0n0wall darstellt.

In den folgenden Varianten wird gezeigt, wie man ein VoIP-Device hinter einer NAT-Firewall wie M0n0wall zum Laufen bekommen kann.

Variante: Port-Forward

Mit folgenden statischen Portforwards auf direkt auf die Fritzbox ist VoIP zum Laufen zu bekommen. Die Konfiguration ist getestet mit GMX (bzw. United-Internet) und iptel.org .

NAT-Regeln

Entsprechend den folgenden NAT-Regeln muss auch zusätzlich eine Firewall-Regel angelegt werden, was bei m0n0wall aber automatisch gemacht werden kann.

fritzbox = IP der Fritzbox

IfProtoExt.port rangeNAT IPInt.port range
WANUDP3478fritzbox3478
WANUDP3479fritzbox3479
WANUDP5060fritzbox5060
WANUDP5062fritzbox5062
WANUDP5070-5079fritzbox5070-5079
WANUDP7077-7081fritzbox7077-7081
WANUDP30000-30019fritzbox30000-30019

Nachteile

Der deutliche Nachteil hierbei ist, dass die Registrierung beim Provider-Registrar z.B. nach der 24-Stunden DSL-Trennung nicht zuverlässig auf die neue IP-Adresse korrigiert wird. Es ist nicht unüblich, dass man für Stunden nicht erreichbar ist. Außerdem ist diese Konfiguration aufwändig und eben sehr statisch, so dass dies nicht praktisch ist, wenn man mehrere VoIP-Telefone oder Softphonse wie Twinkle, KPhone oder Linphone im Einsatz hat.

Variante: SIP-Proxy

Seit der Version 1.3b7 enthält M0n0wall einen funktionierenden SIP-proxy (siproxd), welcher die Problematik deutlich vereinfachen kann.

aktivieren des SIP-Proxys

In dem Webinterface wird dieser unter dem Menü Services–>SIP Proxy aktiviert. Die folgenden Standardeinstellungen sollten für die meisten Fälle korrekt sein:

Enable SIP Proxy[x]
InterfaceLAN
SID UDP port5060
RTP UDP port range7010 bis 7019

Firewall-Regeln anlegen

Damit der SIP-Proxy von außen erreichbar ist, müssen für das WAN-Interface zwei Regeln angelegt werden. Dies geschieht anders als in dem Hilfetext beschrieben nicht automatisch:

ProtoSourcePortDestinationPortDescription
UDP**WAN address5060SIProxd UDP-Port
UDP**WAN address7010 - 7019RTP UDP port Range

NAT-Regeln sind nicht weiter notwendig, da der siproxd dies auf Applikationsebene als Gateway regelt.

Telefon konfigurieren

BenutzernameAnmeldename/Telefonummer des VoIP-Providers
Passwortdito
Domaindie Domäne des VoIP-Providers (z.B. gmx.de oder iptel.org)
Registrarip oder hostname der m0n0wall, nicht registrar des Providers
Outbound-Proxyip oder hostname der m0n0wall

NAT-Durchtunnelung oder STUN bzw. STUN-Server abschalten.

Einschränkungen

Diese Konfiguration funktioniert mit Softphones wie Twinkle - jedoch bisher nicht mit einer Fritzbox, da man dort die Domain und den Registrar nicht getrennt angeben kann. FIXME