sip registration schlägt fehl wegen conntrack Eintrag

the digital PBX
Post Reply
morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » August 26th, 2012, 9:54 am

Hallo zusammen,

ich musste leider feststellen das mein sporadisch auftretendes Problem der fehlschlagenden SIP Registrierungen am conntrack meines ipfire liegt.

Aber erstmal ein paar mehr Infos.

Sporadisch kann sich mein asterisk server, welcher hinter meinem ipfire hängt nicht mehr mit allen SIP Providern registrieren. Dieses Problem tritt sporadisch nach der eingestellten 24h DSL Trennung auf.

Nach etwas debuggen habe ich herausgefunden das es mit netfilter conntrack zu tun hat.

Wenn ich mir die conntrack table anschaue:

Code: Select all

[root@ipfire ~]# cat /proc/net/ip_conntrack | grep -i 5060
udp      17 28 src=192.168.9.10 dst=217.0.17.230 sport=5060 dport=5060 packets=56982 bytes=35925675 [UNREPLIED] src=217.0.17.230 dst=192.168.9.10 sport=5060 dport=5060 packets=0 bytes=0 mark=0 use=2
udp      17 143 src=192.168.9.10 dst=217.10.79.9 sport=5060 dport=5060 packets=563 bytes=319569 src=217.10.79.9 dst=80.XX.XX.155 sport=5060 dport=5060 packets=563 bytes=231895 [ASSURED] mark=0 use=2


Stelle ich fest, das in der zweiten Zeile (sipgate) die dst Adresse korrekt auf meine neue externe IP (dst=80.XX.XX.155) angepasst wird, wodurch die Registrierung bei sipgate funktioniert.

In der ersten Zeile (meiner Verbindung zur Telekom) steht meine interne IP (192.168.9.10) des asterisk servers als dst Adresse wodurch durch die Registrierung bei der Telekom nicht funktioniert.

Bisher habe ich das Problem dadurch behoben, das ich meinen Asterisk kurzzeitig beendet habe. Nach ca. 1min hat die Registrierung dann bei allen Providern wieder funktioniert.

Was ich nicht ganz verstehe ist der Grund für dieses Problem.

Ich habe in der sip.conf von asterisk die defaultexpiry auf 240 sekunden gesetzt und der nf_conntrack_udp_timeout von ipfire steht auf 30 sekunden.
Wenn ich dies richtig verstehe sollte also asterisk alle 240 sekunden erneut eine Registrierung machen bzw. diese prüfen. Da asterisk als default eine minexpiry von 60 sekunden verwendet, verstehe ich nicht warum der conntrack Eintrag nicht nach 30 sekunden gelöscht wird und so das Problem gar nicht erst auftritt.

Hat sonst keiner von euch solche Probleme?

