iaxmodem keine Verbindung, Fax geht nicht

Xandrian

Neuer User
Mitglied seit
30 Dez 2006
Beiträge
187
Punkte für Reaktionen
0
Punkte
16
Guten Morgen,

nach langer Zeit schreibe ich auch mal wieder hier etwas da ich ein kleines Problem habe. Seit kurzem habe ich einen T-Online Magenta M Anschluss und somit VoIP. Verwaltet wird das Ganze mit einem Asterisk (1.8.32) auf meiner pfSense Box. Bis auf ein paar Kleinigkeiten funktioniert das auch alles (da geh ich evtl noch einmal gesondert drauf ein).

Größere Probleme macht mir das Fax. Eingerichtet wurde das nach dieser Anleitung: http://das-asterisk-buch.de/1.6/faxserver.html

HylaFax und iaxmodem sind installiert und laufen (theoretisch). Hier gehen an sich aber schon die Probleme los. Ein faxstat liefert folgendes:
Code:
faxstat
Warning, setsockopt(TOS): Invalid argument (ignored)
Warning, setsockopt(IP_TOS): Invalid argument
HylaFAX scheduler on pfSense.tobias.bauer.network: Running
Modem ttyIAX0 (+49.921.75866147): Running and idle

Der serielle Anschluss vom iaxmodem ist an sich hier und auch beim faxsetup wurde dieser sauber erkannt.
Code:
ls -lah /dev/ttyIAX0
lrwxr-xr-x  1 root  wheel    10B Mar 14 07:41 /dev/ttyIAX0 -> /dev/pts/3

Im Log vom iaxmodem finde ich folgendes:
Code:
[2016-03-14 07:42:29] Registration timed out.
[2016-03-14 07:47:24] Registration timed out.
[2016-03-14 07:52:19] Registration timed out.

Die Konfiguration des Modems (/usr/local/etc/iaxmodem/iaxmodem-cfg.ttyIAX0) schaut wie folgt aus:
Code:
device          /dev/ttyIAX0
owner           uucp:uucp
mode            660
port            4570
refresh         60
server          127.0.0.1
peername        iaxmodem
secret          XXXXXXXX

und das hier ist meine iax.conf:
Code:
[general]
bindport = 4569
bindaddr = 0.0.0.0
disallow = all
allow = alaw
allow = ulaw

[iaxmodem]
type = friend
secret = XXXXXX
port = 4570
host = dynamic
context = fax-out
disallow = all
allow = alaw

