- ich betreibe einen Asterisk hinter einem Router (port restricted cone)
- der Asterisk ist SIP Server zu Geraeten im lokalen Netz (z.B. Gigaset C430A GO)
- der Asterisk ist SIP Client zu Servern div. VoIP Provider im Internet (inkl. Vodafone)
- der 5060 wird bei mir nur per conntracking (nach register) von extern->intern geforwarded
- der RTP Portbereich wird statisch von extern->intern geforwarded
- ich versuche mit moeglichst wenig expliziten IP-Daten der Provider auszukommen.
- folgende relevanten Einstellungen im Router:
Code: Alles auswählen
iptables:
SIP_RTP_RANGE = "14532:14565"
-A FORWARD -i $EXT_IF -o $IN0_IF -d $DIMBIP -p udp --dport $SIP_RTP_RANGE -j ACCEPT
-A PREROUTING -t nat -i $EXT_IF -d $EXT_IP -p udp --dport $SIP_RTP_RANGE -j DNAT --to $DIMBIP
/proc/sys:
/bin/echo 70 > /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
- durch die Keepalives (alle 60s) wird der SIP Port zuerst fuer 70s, anschliessend nach dem 2. Keepalive 180s (Standard ip_conntrack_udp_timeout_stream) offengehalten
- folgende relevanten Einstellungen im Asterisk:
Code: Alles auswählen
/etc/asterisk/rtp.conf:
[...]
rtpstart=14532
rtpend=14564
[...]
/etc/asterisk/sip.conf:
[...]
[general]
bindport=5060
qualify=no
nat=no
externaddr=$EXT_IP
localnet=192.168.0.0/255.255.0.0
[...]
[...]
[129839842]
type=peer
qualify=yes ; defaults to 60s
[...]
Code: Alles auswählen
legende:
SIP_RTP_RANGE - Portbereich fuer RTP (umfasst rtpend+1 wegen RTCP)
EXT_IF - externes Interface (zum Internet)
IN0_IF - internes Interface (zum lokalen Netz)
DIMBIP - lokale IP Asterisk
EXT_IP - externe IP (oeffentliche IP Internet)
Asterisk
bezieht sich auf einen Vodafone Kabel-Anschluss mit einem Asterisk 16 auf einem Raspberry. Dahinter dann eine Gigaset C430A GO.
Keine Ahnung ob es Gigaset inzwischen vielleicht geschafft hat, Vodafone-SIP direkt zu unterstuetzen (was den Asterisk dann ueberfluessig machen koennte).
Meine sip.conf sieht dabei so aus:
Code: Alles auswählen
; -----------------------------------
[general]
context=sip-in
bindport=5060
qualify=no
disallow=all
allow=alaw
srvlookup=yes
directmedia=no
dtmfmode=rfc2833
nat=no
externaddr=<EXTERNE-IP>
localnet=192.168.0.0/255.255.0.0
; -----------------------------------
register => +49<Vorwahl><1. Tel.Nummer>:<SIP-Passwort>:<SIP-Benutzername>@sip.kabelfon.vodafone.de/0049<Vorwahl><1. Tel.Nummer>
register => +49<Vorwahl><2. Tel.Nummer>:<SIP-Passwort>:<SIP-Benutzername>@sip.kabelfon.vodafone.de/0049<Vorwahl><2. Tel.Nummer>
register => +49<Vorwahl><3. Tel.Nummer>:<SIP-Passwort>:<SIP-Benutzername>@sip.kabelfon.vodafone.de/0049<Vorwahl><3. Tel.Nummer>
; -----------------------------------
[vodafone-<1. Tel.Nummer>]
type=peer
qualify=yes
insecure=invite
secret=<SIP-Passwort>
fromuser=+49<Vorwahl><1. Tel.Nummer>
defaultuser=<SIP-Benutzername>
host=sip.kabelfon.vodafone.de
fromdomain=sip.kabelfon.vodafone.de
[vodafone-<2. Tel.Nummer>]
type=peer
qualify=yes
insecure=invite
secret=<SIP-Passwort>
fromuser=+49<Vorwahl><2. Tel.Nummer>
defaultuser=<SIP-Benutzername>
host=sip.kabelfon.vodafone.de
fromdomain=sip.kabelfon.vodafone.de
[vodafone-<3. Tel.Nummer>]
type=peer
qualify=yes
insecure=invite
secret=<SIP-Passwort>
fromuser=+49<Vorwahl><3. Tel.Nummer>
defaultuser=<SIP-Benutzername>
host=sip.kabelfon.vodafone.de
fromdomain=sip.kabelfon.vodafone.de
; -----------------------------------
[<1. Tel.Nummer>]
type=peer
host=dynamic
context=dial-out
[<2. Tel.Nummer>]
type=peer
host=dynamic
context=dial-out
[<3. Tel.Nummer>]
type=peer
host=dynamic
context=dial-out