Tunneling IAX2 VoIP gjennom en SSH tunnel
Just for kicks, prøvde jeg å koble sammen to Asterisk servere gjennom en SSH tunnel til sted kryptert samtaler via IAX2 fra BOX1 til BOX2. Det fungerte, men lydkvaliteten er stygg og FIFO natur UDP-konvertere trafikk til TCP-trafikk ga noen merkelige resultater. Men tross alt lærte jeg mye å gjøre det ....
Hva vi trenger:
- 2 Asterisk bokser
- Rot på BOX2
- Ssh
- Socat
Hva jeg gjorde:
Koble begge boksene med en SSH port-forwarding for å få samtaler gjennom internett. Konverter IAX2 UDP-trafikk fra å komme inn i Asterisk Box1s med socat TCP, ettersom UDP ikke støtter SSH tunneling. Send data via TCP tunnelen. Plukk den opp på den andre siden med socat og konvertere den tilbake til UDP. Mate UDP data inn målet stjerne.
Hvordan jeg gjorde det:
BOX1:
kontekst å mate på utgående ringe inn i våre socat converter:
utstrakt => 3,1, Dial (IAX2/user: pass@127.0.0.1: 10000 / 1)
sette opp socat:
socat udp4 lister: 10000, reuseaddr, gaffel tcp: 127.0.0.1:10001
sette opp våre ssh tunnel:
ssh-l root @ box2 10001:127.0.0.1:10000
Box2:
Sette opp socat å plukke opp TCP stream fra tunnelen og gi det til stjerne:
socat tcp4-lytte: 10000, reuseaddr, gaffel UDP: 127.0.0.1:4569
iax.conf:
[Generelt]
bindport = 4569
bindaddr = 0.0.0.0
forbyr = alle
tillate = ulaw
tillate = aLaw
[Box1]
type = peer
username = bruker
secret = pass
auth = plaintext
kontekst = iax-tunnel
peer kontekst = iax-tunnel
kvalifisere = yes
trunk = yes
Tunnelen iax sammenhengen bare spille et pip:
; IAX testing
[Iax-tunnel]
utstrakt => 1,1, Svar ()
utstrakt => 1,2, Avspilling (pip)
utstrakt => 1,3, Legg på ()
Enjoy ...

