Firewall sperrt beidseitige Kommunikation

talbotde

Neuer User
Mitglied seit
28 Jan 2009
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Servus,

ich habe nun schon ganz viel gesucht, aber nichts gefunden was mein Problem löst.

Ich betreibe Asterisk auf einem Vserver von Server4you. Das funktioniert soweit auch ganz gut. Einige Module laufen zwar nicht, aber die brauch ich auch alle gar nicht.

Das ganze soll eigentlich nur eine Funktion haben:

  1. Jemand ruft an
  2. Eine Ansage läuft ab
  3. Man gibt einen 8 stelligen Code ein
  4. bestätigt diesen mit #
  5. Eine Information wird abgespielt.

Die Funktionalität ist auch okay. Das ganze läuft zur Zeit auf einer NSLU2 bei mir im Keller. Da die damit aber schon 98% ausgelastet ist, möchte ich das nun gerne auf meinen Vserver portieren, der noch genug Ressourcen hat.

Wie gesagt, das ganze läuft auch soweit nur werden die Eingaben vom Telefon nicht angenommen. Ich habe auch schon herausgefunden woran es liegt. Wenn ich nämlich die Firewall abschalte funktioniert's. Das möchte ich aber ungern tun.

Laut sipgate ist "Reverse UDP Mapping Rules" daran schuld. Ich habe aber so eine Einstellung bei asterisk nicht gefunden. Stattdessen steht in der sip.conf einiges zum Thema NAT.

Der Vserver hat eine eigene IP also habe ich die einstellung

nat=no

verwendet.

Außerdem habe ich die ports 10000 - 20000 für udp frei geschaltet, da die ja anscheinend die tonübertragung entgegennehmen.

Auszug aus iptables:
Code:
Chain INPUT (policy ACCEPT)# nano rtp.conf
target     prot opt source               destination
allips     0    --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere            udp dpts:10000:20000

Im Moment weiss ich mir nicht weiter zu helfen. Für Tipps wäre ich sehr dankbar!
 
Außerdem habe ich die ports 10000 - 20000 für udp frei geschaltet, da die ja anscheinend die tonübertragung entgegennehmen.

Du brauchst in jedem Fall den Port 5060, ggf noch weitere.
Mach probehalber die Ports 1024 bis 64000 udp auf und schau dann via sip debug mit was für Ports gearbeitet wird.

Im sip-Kontext den Eintrag

canreinvite=no

probieren.
 
5060 ist bereits frei, die Anmeldung bei sipgate wollte sonst nicht klappen:
Code:
ACCEPT     udp  --  anywhere             anywhere            udp dpt:sip

Die anderen Ports probiere ich nachher mal. Danke schonmal für die Hilfe.:D
 
Hm ich habe jetzt wie gesagt die Ports freigegeben:
Code:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
allips     0    --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere            udp dpts:1024:64000

aber sip debug reagiert gar nicht.

Ich habe die Firewall nochmal ganz abgeschaltet, dann zeigt 'sip debug' folgende ausgabe an der kritischen Stelle:

Code:
--- (13 headers 0 lines) ---
    -- Executing Goto("SIP/sipgate.de-08169f88", "eingabestarten|s|1") in new stack
    -- Goto (eingabestarten,s,1)
    -- Executing Read("SIP/sipgate.de-08169f88", "digits|bitte-eingeben||||10") in new stack
    -- Playing 'bitte-eingeben' (language 'en')
    -- User entered '39754862'
    -- Executing GotoIf("SIP/sipgate.de-08169f88", "1?:timeout|s|1") in new stack
    -- Executing GotoIf("SIP/sipgate.de-08169f88", "1?hala2-1|s|1") in new stack
    -- Goto (hala2-1,s,1)
    -- Executing Playback("SIP/sipgate.de-08169f88", "code-okay") in new stack
    -- Playing 'code-okay' (language 'en')
    -- Executing Wait("SIP/sipgate.de-08169f88", "2") in new stack
    -- Executing Playback("SIP/sipgate.de-08169f88", "msg1-2") in new stack
    -- Playing 'msg1-2' (language 'en')
