Egyirányú hang mobilnetről – hogyan győztem le a CGNAT‑ot Groundwire + Asterisk alatt

Az utóbbi időben egy idegesítő hibával küzdöttem: iPhone + Groundwire softphone mobilnetről simán felépítette a hívást a saját Asterisk/Issabel PBX-emre, a túloldal hallott engem, de a telefon felé nem jött be hang. Klasszikus „egyirányú hang” tünet, minden VoIP‑os rémálma.

A helyzetet bonyolította, hogy mobilneten, dupla NAT/CGNAT mögött vagyok, így elsőre mindenki NAT‑ra mutogat. De a konkrét ok végül nem a Groundwire‑ben, hanem a PBX NAT/média beállításában volt.

Tünetek: minden jelzés oké, csak a hang hiányzik

A hívások jelzés szinten hibátlanul működtek:

  • REGISTER / INVITE / 200 OK / ACK szépen lement.
  • A hívás felépült, a túloldal rendesen hallott.
  • A Groundwire oldalon viszont néma volt a bejövő hang.

A Groundwire debug logjaiban látszott, hogy:

  • a kliens folyamatosan küldi az RTP csomagokat a PBX felé (Sent Audio RTP packet…),
  • viszont bejövő RTP‑ről semmi nyom, és a hívás közben „AudioIoaudioDataReadAccumulate Not Enough Data” üzenetek jelentek meg.

Vagyis: uplink van, downlink nincs – ez szinte mindig NAT/média irányú probléma.

Első nyomok: mit mond az SDP?

Megnéztem az INVITE/200 OK SDP‑ket.

A PBX (pintyo‑s rendszer) így hirdette a médiát:

v=0
o=root 1233995227 1233995227 IN IP4 84.224.109.185
s=Asterisk PBX 18.19.0
c=IN IP4 84.224.109.185
t=0 0
m=audio 18314 RTP/AVP 8 0 3 107 101
a=rtpmap:8 PCMA/8000
...
a=sendrecv

A Groundwire erre az alábbi saját SDP‑vel válaszolt:

c=IN IP4 192.168.11.91
m=audio 60330 RTP/AVP 8 101
...
a=sendrecv

A kliens tehát a 192.168.11.91:60330‑ról küldi az RTP-t kifelé. Mobilnet + Wi‑Fi‑s környezetben ez a cím valójában egy belső IP, ami CGNAT után egy teljesen más publikus IP/portra fordul át. A PBX viszont nem azt a címet használta vissziránynak, ahonnan ténylegesen érkezett az RTP, hanem a saját NAT‑logikáját követte.

Kulcs: mit tud a chan_sip peer NAT‑ról?

A következő lépés az volt, hogy megnézzem a 201-es mellék státuszát Asteriskben:

asterisk -rx "sip show peer 201"

A fontos részek:

Force rport  : No
Symmetric RTP: No
DirectMedia  : No
Addr->IP     : 167.99.119.203:31645
Reg. Contact : sip:201@10.65.11.2:31645;rinstance=...

A DirectMedia (canreinvite) szerencsére már eleve ki volt kapcsolva, viszont:

  • Force rport: No
  • Symmetric RTP: No

Tehát a chan_sip peer gyakorlatilag nem használta azt a forrás IP/port párost, ahonnan a kliens valójában jött, hanem az SDP‑ben megadott címre próbált visszaküldeni. Ez LAN‑on még elmegy, de CGNAT mögött biztos bukás.

Ezzel tulajdonképpen meg is volt a diagnózis:
nem a Groundwire, hanem a chan_sip NAT/média logikája volt alkalmatlan CGNAT‑os kliensekhez.

A megoldás: NAT a PBX oldalán, nem a kliensben

A fix három lépésből állt.

1. Globális NAT beállítás chan_sip-hez

Először a globális SIP NAT‑ot tettem rendbe:

; /etc/asterisk/sip_general_custom.conf

externip = 84.224.109.185
localnet = 192.168.0.0/16
nat = force_rport,comedia
  • externip – a PBX publikus IP‑je.
  • localnet – a belső háló(k).
  • nat = force_rport,comedia – ez adja meg a kívánt NAT‑viselkedést (rport + comedia).

Ez biztosítja, hogy a PBX tudja, mikor van NAT mögött, és hogyan kezelje a kliens címét.

2. NAT és DirectMedia kikapcsolása a 201-es melléken

Mivel a mellékeket az Issabel GUI kezeli, a per‑peer NAT‑ot a webes felületen állítottam:

  • A 201-es melléknél a NAT mezőt Yes-re tettem.
  • A Direct Media (canreinvite) alapból No, de ha látszik ilyen mező, akkor mindenképp No legyen.

A háttérben ez a konfiguráció jött létre:

[201]
host=dynamic
type=friend
context=from-internal
secret=...
nat=force_rport,comedia
directmedia=no
...

Reload után újra megnéztem:

asterisk -rx "sip show peer 201"

És végre ez fogadott:

Force rport  : Yes
Symmetric RTP: Yes
DirectMedia  : No

Vagyis:

  • rport használat: bekapcsolva
  • symmetric RTP: bekapcsolva
  • direct media / canreinvite: kikapcsolva

