BelledonneCommunications / flexisip

Linphone.org mirror for flexisip (git://git.linphone.org/flexisip.git)
http://flexisip.org
GNU Affero General Public License v3.0
150 stars 74 forks source link

Incoming call drop at 30 seconds (PBX <-> Flexisip <-> Linphone) #54

Open tdnguyen1006 opened 5 years ago

tdnguyen1006 commented 5 years ago

Hi, I successfully installed and configured Flexisip as a push gateway. The registration and outgoing call are working fine. However, the incoming call drops at 30 seconds. I tried to capture the packet with tcpdump on Flexisip Server and our PBX. Flexisip did receive ACK packet from PBX server but did not respond. After receiving ACK packet, client (Linphone) kept sending 200 OK to Flexisip and still no response. I believe this one cause the drop because Flexisip responded to ACK packet of outgoing call but not incoming one. How can I fix this problem? This is my flexisip.conf file. I followed https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Push%20Gateway/ to config it.

[global]

debug=true

log-level=debug

syslog-level=debug

max-log-size=100M

user-errors-logs=false

dump-corefiles=true

auto-respawn=true

aliases=localhost

default-servers=proxy

transports=sip:*

tls-certificates-dir=/etc/flexisip/tls/

tls-ciphers=HIGH:!SSLv2:!SSLv3:!TLSv1:!EXP:!ADH:!RC4:!3DES:!aNULL:!eNULL

idle-timeout=3600

keepalive-interval=1800

proxy-to-proxy-keepalive-interval=0

require-peer-certificate=false

transaction-timeout=32000

udp-mtu=1460

enable-snmp=true

unique-id=

plugins-dir=/opt/belledonne-communications/lib64/flexisip/plugins

plugins=

[cluster]

enabled=false

cluster-domain=

nodes=

internal-transport=sip:%auto:5059;transport=tcp

[mdns-register]

enabled=false

mdns-priority=0

mdns-weight=100

mdns-ttl=3600

[event-logs]

enabled=false

logger=filesystem

dir=/var/log/flexisip

database-backend=mysql

database-connection-string=db='mydb' user='myuser' password='mypass' host='myhost.com'

database-max-queue-size=100

database-nb-threads-max=10

[monitor]

enabled=false

test-interval=30

logfile=/etc/flexisip/flexisip_monitor.log

switch-port=12345

password-salt=

[stun-server]

enabled=true

bind-address=0.0.0.0

port=3478

[presence-server]

enabled=true

transports=sip:127.0.0.1:5065;transport=tcp

expires=600

notify-limit=200

leak-detector=false

long-term-enabled=true

bypass-condition=false

external-list-subscription-request=

soci-connection-string=

max-thread=50

max-thread-queue-size=50

[conference-server]

enabled=true

transport=sip:127.0.0.1:6064;transport=tcp

conference-factory-uri=

enable-one-to-one-chat-room=true

outbound-proxy=sip:127.0.0.1:5060;transport=tcp

database-backend=mysql

database-connection-string=db='mydb' user='myuser' password='mypass' host='myhost.com'

check-capabilities=true

[module::DoSProtection]

enabled=true

filter=

time-period=3000

packet-rate-limit=20

ban-time=2

iptables-chain=FLEXISIP

[module::SanityChecker]

enabled=true

filter=

[module::GarbageIn]

enabled=false

filter=false

[module::NatHelper]

enabled=true

filter= !(user-agent contains 'No NatHelper')

contact-verified-param=verified

fix-record-routes=false

fix-record-routes-policy=safe

[module::Authentication]

enabled=false

filter=

auth-domains=localhost

trusted-hosts=

db-implementation=file

datasource=

nonce-expires=3600

cache-expire=1800

no-403=false

reject-wrong-client-certificates=false

tls-client-certificate-required-subject=

new-auth-on-407=false

enable-test-accounts-creation=false

disable-qop-auth=false

available-algorithms=MD5

trust-domain-certificates=false

soci-password-request=select password, 'MD5' from accounts where login = :id and domain = :domain

soci-user-with-phone-request=

soci-users-with-phones-request=

soci-poolsize=100

soci-backend=mysql

soci-connection-string=db=mydb user=myuser password='mypass' host=myhost.com

soci-max-queue-size=1000

[module::Redirect]

enabled=false

filter=

contact=

[module::Presence]

enabled=false

filter=is_request && (request.method-name == 'PUBLISH' || request.method-name == 'NOTIFY' || request.method-name == 'SUBSCRIBE')

presence-server=sip:127.0.0.1:5065;transport=tcp

only-list-subscription=false

check-domain-in-presence-results=false

[module::Registrar]

enabled=true

filter=

reg-domains=*

reg-on-response=true

max-contacts-by-aor=12

unique-id-parameters=+sip.instance pn-tok line

max-expires=86400

min-expires=60

force-expires=-1

static-records-file=

static-records-timeout=600

db-implementation=internal

redis-server-domain=localhost

redis-server-port=6379

redis-auth-password=

redis-server-timeout=1500

redis-record-serializer=protobuf

redis-slave-check-period=60

service-route=

name-message-expires=message-expires

register-expire-randomizer-max=0

[module::StatisticsCollector]

enabled=false

filter=is_request && request.method-name == 'PUBLISH'

collector-address=

[module::Router]

enabled=true

filter=(is_request && request.uri.params contains 'doroute') || is_response

use-global-domain=false

fork=true

stateful=true

fork-late=true

fork-no-global-decline=false

treat-decline-as-urgent=false

treat-all-as-urgent=false

call-fork-timeout=90

call-fork-urgent-timeout=5

call-fork-current-branches-timeout=10

call-push-response-timeout=0

message-fork-late=true

message-delivery-timeout=3600

message-accept-timeout=15

fallback-route=

allow-target-factorization=false

generated-contact-route=

generated-contact-expected-realm=

generate-contact-even-on-filled-aor=false

preroute=

resolve-routes=false

parent-domain-fallback=false

[module::PushNotification]

enabled=true

filter=

timeout=5

max-queue-size=100

time-to-live=2592000

apple=true

apple-certificate-dir=/etc/flexisip/apn

google=true

google-projects-api-keys=

firebase=true

firebase-projects-api-keys=

windowsphone=true

windowsphone-package-sid=

windowsphone-application-secret=

no-badge=false

external-push-uri=

external-push-method=GET

[module::MediaRelay]

enabled=true

filter=

nortpproxy=nortpproxy

sdp-port-range-min=1024

sdp-port-range-max=65535

bye-orphan-dialogs=false

max-calls=0

force-relay-for-non-ice-targets=true

prevent-loops=true

early-media-relay-single=true

max-early-media-per-call=0

inactivity-period=3600

force-public-ip-for-sdp-masquerading=false

[module::Transcoder]

enabled=false

filter=

jb-nom-size=0

rc-user-agents=

audio-codecs=speex/8000 amr/8000 iLBC/8000 gsm/8000 pcmu/8000 pcma/8000 telephone-event/8000

remove-bw-limits=false

block-retransmissions=false

[module::Forward]

enabled=true

filter=

route=

add-path=true

rewrite-req-uri=false

default-transport=udp

params-to-remove=pn-tok pn-type app-id pn-msg-str pn-call-str pn-call-snd pn-msg-snd pn-timeout

[inter-domain-connections]

accept-domain-registrations=false

assume-unique-domains=false

domain-registrations=/etc/flexisip/domain-registrations.conf

verify-server-certs=true

keepalive-interval=30

reg-when-needed=false

[module::ContactRouteInserter] enabled=true insert-domain=true

shdaro commented 5 years ago

Hi tdnguyen1006, This not a part of your raised issue. sorry for that.

Could you please tell me a bit about your installation and configuration . how you configured flexisip for linphone and assigned all the APN certificate. I will be grateful to you.

tdnguyen1006 commented 5 years ago

Hi ronydatta, I use 2 servers, one for Flexisip and one for my PBX. To install Flexisip, I follow this link https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Installation/ for installation on Centos 7. Just make sure you follow the guide carefully. For configuration, I posted my config file above. You can try that and make sure that you open port for UDP/TCP and RTP. For APN certificate, I used VoIP Certificate only because Push Notification certificate didn't work. On Linphone app, enable Push Notification, Outbound Proxy options, and fill the address of your Flexisip server into Proxy field. If you have the same problem as mine and you find the solution, please let me know 👍 Hope this helps.

shdaro commented 5 years ago

Thank you tdnguyen. If I solve the issue I'll let you know.

julianprs commented 5 years ago

Hi guys, I'm trying to achieve the same thing but I am having some basic issue understanding the config. Where do you define the external server to forward the SIP requests to and in what format? Can you guys give me an example of exactly how you defined it? I assume it is route= and that you have to have reg-on-response set to true. What more am I missing?

tdnguyen1006 commented 5 years ago

Hi Julian, You can try my config above. That's all I have to define on Flexisip Server. On the Linphone app, when you use your sip account, fill in your sip username, sip password, PBX domain (not Flexisip domain). After this, go to this account setting, enable Push Notification and Outbound Proxy. Fill in the outbound proxy with your Flexisip domain. If your account is still registered, it is correct. As far as I know, this setting works for me and only have 30s incoming call problem. I tried to catch package flow with TCPDUMP on both PBX and Flexisip Server and found that whenever Flexisip received ACK package from PBX, it didn't respond or forward that package. If you find a solution, please let me know. Hope this helps.

smrdoshi commented 4 years ago

Hi @tdnguyen1006

Have you got the solution to your issue? If you have then please share.

Thanks for the help in advance.

cardinaltm commented 3 years ago

Hello, maybe its help to you, about call crash 30 seconds

https://github.com/BelledonneCommunications/flexisip/issues/116#issuecomment-817147685