Tunnelering IAX2 VoIP gjennom en SSH tunnel
Bare for spark, prøvde jeg å koble sammen to Asterisk servere gjennom en SSH tunnel for å plassere krypterte samtaler via IAX2 fra BOX1 til BOX2. Det fungerte, men lydkvaliteten er stygg og FIFO natur konvertere UDP-trafikk inn i TCP-trafikk ga noen merkelige resultater. Men tross alt lærte jeg mye å gjøre det ....
Hva vi trenger:
- 2 Asterisk bokser
- Root på BOX2
- SSH
- Socat
Hva jeg gjorde:
Koble begge boksene med en SSH port-forwarding for å få samtalene thru Internett. Konverter IAX2 UDP-trafikk som kommer fra Box1s inn Asterisk med socat TCP, UDP fordi ikke støtter SSH tunneling. Send TCP data gjennom 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 anrop til vår socat converter:
utstrakt => 3,1, Dial (IAX2/user: pass@127.0.0.1: 10000/1)
sette opp socat:
socat udp4 hør: 10000, reuseaddr, gaffel tcp: 127.0.0.1:10001
sette opp vår 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-lytt: 10000, reuseaddr, gaffel UDP: 127.0.0.1:4569
iax.conf:
[Generelt]
bindport = 4569
bindaddr = 0.0.0.0
Forby = alle
tillate = ulaw
tillate = aLaw
[Box1]
type = peer
username = bruker
secret = pass
auth = klartekst
kontekst = IAX-tunnel
peer sammenheng = IAX-tunnel
kvalifisere = yes
trunk = yes
Tunnelen IAX sammenheng bare spille et pip:
; IAX testing
[IAX-tunnel]
utstrakt => 1,1, Svar ()
utstrakt => 1,2, Avspilling (pip)
utstrakt => 1,3, Legg på ()
Nyt ...