Apr 16 18:53:52 NOTICE[8187]: chan_sip.c:5427 sip_reregister:    -- Re-registration for  [email protected]
    -- parse_srv: SRV mapped to host sipgate.de, port 5060
REGISTER 13 headers, 0 lines
Reliably Transmitting (no NAT) to 217.10.79.9:5060:
REGISTER sip:sipgate.de SIP/2.0
Via: SIP/2.0/UDP 62.75.148.224:5060;branch=z9hG4bK10859102;rport
From: <sip:[email protected]>;tag=as7b172988
To: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 104 REGISTER
User-Agent: Asterisk PBX
Max-Forwards: 70
Authorization: Digest username="2045058", realm="sipgate.de", algorithm=MD5, uri="sip:sipgate.de", nonce="49e77f8358558892ae434f9334e6d138839d36c7", response="5ed21c612c21b4de5dcf5f47897b3d42", opaque=""
Expires: 120
Contact: <sip:[email protected]>
Event: registration
Content-Length: 0

Leider hilft mir das irgendwie nicht weiter. Warum funktioniert die Eingabe von Nummern wenn die Firewall aus ist, aber nicht wenn sie an ist?

Vielleicht hab ich auch die Fw nicht richtig konfiguriert? Bin noch nicht so fit mit iptables. Habe bisher immer nur Webinterfaces benutzt:

Code:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
allips     0    --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain allips (1 references)
target     prot opt source               destination
ACCEPT     0    --  anywhere             localhost.localdomain
ACCEPT     tcp  --  anywhere             anywhere            tcp dpts:ftp-data:ftp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imap2
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssmtp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imaps
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3s
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:8443
ACCEPT     udp  --  anywhere             anywhere            udp spt:domain
ACCEPT     udp  --  anywhere             anywhere            udp spt:ntp
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:smtp flags:!FIN,SYN,RST,ACK/SYN
ACCEPT     udp  --  anywhere             anywhere            udp dpt:sip
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:0:1023 flags:!FIN,SYN,RST,ACK/SYN
DROP       0    --  anywhere             anywhere
 
Vielleicht hab ich auch die Fw nicht richtig konfiguriert?

Wenn die Aussage stimmt, dass sip debug nichts anzeigt, ja. Denn dann kommt nichts rein, nicht einmal die Registrierung von sipgate.
 
Okay, vielleicht war meine Aussage zu pauschal. Sorry.

sip debug läuft bis hier:
Code:
--- (13 headers 0 lines) ---
    -- Executing Goto("SIP/sipgate.de-08169f88", "eingabestarten|s|1") in new stack
    -- Goto (eingabestarten,s,1)
    -- Executing Read("SIP/sipgate.de-08169f88", "digits|bitte-eingeben||||10") in new stack

aber die telefoneingabe wird völlig ignoriert. die nächste meldung ist dann entweder timeout oder disconnected.
 
Hm ich habe jetzt wie gesagt die Ports reigegeben:
Code:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
allips     0    --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere            udp dpts:1024:64000

Sicher? Für mich sieht das mehr danach aus das neben ftp, ssh, mail usw. nur sip erlaubt wird. Logging für abgewiesene Pakete würde das bestimmt ans Licht bringen.
 
Verzeiht mir meine tumbheit, aber wie logge ich die abgewiesenen Pakete?
 
In etwa so iptables -A INPUT -j LOG was natürlich vor einer Regel stehen sollte in der alles verworfen wird, man iptables und man syslog helfen weiter. Warum greifst du eigentlich nicht auf einen Firewall Generator zurück oder lässt es gleich weg? Dein aktuelles "Regelwerk" kommt mir nämlich etwas merkwürdig vor.
 
Das ist das Regelwerk, dass von server4you "recommended" ist. Bisher fuhr ich damit auch ganz gut. Ich probier mal noch ein bisschen. Danke erstmal.
 
Es gibt da aber mehrere Weisen, dtmf bei SIP zu übertragen, oder nicht?
War da nicht was mit RFC und INBAND und INFO?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.