Pont ez kell CGNAT mögötti kliensekhez.

3. Újratesztelés Groundwire-rel

Ugyanabból a mobilnetes környezetből indítottam újra a hívást a 201-es mellékre Groundwire-rel.

Eredmény:

  • A hívás jelzés szinten ugyanúgy felépült.
  • A túloldal továbbra is hallotta a mobilt.
  • És végre a Groundwire‑en is megjelent a bejövő hang – kétirányú, stabil be

Rézvezetékek maximális áramterhelhetősége

Az alábbi táblázat összefoglalja a különböző keresztmetszetű rézvezetékek maximális áramterhelhetőségét:

Keresztmetszet (mm²)Maximális áramterhelhetőség (A)
0,55
0,757
1,010
1,514
2,520
4,028
6,037
1052
1670
2595

Például a 1,5 mm²-es vezeték esetében a maximális áramterhelhetőség 14 amper. Ez az érték azonban változhat a telepítés módjától és a környezeti feltételektől függően. Magasabb környezeti hőmérséklet vagy zárt csatornában történő elhelyezés esetén a vezeték terhelhetősége csökkenhet. Ezért mindig figyelembe kell venni a konkrét körülményeket és a vonatkozó szabványokat a pontos méretezéshez.

A vezetékek terhelhetőségének helyes meghatározása elengedhetetlen a biztonságos és hatékony villamos hálózat kialakításához. A túlterhelt vezetékek túlmelegedhetnek, ami tűzveszélyhez vezethet. Ezért fontos, hogy a tervezés és a kivitelezés során mindig konzultáljunk szakemberrel, és tartsuk be a vonatkozó szabványokat és előírásokat.

A biztonságos üzemeltetés érdekében mindig vegyük figyelembe a konkrét feltételeket és alkalmazzuk a megfelelő méretezést.

A lakószoba fűtési igényének meghatározása

A lakószoba fűtési igényének pontos meghatározása több tényezőtől függ, beleértve a helyiség méretét, a szigetelés minőségét, a nyílászárók típusát és a helyi éghajlati viszonyokat. Az alábbiakban bemutatok egy általános módszert a fűtési igény kiszámítására, valamint néhány fontos szempontot, amelyeket figyelembe kell venni.

1. A helyiség térfogatának kiszámítása

Először is, meg kell határoznunk a szoba térfogatát (légköbméterét). Ezt az alapterület és a belmagasság szorzataként kapjuk meg.

Példa:

  • Alapterület: 20 m² (például 5 m hosszú és 4 m széles szoba)
  • Belmagasság: 2,5 m

Térfogat = Alapterület × Belmagasság = 20 m² × 2,5 m = 50 m³

2. Fűtési teljesítmény igény meghatározása

Az átlagos hőszigetelésű épületek esetében a szükséges fűtési teljesítmény általában 35-50 watt légköbméterenként. A pontos érték a szigetelés minőségétől és az épület egyéb jellemzőitől függ.

Példa számítás átlagos szigetelés esetén:

  • Fűtési igény: 40 W/m³ (átlagos érték)

Szükséges fűtési teljesítmény = Térfogat × Fűtési igény = 50 m³ × 40 W/m³ = 2000 W

Ez azt jelenti, hogy egy 20 m²-es, 2,5 m belmagasságú szobához, átlagos szigetelés mellett, körülbelül 2000 watt (2 kW) teljesítményű fűtőberendezésre van szükség.

3. További tényezők figyelembevétele

A pontos fűtési igény meghatározásához az alábbi tényezőket is figyelembe kell venni:

  • Szigetelés minősége: Jó szigetelésű épületek esetében a szükséges teljesítmény alacsonyabb lehet, míg gyenge szigetelésnél magasabb.
  • Nyílászárók mérete és minősége: A nagyobb vagy rosszul szigetelt ablakok és ajtók növelhetik a hőveszteséget.
  • Külső falak száma: Minél több külső fal határolja a szobát, annál nagyobb a hőveszteség.
  • Éghajlati viszonyok: Hidegebb éghajlaton nagyobb fűtési teljesítményre van szükség.

4. Online kalkulátorok használata

Ha nem szeretne kézzel számolni, számos online kalkulátor áll rendelkezésre, amelyek segítenek a fűtési igény gyors meghatározásában. Ezek a kalkulátorok általában figyelembe veszik a szoba méretét, a szigetelés minőségét és egyéb releváns tényezőket.

Fontos megjegyzés: A fenti számítások tájékoztató jellegűek. A pontos fűtési igény meghatározásához érdemes szakemberhez fordulni, aki figyelembe veszi az összes releváns tényezőt és pontos számításokat végez.

Források:

Lyrojnál megint gond van…

Előzményként annyit, hogy az ügyfélnél csináltunk kettő fürdőszobát!

Az egyikben kb 2 éve eltörött egy csőidom a meleg víz oldalon! Gyakorlatilag eldiletált, elrepedt és ömlött a forróvíz! Ezt megcsináltam!

Ma reggel telefonált, hogy a másik fürdőszobában is gond van!

Megyek hozzá ma este, folyt. következik!

Ugyan az a típusú csatlakozó adta meg magát, mint a másik fürdõben,   persze nem véletlenül!