SIP కాల్ VPN ద్వారా నమోదు అవుతుంది కానీ ఆడియో ఎందుకు పంపదు
నమోదు మరియు ఆడియో వేర్వేరు మార్గాలను తీసుకుంటాయి. ఒక కాల్ను సొరంగం ద్వారా అనుసరించి PBX ఏ చిరునామాలను ఉపయోగించగలదో మరియు RTP నిజంగా ఎక్కడ ఆగుతుందో చూడండి.
విజయవంతమైన నమోదు ఆడియో గురించి దాదాపు ఏమీ చెప్పదు. ఒక సాఫ్ట్ఫోన్ గంటల తరబడి కార్యాలయ PBX తో చెల్లుబాటు అయ్యే బంధాన్ని ఉంచుకొని అయినా మౌనాన్నే అందించగలదు. సొరంగం ఎవరైనా ఉద్దేశపూర్వకంగా లోపలికి పంపే ప్యాకెట్లను మాత్రమే మోసుకెళ్తుంది, ఒక కాల్ మూడు వేర్వేరు మార్గాలను ఉపయోగిస్తుంది: బంధం, సంభాషణ ఏర్పాటు మరియు RTP ప్రవాహం. వాటిని వేరు చేసినప్పుడు, వైఫల్యం VPN అనే పదం మీద కాకుండా ఒక మార్గం మీద పడుతుంది.
ఇంటి Wi-Fi లో ఒక ల్యాప్టాప్ ఆమోదించబడిన సొరంగం ద్వారా కార్యాలయ పొడిగింపును డయల్ చేస్తున్నట్లు ఊహించండి. PBX వినియోగదారుని ప్రామాణీకరిస్తుంది, REGISTER ను అంగీకరిస్తుంది, పొడిగింపు అందుబాటులో ఉన్నట్లు కనిపిస్తుంది, అయినా కాల్ ఒక దిశలో పూర్తి మౌనంతో కనెక్ట్ అవుతుంది.
నమోదు సంప్రదింపును కలుపుతుంది, మీడియా మార్గాన్ని కాదు
REGISTER అభ్యర్థన నమోదుదారుని రికార్డు చిరునామా మరియు ఒకటి లేదా అంతకంటే ఎక్కువ సంప్రదింపు URI ల మధ్య మ్యాపింగ్ ను నిల్వ చేయమని కోరుతుంది. ఆ మ్యాపింగ్ కొత్త సంభాషణను ఇప్పుడు ఎక్కడికి పంపాలి అనే సన్నని ప్రశ్నకు సమాధానం ఇస్తుంది. మీడియా ఎక్కడ ఉండాలి అనే దాని గురించి ఏమీ చెప్పదు, మరియు అంగీకరించబడిన నమోదు తర్వాతి INVITE చేరుకోగల మీడియా చిరునామాను కలిగి ఉందని నిరూపించదు. నమోదులు టైమర్ తో ముగుస్తాయి, కాబట్టి రిఫ్రెష్ చేయడం ఆపే ఫోన్ తన సొరంగం ఆరోగ్యంగా కనిపిస్తున్నప్పటికీ వచ్చే కాల్లను కోల్పోతుంది. సొరంగం స్థితి కాకుండా సంప్రదింపు ముగింపును గమనించండి.
సాఫ్ట్ఫోన్ సొరంగం వెనుక ఉన్నప్పుడు సంప్రదింపు శీర్షిక ప్రైవేట్ చిరునామాను కలిగి ఉండవచ్చు. దాన్ని మరో ముగింపు బిందువుకు పంపే PBX కాల్ చేయబడిన పక్షం చేరుకోలేని నెట్వర్క్ వైపు సంభాషణను సృష్టిస్తుంది. PJSIP ముగింపు బిందువు వద్ద rewrite_contact=yes సెట్ చేస్తే PBX తాను గమనించిన మూల చిరునామాను భర్తీ చేస్తుంది, మరియు ఇది తరచుగా రింగ్ మరియు సమయం ముగియడం మధ్య వ్యత్యాసం.
INVITE ఏమి అందిస్తుంది మరియు ఎవరు ఉపయోగించగలరు
SDP బాడీ కలిగిన INVITE కాల్ చేసేవారు మీడియాను ఎక్కడ స్వీకరించాలనుకుంటున్నారో ప్రతిపాదిస్తుంది: చిరునామా, పోర్ట్ మరియు కోడెక్ జాబితా. కాల్ చేయబడిన పక్షం తన స్వంత చిరునామా మరియు పోర్ట్ తో సమాధానం ఇస్తుంది, ఆపై ప్రతి వైపు మరొకరు ప్రతిపాదించిన ప్రదేశానికి RTP పంపుతుంది. కాల్ చేసేవారు తన ఇంటి నెట్వర్క్ లో మాత్రమే ఉన్న 192.168.x.x చిరునామాను ప్రతిపాదిస్తే, సిగ్నలింగ్ ఎంత శుభ్రంగా ఉన్నా కాల్ చేయబడిన పక్షానికి ఆడియో పంపే ప్రదేశం లేదు. మాస్కింగ్ ప్యాకెట్లు రౌటర్ ను విడిచిపెట్టేటప్పుడు IP శీర్షికలను తిరిగి రాస్తుంది, కానీ SDP బాడీ లోని వచనాన్ని ఎప్పటికీ తిరిగి రాయదు.
ఈ అంతరమే సంప్రదాయ ఏకదిశా కాల్ను వివరిస్తుంది: సిగ్నలింగ్ పనిచేస్తుంది ఎందుకంటే రెండు ముగింపు బిందువులు PBX ను చేరుకుంటాయి, మరియు ఆడియో విఫలమవుతుంది ఎందుకంటే ఒక ముగింపు బిందువుకు మరో NAT వెనుక మాత్రమే ఉన్న చిరునామాకు పంపమని చెప్పబడింది.
| Path | Who picks the address | Typical failure |
|---|---|---|
| REGISTER | Softphone, rewritten by the registrar if configured | Binding expires or points at a private address |
| INVITE and SDP | Each endpoint in its own offer or answer | Offer names a media address nobody can route to |
| RTP | PBX relay policy or the two endpoints | Port range blocked, or no return path |
ఆడియోను ఎవరు మోసుకెళ్తారు అనేది కాన్ఫిగరేషన్ ఎంపిక
సిగ్నలింగ్ మరియు మీడియా వేర్వేరు పాత్రలు. ప్రాక్సీ మొత్తం కాల్ లో సిగ్నలింగ్ మార్గంలో ఉండి ఒక్క RTP ప్యాకెట్ ను కూడా తాకకుండా ఉండవచ్చు. PBX మీడియా రిలే అవుతుందా అనేది సొరంగం ఉనికి మీద కాదు, కాన్ఫిగరేషన్ మీద ఆధారపడి ఉంటుంది.
నేరుగా మీడియా ఉన్నప్పుడు ముగింపు బిందువులు తామే RTP ను మార్పిడి చేసుకుంటాయి, ఇది ఒక LAN లో బాగా పనిచేస్తుంది, ఒక వైపు ఇరుకైన పోర్ట్ పరిధి వెనుక ఉన్నప్పుడు దారుణంగా పనిచేస్తుంది.
direct_media=no సెట్ చేస్తే PBX మీడియా మార్గంలోకి నెట్టబడుతుంది, దీనితో రెండు కాళ్లూ అది నియంత్రించే చిరునామా వద్ద ముగుస్తాయి, మరియు ఇది అంచనా వేయగల చిరునామాకు బ్యాండ్విడ్త్ మరియు ప్రాసెసర్ ను మార్పిడి చేస్తుంది. రిలే చేసేటప్పుడు PBX ఇప్పటికీ చేరుకోగల చిరునామాను ప్రకటించాలి. బహుళ నెట్వర్క్ హోస్ట్ లో pjsip.conf లోని external_media_address మరియు external_signaling_address SDP లో మరియు Via శీర్షికలలో ఏమి కనిపిస్తుందో నిర్ణయిస్తాయి. వాటిని సెట్ చేయకుండా వదిలేస్తే, ఏకైక మార్గం సొరంగం దూరపు వైపు ఉన్న కాల్ చేసేవారికి PBX తన LAN చిరునామాను అందించవచ్చు.
సెట్టింగ్లను తాకడానికి ముందు ప్రతి దిశను అనుసరించండి
కాల్ యాక్టివ్ గా ఉన్నప్పుడు PBX లోని సాకెట్ పట్టికతో ప్రారంభించండి: ss -uanp | grep -E '5060|10000' RTP పోర్ట్లు బంధించబడ్డాయా మరియు ఏ స్థానిక చిరునామాను ఉపయోగిస్తున్నాయో చూపిస్తుంది. మీడియా పరిధిలో ఏమీ బంధించబడకపోతే రిలే యాక్టివ్ కాదు మరియు ముగింపు బిందువులు నేరుగా మాట్లాడుతున్నాయి. ఆపై సాఫ్ట్ఫోన్ వైపు tcpdump -ni any -s0 udp portrange 10000-20000 -w rtp.pcap తో క్యాప్చర్ చేయండి. వచ్చే ప్యాకెట్లు లేని వెళ్లే ప్యాకెట్లు సమస్యను తిరిగి వచ్చే మార్గానికి లేదా దూరపు పక్షానికి ఉపయోగించమని చెప్పిన చిరునామాకు సంకుచితం చేస్తాయి, మరియు ఖాళీ క్యాప్చర్ అంటే మీడియా సొరంగం ఇంటర్ఫేస్ ను చేరుకోనే లేదు. sngrep తో సిగ్నలింగ్ క్యాప్చర్ మరో సగానికి సమాధానం ఇస్తుంది, SDP కనెక్షన్ లైన్ ను పంపిన విధంగా చూపిస్తూ.
ఆ కనెక్షన్ లైన్ లోని చిరునామాను దూరపు పక్షం నిజంగా మార్గనిర్దేశం చేయగల చిరునామాతో పోల్చండి. ఆ ఒక్క పోలికే చాలా ఏకదిశా ఆడియో నివేదికలను ఏదైనా కాన్ఫిగరేషన్ సమీక్ష కంటే వేగంగా పరిష్కరిస్తుంది.
ఎన్క్రిప్షన్ సొరంగం అంచు వద్ద ఆగుతుంది
TLS మీద SIP తన కోసం కాన్ఫిగర్ చేయబడిన సిగ్నలింగ్ హాప్ ను రక్షిస్తుంది, రెండు చివరలు అంగీకరించినప్పుడు SRTP మీడియాను రక్షిస్తుంది, మరియు సొరంగం తన స్వంత ముగింపు బిందువుల మధ్య ట్రాఫిక్ ను రక్షిస్తుంది. వాటిలో ఏదీ మిగతావాటిని ఇవ్వదు. సొరంగం లోపల ఎన్క్రిప్ట్ చేయబడిన కాల్ కూడా గేట్వేను విడిచి PBX వైపు స్పష్టమైన పాఠ్యంగా వెళ్లవచ్చు, మరియు ఇది లోపం కాదు, రూపకల్పన నిర్ణయం.
టికెట్ మూసివేసే ముందు మూడు విషయాలను వరుసగా నిర్ధారించండి: నమోదు తాజాగా ఉంది, SDP దూరపు పక్షం చేరుకోగల చిరునామాను కలిగి ఉంది, మరియు మీడియా పోర్ట్లలో ప్యాకెట్లు రెండు దిశలలో ప్రవహిస్తున్నాయి. వాటిలో ఏదైనా అసత్యమైతే సమస్య సొరంగంలో లేదు. విఫలమైన మార్గాన్ని సరిచేయండి, ఆపై మార్పును నిర్ధారించడానికి అదే క్యాప్చర్ ను మళ్లీ నడపండి. ముందు మరియు తర్వాత క్యాప్చర్లను ఉంచుకుంటే తదుపరి ఏకదిశా నివేదిక పూర్తి మధ్యాహ్నం కాకుండా ఐదు నిమిషాల తనిఖీ అవుతుంది.