Can somebody explain it to me? I tried to find some information about it.. but there are no answers that would satisfied me..
I know that it helps when you are using NAT.. but I want to know from the technical side what it does..
How is the situation wit actually using it? Does it work properly or not?
SIP dynamically negotiates other ports for related connections (the control channel sets up data channels). The SIP helper inspects the control channel so that the stateful firewall knows about the related data channels.
Could you confirm that SIP helper just inspects packets, but doesn’t change anything in SIP header?
That’s crucial, as most VoIP providers tuned their interface towards dumb routers, and do not expect them to do the right thing… that’s why SIP ALG usually does more harm then good…
If your VoIP provider doesn’t expect a SIP ALG and breaks if one is used, just disable the SIP helper by changing the service port to something that isn’t used by SIP.
It’s probably the in-kernel (linux mainline) SIP module. It shouldn’t be changing packets except in case of NAT. In the NAT case it should be rewriting the Concat: and possibly the Via: headers, as well as performing port fixups in case of it being unable to use the exact port specified in the sdp portion of the packets.
However, there are (last I checked anyway) a few problems in the linux kernel sip connection tracking module that actually drops packets in certain cases even in the non-NAT case.