tldr; hoe voip telefoons in ander netwerk via tunnel gebruik laten maken van asterisk.
Ik wil graag de voip telefoons opgesteld in een andere lokaal netwerk met een account verbinden met mijn asterisk PBX \in mijn lokale netwerk. In het andere netwerk heb ik alleen via SSH (ook root) toegang tot de Ubuntu 22.04 server die voorzien is van één ethernet interface.
Mijn eigen “server” hier een een Linux NAS voorzien is van o.a. Asterisk die o.a. mijn eigen telefonie verzorgd.
Nu wil ik graag proberen dat telefoons in het andere netwerk (A) via een SSH tunnel gebruik kunnen maken van mijn Asterisk (B).
Dit zonder de netwerk structuur te mogen of kunnen veranderen.
Het enige dat ik mag/kan doen is de telefoons voorzien van een extra account richting mijn Asterisk, en /of adressen danwel routing toevoegen op de server A die feitelijk ijn beheer staat.
Het doel is dat telefoons in netwerk A en B met elkaar kunnen bellen.
Op dit moment kan ik via ssh forward/reverse poorten aanbrengen ssh en heb nu een tunnel interface actief tussen de twee servers.
De gedachte was dat ik de telefoons in netwerk A voorzie van een acount richting server A die dan - hoe weet ik even niet - van daaruit via de opgezette ssh-tunnel-interface dan kunnen inloggen op mijn Asterisk-server in netwerk B. In netwerk A is verder geen PBX.
Ik kan/mag niet buitenom de telefoons via internet met mijn Asterisk sip2sip verbinding laten maken.
Ik kan vice versa de tunnel interfaces pingen. Wanneer ik lokale routing toevoeg op server A & B , kan ik ook vice versa hun lokale server IP-adressen bereiken. Wat NIET lukt is de adressen van telefoons tussen netwerk A & B pingen (omdat die hun gateway op hun eigen netwerk hebben staan en die gateway geen zicht heeft op de tunnel noch kan worden verandert qua routing).
Wie heeft een idee hoe ik dit verder aan te pakken ?
Ik zit zogezegd even op dood denkspoor.
Zonder de netwerkstructuur aan te passen, zou je mogelijk iets met proxy ARP kunnen proberen zoals pppd over ssh vanaf server B naar server A waardoor server B een IP adres in het netwerk 192.168.1.0/24 krijgt. Vervolgens Asterik laten binden op dat IP adres zodat de VoIP toestellen op locatie A verbinding kunnen maken.
Mogelijk is een extra IP adres op server A en dan vervolgens een destination NAT naar server B doen of op applicatie niveau op server A ook Asterik met een SIP trunk naar server B een mooiere oplossing?
Yep, two minds & same thought.
fyi: Asterisk server o.i.d. op A zou kunnen maar is zeer ongewenst (onderhoud, gedoe, aandacht en laat staan uitleggen).
Ik was inmiddels al een flink eind. Ik had A idd voorzien van een extra adres en laat die via “iptables” PREROUTE DNAT’ten naar B.
Technisch vwb werking gaat dit goed en ik kan zo vanuit B → A komen. Omgekeerd lukt dat echter nog niet.
Er is iets curieus dat die op e.o.a. manier het retourverkeer dat wordt geïnitieerd vauit A naar B (waar asterisk draait) blokkeert. Althans, de tunneladapter op B krijgt wel het uitgaande pakket maar zet dat niet op de tunnel.
Gebruik ik analoog de endpoint adres van de tunnel(s) 10.0.0.x gaat alles fanastico. Deze 10.0.0.x adressen zijn echter onbruikbaar om voip verkeer in beide netwerken (A&B) op/via 192.168.x.x staat en de telefoons geen weet noch routing hebben naar het 10.0.0.x netwerk.
Er lijkt op mijn asterisk-server (QNAP/NAS) iets van een ‘Firewall’ te zitten die het non-lokale (dwz zg niet 192.168.2.x) netwerk - onduidelijk waarom - niet wil wegsturen via de tunnel.
Alles komt wel de stack van tunnelinterface B (tcpdump 10.0.5.5 )waarna die het negeert en het dus niet uitstuurt. Mogelijk doe ik nog wat verkeerd of is er ene vage firewall. Ik kan vreemd genoeg wel vanuit B naar A pingen tussen de gerouteerde 192.168.x.x adressen maar dus niet vanuit A naar B (omdat de icmp-reply blokkeert).
Om de QNAP merites aangaande tunnelblokkade pogen uit te sluiten ga ik een setup doen met een ander doosje.
De ultieme gedachte voor dit experiment is dat ik met een simpele ssh-tunnel mijn PBX door het andere netwerk - gelijk als intern bellen - kan gaan laten gebruiken.
Ik vrees dat wat ik wil niet zo simpel mogelijk is, vooral omdat er operationele beperkingen zijn.
Ik kan (wellicht) de VOIP signalering maskeren tussen locatie A en B door vice versa te werken met NAT aliasadressen (die verkeer van een bepaalde lokale interface via de tunnel vice versa vertaalt naar het andere netwerk en dat terug/stuurt).
Dit lost helaas niet het issue op dat de lokale telefoons voor het gesprek geen (directe) sip2sip sessie kunnen opzetten omdat elkaars default gateway’s geen ‘connectie/weet’ hebben om pakketjes tussen netwerk A & B te routeren.
Een telefoon in zeg netwerk A stuurt alles dat niet lokaal is, naar de eigen default gateway in netwerk A die het pakketje zal droppen.
Voor communicatie is het nodig dat de router-gateways in die A+B netwerken met elkaar routing danwel een tunnel gaan delen. Om dit “NAT vertaal-issue” op te lossen, komt STUN in beeld dat - hier - weer allerlei andere merites geeft. Hoofdreden is dat ik in netwerk A geen structurele services mag/wil toepassen.
Inmiddels lijkt het handiger om ‘simpelweg’ een aparte VOIP telefoon in netwerk A te gaan zetten en die dan uit gaan te rusten met een IP-adres van netwerk B welk dan transparant routeert op/via de tunnel tussen A+B.