Schau ich mir im Asterisk nun die Peers an, so scheint hier schon mal keine Verbindung vorhanden zu sein:
Code:
pfSense*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status
iaxmodem         (null)          (D)  255.255.255.255  0             Unmonitored
1 iax2 peers [0 online, 0 offline, 1 unmonitored

Rufe ich jetzt auf der Faxnummer an bzw. versuche ein Testfax zu senden wird sofort aufgelegt. Folgendes steht dann im Debug-Log:
Code:
Verbosity was 0 and is now 3
    -- Executing [0000000000@from-telekom:1] Verbose("SIP/telekom-in-00000000", "Incoming call via DTAG") in new stack
Incoming call via DTAG
    -- Executing [0000000000@from-telekom:2] Dial("SIP/telekom-in-00000000", "IAX2/iaxmodem") in new stack
[Mar 14 07:57:01] WARNING[-1]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [0000000000@from-telekom:3] Hangup("SIP/telekom-in-00000000", "") in new stack
  == Spawn extension (from-telekom, 092175866147, 3) exited non-zero on 'SIP/telekom-in-00000000'

Diese Ausgabe ist für mich auch sinnig. Die Verbindung zum iaxmodem ist nicht möglich und deswegen bricht das Ganze ab. Die Frage ist nun, was läuft hier falsch? Vielleicht kann mir jemand einen Tipp geben. Wenn noch weitere Informationen benötigt werden einfach melden. Ich habe jetzt hier das zusammen geschrieben was mir sinnig erschien.

Schon mal vielen Dank dafür und schöne Grüße
 
In erster Näherung ist Deine iax.conf anzupassen:

Code:
[general]
bindport = 4569
bindaddr = 0.0.0.0
[B]calltokenoptional=127.0.0.1/255.255.255.255[/B]
disallow = all
allow = alaw
allow = ulaw

[iaxmodem]
type = friend
secret = XXXXXX
[B]requirecalltoken=no[/B]
port = 4570
host = dynamic
context = fax-out
disallow = all
allow = alaw

Danach dann mal den Asterisk neu starten. Das sollte die Registrierung ermöglichen.

Das

Warning, setsockopt(TOS): Invalid argument (ignored)
Warning, setsockopt(IP_TOS): Invalid argument

scheint vom hylafax zu kommen, ich tippe auf einen Konfigurationsfehler in /var/spool/hylafax/etc, aber das dürfte sekundär sein. Wenn da irgendeine TOS-Angabe in der config.ttyIAX drin ist, diese einfach rauswerfen, das versteht hylafax nicht.
 
Hi,

danke abw1oim für deine Antwort. Ich habe die iax.conf wie von dir vorgeschlagen geändert und den Asterisk neu gestartet. Eine Änderung sehe ich nicht. Sprich ich habe noch immer scheinbar keine Verbindung zum iaxmodem.

Hier die Peers
Code:
Name/Username    Host                 Mask             Port          Status    
iaxmodem         (null)          (D)  255.255.255.255  0             Unmonitored
1 iax2 peers [0 online, 0 offline, 1 unmonitored]

Und das erhalte ich bei einem Call:
Code:
    -- Executing [XXXXXXXXXXXXXXXX@from-telekom:1] Verbose("SIP/telekom-in-00000000", "Incoming call via DTAG") in new stack
Incoming call via DTAG
    -- Executing [XXXXXXXXXXXXXXXX@from-telekom:2] Dial("SIP/telekom-in-00000000", "IAX2/iaxmodem") in new stack
[Mar 14 10:21:08] WARNING[-1]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [XXXXXXXXXXXXXXXX@from-telekom:3] Hangup("SIP/telekom-in-00000000", "") in new stack
  == Spawn extension (from-telekom, XXXXXXXXXXXXXXXX, 3) exited non-zero on 'SIP/telekom-in-00000000'

Klingt für mich danach, dass das Modem nicht erreichbar ist weil "absent".
 
Der iaxmodem-Prozess läuft aber?
Was sagt iax2 set debug im Asterisk?
 
Ja, iaxmodem läuft.
Code:
ps aufxw |grep iaxmodem
root     56104   0.0  0.1  28452  2812  -  Is   10:25AM   0:00.00 /usr/local/sbin/iaxmodem
uucp     56676   0.0  0.1  28452  3544  -  I    10:25AM   0:00.37 /usr/local/sbin/iaxmodem

Das sehe ich, wenn ich den iax2 set debug mache und eine Anruf auslöse:
Code:
No such command 'iax2 set debug' (type 'core show help iax2 set debug' for other possible commands)
    -- Executing [0000000000000000@from-telekom:1] Verbose("SIP/telekom-in-00000001", "Incoming call via DTAG") in new stack
Incoming call via DTAG
    -- Executing [0000000000000000@from-telekom:2] Dial("SIP/telekom-in-00000001", "IAX2/iaxmodem") in new stack
[Mar 14 13:34:01] WARNING[-1]: app_dial.c:2345 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [0000000000000000@from-telekom:3] Hangup("SIP/telekom-in-00000001", "") in new stack
  == Spawn extension (from-telekom, 092175866147, 3) exited non-zero on 'SIP/telekom-in-00000001'

Irgendwie seh ich da nicht mehr als vorher oder kann ich das anderweitig auslösen/debugen?
 
Mein Fehler, korrekt ist: iax2 set debug on
Du brauchst dann auch keine Anruf, es geht erst mal nur darum herauszufinden, woran die Kommunikation iaxmodem <-> Asterisk scheitert (da Du ja kein register bekommst) ...
 
Hm, sollte ich da was sehen? Das einzige was er mir anzeigt sind SRV Lookups zu den Registrierten Accounts (wobei das ja kein iax2 ist)
 
Also: Falls Dein iaxmodem versucht, mit dem Asterisk zu "reden", sollte da in etwa so etwas im iax2 debug auftauchen (in einigem zeitlichen Abstand):

Code:
Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: REGREQ
   Timestamp: 00003ms  SCall: 31057  DCall: 00000 [127.0.0.1:4573]
   USERNAME        : iaxmodem
   REFRESH         : 60

Tx-Frame Retry[-01] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: ACK
   Timestamp: 00003ms  SCall: 04402  DCall: 31057 [127.0.0.1:4573]
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 001 Type: IAX     Subclass: REGAUTH
   Timestamp: 00014ms  SCall: 04402  DCall: 31057 [127.0.0.1:4573]
   AUTHMETHODS     : 3
   CHALLENGE       :1234567
   USERNAME        : iaxmodem

Rx-Frame Retry[ No] -- OSeqno: 001 ISeqno: 001 Type: IAX     Subclass: REGREQ
   Timestamp: 00003ms  SCall: 31057  DCall: 04402 [127.0.0.1:4573]
   USERNAME        : iaxmodem
   MD5 RESULT      : 1234567
   REFRESH         : 60

Tx-Frame Retry[-01] -- OSeqno: 001 ISeqno: 002 Type: IAX     Subclass: ACK
   Timestamp: 00003ms  SCall: 04402  DCall: 31057 [127.0.0.1:4573]
Tx-Frame Retry[000] -- OSeqno: 001 ISeqno: 002 Type: IAX     Subclass: REGACK
   Timestamp: 00017ms  SCall: 04402  DCall: 31057 [127.0.0.1:4573]
   USERNAME        : iaxmodem
   DATE TIME       : 2016-03-14  18:44:06
   REFRESH         : 60
   APPARENT ADDRES : IPV4 127.0.0.1:4573
   CALLING NUMBER  : 600
   CALLING NAME    : ""

Rx-Frame Retry[ No] -- OSeqno: 002 ISeqno: 002 Type: IAX     Subclass: ACK
   Timestamp: 00017ms  SCall: 31057  DCall: 04402 [127.0.0.1:4573]

Das wwäre eine register-Sequenz (hier: Erfolgreich).
 
Hm, dann haben die zwei eine Ehekrise und reden nicht miteinander...

So, jetzt ist die Frage warum. Aber evtl. hat das doch was mit dem Socket Fehler beim faxstat zu tun. Das hier irgendwas nicht passt. Die Frage ist nur was den ich bin hier ehrlich gesagt überfragt... :(
 
Hallo,

ich bin hier etwas weiter aber funktionieren tut es trotzdem nicht... Was habe ich gemacht?

Meine iax.conf schaut jetzt wie folgt aus:
Code:
[general]
bindport = 4569
bindaddr = 0.0.0.0
calltokenoptional=127.0.0.1/255.255.255.255
autokill=yes
disallow = all
allow = alaw
allow = ulaw

[iaxmodem]
type = friend
port = 4570
secret = 65741
requirecalltoken=no
;host = dynamic
host = 127.0.0.1
qualify = yes
context = fax-out
disallow = all
allow = alaw
notransfer = yes

[guest]
type=user
context=default
callerid="Guest IAX User"

Neu ist hier, dass ich das iaxmodem auf die 127.0.0.1 gebunden habe. Die Peers schauen jetzt erst mal so aus:
Code:
iax2 show peers
Name/Username    Host                 Mask             Port          Status
iaxmodem         127.0.0.1       (S)  255.255.255.255  [B]4569[/B]          OK (3 ms)
1 iax2 peers [1 online, 0 offline, 0 unmonitored]

Das erste Problem hier ist schon einmal, dass der Port die 4569 und nicht die 4570 ist. Warum? Keine Ahnung. Der Port ist bis auf im General nirgends definiert und auch das iaxmodem lauscht sauber auf 4570.

Beim Debug sehe ich jetzt natürlich etwas:
Code:
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00008ms  SCall: 01911  DCall: 00000 [127.0.0.1:4569]

Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00008ms  SCall: 01911  DCall: 00000 [127.0.0.1:4569]

[Mar 16 13:54:10] NOTICE[-1]: chan_iax2.c:12205 __iax2_poke_noanswer: Peer 'iaxmodem' is now UNREACHABLE! Time: 3
Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00005ms  SCall: 07741  DCall: 00000 [127.0.0.1:4569]

Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00005ms  SCall: 07741  DCall: 00000 [127.0.0.1:4569]

Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00003ms  SCall: 00654  DCall: 00000 [127.0.0.1:4569]

Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE
   Timestamp: 00003ms  SCall: 00654  DCall: 00000 [127.0.0.1:4569]

Zuerst ist der Peer ja erreichbar (was zwar Käse ist weil das ja der Asterisk und nicht das iaxmodem ist). Danach verlier ich das und der Peer ist unrechable (was so gesehen korrekt ist).

Nur warum will sich der mit dem Port 4569 verbinden und nimmt nicht den 4570???

Vielen Dank schon einmal.
 
NoOp: Mit festem host-Eintrag in der iax.conf verhinderst Du eine mögliche Registrierung. Deshalb siehst Du auch POKEs, aber keine REG-Requests.
Das erklärt zwar in der Tatnicht wirklich die Portangabe (da hätte Asterisk die 4570 laut iax.conf ziehen sollen), aber das passt so nicht. Entscheidend scheint mir hier nach wie vor, dass Dein iaxmodem selbst keinen Kommunikationsversuch zum Asterisk unternimmt. An der Ecke liegt der Hund dann auch begraben ...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.