chris' corner
Software, Stories and more
HomeHowto › VoIP mit zwei über OpenVPN verbundenen Fritz!Boxen

Ausgangslage

Ein Studentenwohnheimzimmer soll mit Telefon versorgt werden. IP-Anschluss und analoges Telefon ist vorhanden, Telefonanschluss nicht. Ich hab eine Fritzbox 7270, ISDN und eine Festnetz-Flatrate. Ein Rootserver dient als OpenVPN-Server.

Idee

Eine zweite Fritzbox kaufen, per OpenVPN mit meiner verbinden und darüber meinen Telefonschluss mit benutzen.

Umsetzung

Seit März 09 hat die Fritzbox-Firmware einen SIP-Registrar eingebaut. Testweise habe ich mein Handy (Nokia E71) da über WLAN angemeldet, funktioniert. Also eine Fritzbox 7170 gekauft, OpenVPN installiert und an meiner Fritzbox als IP-Telefon angemeldet.
Hat auch sofort funktioniert - ich konnte der Fritzbox eine freie MSN zuweisen, das angeschlossene Telefon hat auch brav geklingelt und beim Rausrufen wird die richtige MSN übertragen.

Problem

Allerdings kommt leider keine Sprache am Telefon an. Das Problem ist, dass beide Fritzboxen jetzt je zwei interne IP-Adressen haben - die fürs LAN (über die Oberfläche eingetragen) und die für den VPN-Tunnel, die vom OpenVPN-Server vergeben wird. Der SIP-Server weiß aber leider nur von der LAN-IP und schickt diese beim SIP-Verbindungsaufbau an die Client-Fritzbox. Die Sprachpakete versendet er dann aber von der VPN-Adresse aus (weil die halt näher an der Route liegt) und die Client-Fritzbox verwirft sie dann.

Lösung

Nach langer Suche in diversen Foren, vielem Rumprobieren (voip.cfg manuell bearbeitet, SIP-Proxy eingetragen) und vielen einseitigen Telefonaten bin ich dann auf die Idee gekommen, auf dem Rootserver die Absenderadresse einfach umzuschreiben - und schon funktionierts.
Einfach die Zeile iptables -t nat -A POSTROUTING -s [FB1-VPN-IP] -d [FB2-LAN-Netz] -j SNAT --to [FB1-LAN-IP] in die openvpn-startup einfügen und schon kommen die Pakete mit dem richtigen Absender an und man hört auch was.