Eine elegantere Lösung wäre für mich die conntrack table mit "conntrack -F" (http://conntrack-tools.netfilter.org/) nach der Zwangstrennung zu flushen.

Leider ist aber conntrack nicht in ipfire enthalten und ich weiss nicht wie bzw. ob man die conntrack table manuell manipulieren kann.

So das war jetzt erstmal viel Text. Falls jemand bis hier gelesen hat und eine Idee hat wäre es sehr nett wenn er mir einen Tipp geben kann.

Gruß morlix
Image

morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » August 30th, 2012, 7:04 am

Hat wirklich keiner eine Idee oder einen Vorschlag?
Image

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8522
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by Arne.F » August 30th, 2012, 11:59 am

Sicher das das am conntrack liegt. Beim Reconnect wird das ppp0 device gelöscht und neu erstellt. Dabei sollte auch die conntrack tabelle geflusht werden.

udp      17 28 src=192.168.9.10 dst=217.0.17.230 sport=5060 dport=5060 packets=56982 bytes=35925675 [UNREPLIED] src=217.0.17.230 dst=192.168.9.10 sport=5060 dport=5060 packets=0 bytes=0 mark=0 use=2
udp      17 143 src=192.168.9.10 dst=217.10.79.9 sport=5060 dport=5060 packets=563 bytes=319569 src=217.10.79.9 dst=80.XX.XX.155 sport=5060 dport=5060 packets=563 bytes=231895 [ASSURED] mark=0 use=2


Da passt auf jeden fall was nicht. Die erste verbindung ist als "UNREPLIED" (nicht beantwortet markiert). Ich denk mal deshalb zeigt er dort deine Externe Addresse noch nicht an.

Auch kann man nicht zwei udp verbindungen auf dem gleichen Port Natten. Bei einer der beiden muß er sich einen anderen Port suchen evtl. läst deshalb der Telekom Server die verbindung nicht mehr zu.
Last edited by Arne.F on August 30th, 2012, 12:12 pm, edited 1 time in total.
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » August 30th, 2012, 6:26 pm

Hallo Arne,

erstmal danke für deine Antwort.

Ich bin mir nicht 100%ig sicher das es am conntrack liegt, das ist halt nur die Stelle an der ich wie du ja auch ein Problem erkannt habe.

Hier habe ich heute ein paar Links gefunden welches dies aber eventuell bestätigen:

http://www.ip-phone-forum.de/showthread.php?t=211485
http://www.unixpearls.com/solved-linux- ... sk-server/
http://vyatta.org/forum/viewtopic.php?t ... ck+timeout

Ich verstehe deine Erklärung, allerdings weiss ich nicht wie ich in der sip.conf unterschiedliche Ports für die "register" Einträge definieren kann.

Weiterhin frage ich mich warum dies nur sehr sporadisch auftritt. Wenn der Telekom Server dies verhindern würde, da mehrere UDP Verbindungen über einen Port genated würden sollte er dies doch immer tun oder?

Soll ich mal diverse config files von asterisk posten?
Last edited by morlix on August 30th, 2012, 6:28 pm, edited 1 time in total.
Image

morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » October 20th, 2012, 10:31 am

Sicher das das am conntrack liegt. Beim Reconnect wird das ppp0 device gelöscht und neu erstellt. Dabei sollte auch die conntrack tabelle geflusht werden.


Hallo Arne,

ja ich bin mir sicher, ich habe gerade nachdem es mal wieder nicht ging einen reconnect gemacht und dabei immer wieder auf die conntrack table geschaut.

Es stimmt dass das ppp0 device gelöscht wird, allerdings bleiben die conntrack table Einträge erhalten.

Ich warte jetzt mal auf die 2.13 und dann werde ich die conntrack-tools implementieren, mit diesen kann man dann die table leeren.

Gruß morlix
Image

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8522
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by Arne.F » January 2nd, 2013, 11:35 pm

Sorry für die späte Antwort. Inzwischen hab ich auch alte conntrack Einträge bei mir. Die werden anscheinend tatsächlich nicht beseitigt sondern bleiben da 5 Tage drin. Für TCP Verbindungen ist das nicht so das Problem da ein neuer Verbindungsaufbau den alten Eintrag löscht. Blöd ist das aber bei UDP.

Leider ist das flushen der gesamten Tabelle auch keine Lösung da dann Verbindungen über IPSec Tunnel beim reconnect abbrechen würden. Man darf nur die Einträge mit der alten IP löschen.
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » January 3rd, 2013, 5:44 am

Hallo Arne,

sobald 2.13 draussen ist, kann ich eine Lösung via conntrack-tools beisteuern.

Wir können ja wenn du willst mal genauer über eine Lösung sprechen dann kann ich das umsetzten.

Gruß Timo
Image

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8522
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by Arne.F » January 3rd, 2013, 9:17 am

Für die conntrack tools sollte man nicht bis zur 2.13 warten da diese zusätzliche weitere netfilter libs brauchen die zur jewiligen iptables version passen müssen. Ich bin grad dabei die einzubauen.

Wenn ich die conntrack-tools hab bau ich ein script in networking/red.down das alle connections zur grad getrennten IP verwirft. Damit sollte das erledigt sein.

Das ganze kommt aber erst mit 2.13beta2
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

morlix
Community Developer
Community Developer
Posts: 175
Joined: July 18th, 2011, 10:08 am
Location: Stuttgart

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by morlix » January 3rd, 2013, 9:27 am

Hallo Arne,

ich hab mir die Mühe auch schon gemacht, allerdings fürchte ich auch du wirst vor 2.13 bzw. glibc 2.9 scheitern, da libnetfilter_cttimeout IPPROTO_DCCP and IPPROTO_UDPLITE benötigt, welche erst mit glibc 2.9 kommen.

Gruß Timo

PS: wenn du noch nicht soweit bist, kann ich dir meinen Patch schicken, dann musst du dir die Arbeit nicht nochmal machen.
Last edited by morlix on January 3rd, 2013, 9:29 am, edited 1 time in total.
Image

User avatar
Arne.F
Core Developer
Core Developer
Posts: 8522
Joined: May 7th, 2006, 8:57 am
Location: BS <-> NDH
Contact:

Re: sip registration schlägt fehl wegen conntrack Eintrag

Post by Arne.F » January 3rd, 2013, 1:21 pm

Ich hab die 2.13 bei mir schon drauf. Ich meint mehr mit dem einbau sollte man nicht erst bis 2.13Final warten und danach anfangen. (Das ganze sollte man jetzt in der Beta Phase machen.
Ich hab das soweit drin und das geht auch. Kommt aber eben erst in die Beta2. Eine ISO mit conntrack liegt bei mir im public ordner da fehlt nur noch das script, das kommt erst mit dem nächsten build.
Arne

Support the project on the donation!

Image

Image

Image
PS: I will not answer support questions via email and ignore IPFire related messages on my non IPFire.org mail addresses.

Post Reply