st0ne@home:~$

UPC/Inode Telefon ohne Fritzbox dafür mit Asterisk

Da mir die Fritzbox schon einige Zeit auf die Nerven geht, habe ich beschlossen eine Alternative zu basteln 😉

Das Modem der Fritzbox ist im Grenzfall wirklich schlecht. Ich hatte immer 4 bis 5Mbit. Mit dem Zyxel Prestige 660R-D1 schaffe ich 7 bis 8Mbit. Allerdings gibts hier ja keine Telefonmöglichkeit, darum folgender Artikel 🙂

Benötigte Hardware:

  • Zyxel Prestige 660R-D1 (Oder anderes DSL-Modem)
  • Netgear WNDR3700 Wlan Router (Oder anderer Router mit OpenWRT)
  • VOIP-Telefone
  • Linux-Kenntnisse 😉

Richtige Einstellung des Zyxel-Modems

Internetverbindung einrichten:

  • Mode: Bridge
  • Encapsulation: RFC1483
  • Multiplexing: LLC
  • Virtual Circuit ID (VPI): 9
  • Virtual Circuit ID (VCI): 35

Telefonverbindung einrichten:

  • Mode: Bridge
  • Encapsulation: RFC1483
  • Multiplexing: LLC
  • Virtual Circuit ID (VPI): 9
  • Virtual Circuit ID (VCI): 36

Router mit OpenWRT einrichten

Zuerst eine Simple PPPoE Verbindung mit den Zugangsdaten von UPC/Inode aufbauen. Das müsste einwandfrei funktionieren.

Für die SIP-Telefonverbindung ist das etwas komplizierter. Dazu installiert man mal das OpenWRT Paket dhcpcd. Da der eingebaute DHCP-Client die sogenannte „DHCP Option 60“ nicht unterstützt braucht man eben den dhcpcd.

Den DHCP Client startet man dann so:

/usb/sbin/dhcpcd -R -Y -N -i "AVM DHCPC" eth1:1

Der Zusatz „AVM DHCPC“ bewirkt dass das virtuelle Interface eth1:1 vom Inode/UPC DHCP-Server die passende IP bekommt (eine IP im 172.x.y.z Netz). Würde man das nicht machen, erkennt Inode/UPC daran dass wohl keine Fritzbox oder ein anderes kompatibles VOIP Gerät dran hängt, und wird die weitere Verbindung zum SIP-Server verweigern (Die IP wäre dann im 10.x.y.z Netz).

Nachdem das nun Funktioniert muss man nur noch die passende route für voip.inode.at legen:

/usr/sbin/ip route add 212.41.253.176/28 dev eth1:1

Somit wird der gesamte Verkehr an voip.inode.at über die 172er IP geroutet und nicht über die Internetverbindung.

Asterisk Einrichten

Ich habe das OpenWRT-Paket „asterisk16“ verwendet.

Die Einstellung ist eigentlich recht Simpel.

sip.conf:

[general]
srvlookup=yes
port=5060
bindaddr=0.0.0.0
language=de
rtpstart=10000
rtpend=10100
register => upc-telefonnumer:upc-passwort@voip.inode.at/upc-telefonnummer
useragent = AVM FRITZ!Box Fon WLAN 7140 Annex A 39.04.76 (Jul 31 2009)

[100]
context=meine-telefone
type=friend
secret=password
host=dynamic
cancallforward=yes
canreinvite=no

[200]
context=meine-telefone
type=friend
secret=password
host=dynamic
cancallforward=yes
canreinvite=no

[upc-telefonnumer]
type=friend
username=upc-telefonnumer
fromuser=upc-telefonnumer
callerid=upc-telefonnumer
context=upc-incoming
secret=upc-passwort
host=voip.inode.at
fromdomain=voip.inode.at
dtmfmode=rfc2833
canredirect=no
qualify=yes
caninvite=no
canreinvite=no
insecure=port,invite

extension.conf:

[meine-telefone]
exten => 100,1,Dial(SIP/100)
exten => 200,1,Dial(SIP/200)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@upc-telefonnumer)
exten => _0[1-9].,2,Hangup()

[upc-incoming]
exten => upc-telefonnumer,Dial(SIP/100)

In der Firewall sind dann UDP Ports 5060 und 10000 bis 10100 zu öffnen.

Man kann dann natürlich auch noch weitere SIP Anbieter und/oder Telefone hinzufügen um dann eine etwas komplexere Telefonanlage zu basteln. In dem Fall hier läutet einfach das SIP Telefon mit der „Durchwahl“ 100 wenn auf der UPC-Telefonnummer angerufen wird. und sobald eine Nummer mit 0xxxxxxxx gewählt wird, gehts auch per UPC-Account raus.

Die anderen Teilnehmer können intern einfach durch Wahl der Nummer 100 oder 200 erreicht werden.