Vserver *Config umbauen um es hinter einem NAT zu betreiben

klarglas

Neuer User
Mitglied seit
15 Aug 2005
Beiträge
107
Punkte für Reaktionen
0
Punkte
16
Hallo,

zwecks den Ausfall/Umzug bei Starhosting ist leider auch mein Vserver ausgefallen. Da die Störung nun schon 2 Tage dauert hab ich versucht
meinen Laptop als Asterisk zu verwenden.

Mein Laptop steht hinter einen Openwrt Router und somit in einen eigenen NAT.
Die Clients sind auch hinter einen Openwrt Router, aber in einen anderen NAT.

d.h. Asterisk ---------Router-----(Internet) ---------Router------Clients

Ich hab jetzt die configs von meinen Vserver genommen und soweit abgeändert wie ich es hier im Forum gefunden habe.
Die Registrierung der Telefone funktioniert auch ohne Probleme.
Leider kommst aber keine Sprache durch.
Auf dem Router beim Asterisk sind die Ports 5000-20000 geforwarded.
Mein RTP Verkehr läuft zwischen 10000 und 20000 ab.

Hier noch meine sip.conf

Code:
[general]
context=default
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
language=de
rtcachefriends=yes
rtautoclear=yes
;fromdomain=meine externe IP
externip = meine externe IP
localnet = 10.0.0.0/255.255.255.0
NAT=yes

Bin für jede hilfe dankbar, ich weiß nicht mehr was ich einstellen soll.

MFG
 
Zuletzt bearbeitet:
klarglas schrieb:
Bin für jede hilfe dankbar, ich weiß nicht mehr was ich einstellen soll.

Wissen deine Clients wie sie deinen Asterisk erreichen xyz.dyndns.org
externhost=xyz.dyndns.org
Sind die Ports auf denen sich deine Klients am Asterisk registrieren freigegeben? Schau mit sip show peers welche ports die benutzen.

Gib ggf. mal alle udp-Ports auf dem Router für asterisk frei und schau ob es dann funktioniert.
 
externhost=meine IP
hab ich mal in der sip.conf ergänzt. Mal schaun was passiert. (Muss die Registrierung der Clients abwarten)

Ja, die Ports am Router sind freigegeben(TCP und UDP).
Meine Clients verwenden Ports ab 5060 und dann aufwärts.
Wie gesagt die Registrierung klappt, nur die Sprache nicht.

yexternhost=meine IP

Ich glaub das war die Lösung, ich habe gerade erfolgreich mit einem Client
aus dem anderem NAT telefoniert. :-)
Wenn das jetzt bis morgen stabil läuft, makiere ich den Thread als gelöst.

@kombjuder
Vielen Dank

MFG Markus
 
Zuletzt bearbeitet von einem Moderator:
klarglas schrieb:
Ja, die Ports am Router sind freigegeben(TCP und UDP).


Das TCP brauchst du nicht freigeben. VOIP arbeitet mit udp.
 
normalerweise ist externhost aber nur für hostnamen, wie kombjuder das beschrieben hat (xyz.host.com). Eigentlich sollte eher externip greifen.
bist du mit einer dynamischen ip im netz?
welche asterisk version? (hauptsächlich zur info, dein problem ist ja gelöst glaub ich)

j4r
 
Asteriskversion ist 1.2.24.
Ja ich bin mit einer dynamischen IP im Internet.
Ich hab jetzt alle 3 Einträge (fromdomain, externip und externhost) in meiner config eingetragen.
Ich denke es sind nicht alle notwendig, aber es geht aktuell.
Das einzige ist das wenn sich mein Router in der früh um 4 neu einwählt, muss ich einen reload durchführen, sonst kommt wieder keine Sprache durch.
Das ist aber kein Problem.
 
dafür hatte ich ein kleines script gebastelt, dass ich einfach alle 10 minuten laufen lasse. es holt sich die aktuelle ip, vergleicht sie mit der aktuellen, und wenn sich was geändert hat, schreibts es rein und reloaded. besteht bedarf? dann poste ich das hier ;-)
 
Ja das wär gut, am Wochenende ist das um 4 in der früh kein Problem, weil da
komm ich eh grad heim. Aber unter der Woche wirds dann schon nervig.

Danke schon mal.

MFG Markus
 
Also... man verzeihe meine erbärmlichen scripting-fähigkeiten... ;-)

Ich habe im Verzeichnis /etc/asterisk/actip die Datei actual.sh

Code:
#!/bin/sh

#sleep 2

{
#new_ip="$(wget -q -O - http://www.ipadresse.de | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')" 
# rausgenommen, da nicht zuverlässig.

new_ip="$(wget -q -O - http://checkip.dyndns.com | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"

#logger "bekommene IP: $new_ip"

read old_ip < /etc/asterisk/actip/actip

#logger "Aus der Datei extrahiert: $old_ip"

old_ip="$(echo $old_ip | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"

#echo $old_ip
#logger "$old_ip, jetzt nur noch die ip"

if [ "$new_ip" != "$old_ip" ]
then
   echo "externip="$new_ip > /etc/asterisk/actip/actip
   logger "IP-Address changed to $new_ip, updated"
   asterisk -rx reload
fi
if [ $new_ip == $old_ip ]
then
   echo "Ip did not change."
  # logger "Ip did not change"
fi
}

Ich habe mal meine auskommentierten Sachen dringelassen, du kannst ja die # rausnehmen, wenn du etwas mehr output haben möchtest.
Die Datei /etc/asterisk/actip/actip wird per "#include actip/actip" in der sip.conf unter general eingebunden.
Der reguläre Ausdruck ist für sehr viele Dienste, die die eigene IP auf einer HTML Seite ausgeben geeignet. (regulärer Ausdruck halt....)
Das Script muss man natürlich ausführbar machen, und bei mir habe ich es per cron alle 10 minuten am laufen, da sich die maschine eh sonst nur langweilt.
Sonst noch erklärungsbedarf? Melden ;-)
Viel Spass damit.
 
Kostenlos!

Statistik des Forums

Themen
248,140
Beiträge
2,282,415
Mitglieder
377,360
Neuestes Mitglied
theyakimchuk