2016-04-14 133 views
1

我有這樣的結構:Coturn/turnserver:錯誤437:不匹配的分配:錯誤的事務ID(的WebRTC)

  • Web服務器:Apache的。它在一個LAN中。它是在一個電腦(Windows 7),它具有公共靜態IP。電腦在網絡中。
  • 信號服務器:在同一臺PC上的VM(VirtualBox Centos 6)中。
  • STUN/TURN服務器:Coturn「4.5.0.4」。在同一臺PC上的VM(VirtualBox Centos 6)中。
  • 客戶端A:筆記本電腦,Vista。我使用三星移動和USB共享來獲得(外部)互聯網。移動使用「移動數據」連接到互聯網。
  • 客戶端B:筆記本電腦,Windows 8(或Windows 10)。我使用三星平板電腦和USB共享(外部)互聯網。平板電腦使用「移動數據」連接到互聯網。

我跑coturn/turnserver這樣的:

sudo turnserver -X xxx.xx.xxx.xx (this is my static external ip) 

我已經創建了端口轉發:

3479 -> 3478 for TCP 
3479 -> 3478 for UTP 
5348 -> 5349 for TCP 
5348 -> 5349 for UTP 

我用coturn的默認配置文件,這些變化:

verbose 
fingerprint 
lt-cred-mech 
realm=mycompany.org 
cert=server.crt 
pkey=server.key 
pkey-pwd=.... (it has been omitted) 
log-file=/var/tmp/turnserver.log 
simple-log 

我已經創建了文件server.crt和server.key a nd我知道他們是對的,因爲我可以使用Web管理工具,需要他們運行與https

我已經創建管理員用戶。我已經創建了一個用戶 「TEST4」 一鍵使用:

sudo turnadmin -k -u test4 -r mycompany.org -p test 

,我用它來創建他:

sudo turnadmin -a -b "/var/db/turndb" -u test4 -r mycompamy.org -p ...... 

在客戶端:

var STUN = { 
    urls: "stun:xxx.xx.xxx.xx:3479" //port forward 
}; 

var TURN = { 
    urls: [ 
     "turn:xxx.xx.xxx.xx:3479?transport=udp", 
     "turn:xxx.xx.xxx.xx:3479?transport=tcp", 
     "turn:xxx.xx.xxx.xx:3479" 
    ], 
    username : "test4", 
    credential : "......................", (it's the key. it has been omitted) 
}; 

的消息,我是從得到coturn/turnserver是這樣的:

242: handle_udp_packet: New UDP endpoint: local addr 10.0.2.15:3478, remote addr 10.0.2.2:60113 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
242: handle_udp_packet: New UDP endpoint: local addr 10.0.2.15:3478, remote addr 10.0.2.2:60075 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
242: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
243: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
243: session 000000000000000003: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
243: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
243: session 000000000000000002: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
243: IPv4. Local relay addr: 10.0.2.15:55037 
243: session 000000000000000003: new, realm=<mycompany.org>, username=<test4>, lifetime=600 
243: session 000000000000000003: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
243: IPv4. Local relay addr: 10.0.2.15:52683 
243: session 000000000000000002: new, realm=<mycompany.org>, username=<test4>, lifetime=600 
243: session 000000000000000002: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
243: session 000000000000000003: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
243: session 000000000000000002: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
243: session 000000000000000003: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
243: session 000000000000000002: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
244: session 000000000000000002: refreshed, realm=<mycompany.org>, username=<test4>, lifetime=0 
244: session 000000000000000002: realm <mycompany.org> user <test4>: incoming packet REFRESH processed, success 
244: session 000000000000000003: refreshed, realm=<mycompany.org>, username=<test4>, lifetime=0 
244: session 000000000000000003: realm <mycompany.org> user <test4>: incoming packet REFRESH processed, success 
245: session 000000000000000002: closed (2nd stage), user <test4> realm <mycompany.org> origin <>, local 10.0.2.15:3478, remote 10.0.2.2:60113, reason: allocation timeout 
245: session 000000000000000002: delete: realm=<mycompany.org>, username=<test4> 
245: session 000000000000000003: closed (2nd stage), user <test4> realm <mycompany.org> origin <>, local 10.0.2.15:3478, remote 10.0.2.2:60075, reason: allocation timeout 
245: session 000000000000000003: delete: realm=<mycompany.org>, username=<test4> 

我在這裏錯過了什麼?爲什麼在控制檯中會出現「ICE失敗」?

https://tools.ietf.org/id/draft-ietf-behave-turn-08.html 瞭解

"error 437: Mismatched allocation: wrong transaction ID" 

它說

437(配置不匹配):這表明客戶端已經挑了 5元組的服務器中爲看到已經使用或最近使用的是哪個 。這種情況發生的一種方式是,如果一個介入的NAT分配了一個 映射傳輸地址,該地址最近被另一個分配使用。 客戶端應該選擇另一個客戶端傳輸地址並重試 分配請求(使用不同的事務ID)。在放棄 這臺服務器之前,客戶端應該嘗試三個不同的客戶端傳輸地址。一旦客戶端放棄服務器,它不應該嘗試 在服務器上創建另一個分配2分鐘。

這是什麼意思?

立即更新

,當客戶A使用Chrome的 「49.02623.112 M」(因爲是在Vista上我不能再更新)和客戶端B 「50.0.2661.75 m」 的coturn服務器的工作原理罰款幾秒鐘。我這樣運行服務器(我不知道這是否有幫助,XXX.XX.XXX.XX是服務器虛擬機所在PC的公共靜態IP,192.168.2.190是內部IP):

sudo turnserver -X XXX.XX.XXX.XX/192.168.2.190 

這些日誌消息:

0: log file opened: /var/log/turn_3205_2016-04-15.log 
0: 
RFC 3489/5389/5766/5780/6062/6156 STUN/TURN Server 
Version Coturn-4.5.0.4 'dan Eider' 
0: 
Max number of open files/sockets allowed for this process: 4096 
0: 
Due to the open files/sockets limitation, 
max supported number of TURN Sessions possible is: 2000 (approximately) 
0: 

==== Show him the instruments, Practical Frost: ==== 

0: TLS supported 
0: DTLS supported 
0: DTLS 1.2 is not supported 
0: TURN/STUN ALPN is not supported 
0: Third-party authorization (oAuth) supported 
0: GCM (AEAD) supported 
0: OpenSSL compile-time version: OpenSSL 1.0.1e-fips 11 Feb 2013 
0: 
0: SQLite supported, default database location is /var/db/turndb 
0: Redis supported 
0: PostgreSQL supported 
0: MySQL supported 
0: MongoDB is not supported 
0: 
0: Default Net Engine version: 3 (UDP thread per CPU core) 

===================================================== 

0: Config file found: /etc/turnserver/turnserver.conf 
0: log file opened: /var/tmp/turnserver.log 
0: Config file found: /etc/turnserver/turnserver.conf 
0: Domain name: 
0: Default realm: mycompany.org 
0: Config file found: /etc/turnserver/server.crt 
0: Config file found: /etc/turnserver/server.key 
0: SSL23: Certificate file found: /etc/turnserver/server.crt 
0: SSL23: Private key file found: /etc/turnserver/server.key 
0: TLS1.0: Certificate file found: /etc/turnserver/server.crt 
0: TLS1.0: Private key file found: /etc/turnserver/server.key 
0: TLS1.1: Certificate file found: /etc/turnserver/server.crt 
0: TLS1.1: Private key file found: /etc/turnserver/server.key 
0: TLS1.2: Certificate file found: /etc/turnserver/server.crt 
0: TLS1.2: Private key file found: /etc/turnserver/server.key 
0: TLS cipher suite: DEFAULT 
0: DTLS: Certificate file found: /etc/turnserver/server.crt 
0: DTLS: Private key file found: /etc/turnserver/server.key 
0: DTLS cipher suite: DEFAULT 
0: NO EXPLICIT LISTENER ADDRESS(ES) ARE CONFIGURED 
0: ===========Discovering listener addresses: ========= 
0: Listener address to use: 127.0.0.1 
0: Listener address to use: 10.0.2.15 
0: Listener address to use: ::1 
0: ===================================================== 
0: Total: 1 'real' addresses discovered 
0: ===================================================== 
0: NO EXPLICIT RELAY ADDRESS(ES) ARE CONFIGURED 
0: ===========Discovering relay addresses: ============= 
0: Relay address to use: 10.0.2.15 
0: Relay address to use: ::1 
0: ===================================================== 
0: Total: 2 relay addresses discovered 
0: ===================================================== 
0: pid file created: /var/run/turnserver.pid 
0: IO method (main listener thread): epoll (with changelist) 
0: Wait for relay ports initialization... 
0: relay 10.0.2.15 initialization... 
0: relay 10.0.2.15 initialization done 
0: relay ::1 initialization... 
0: relay ::1 initialization done 
0: Relay ports initialization done 
0: IO method (general relay thread): epoll (with changelist) 
0: turn server id=1 created 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: IO method (general relay thread): epoll (with changelist) 
0: turn server id=0 created 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: Cannot create TLS listener 
0: IPv4. DTLS/UDP listener opened on: 127.0.0.1:3478 
0: IPv4. DTLS/UDP listener opened on: 127.0.0.1:3479 
0: IPv4. DTLS/UDP listener opened on: 127.0.0.1:5349 
0: IPv4. DTLS/UDP listener opened on: 127.0.0.1:5350 
0: IPv4. DTLS/UDP listener opened on: 10.0.2.15:3478 
0: IPv4. DTLS/UDP listener opened on: 10.0.2.15:3479 
0: IPv4. DTLS/UDP listener opened on: 10.0.2.15:5349 
0: IPv4. DTLS/UDP listener opened on: 10.0.2.15:5350 
0: IPv6. DTLS/UDP listener opened on: ::1:3478 
0: IPv6. DTLS/UDP listener opened on: ::1:3479 
0: IPv6. DTLS/UDP listener opened on: ::1:5349 
0: IPv6. DTLS/UDP listener opened on: ::1:5350 
0: Total General servers: 2 
0: IO method (admin thread): epoll (with changelist) 
0: ERROR: Cannot create CLI listener 
0: IO method (auth thread): epoll (with changelist) 
0: IO method (auth thread): epoll (with changelist) 
0: SQLite DB connection success: /var/db/turndb 
1275: handle_udp_packet: New UDP endpoint: local addr 10.0.2.15:3478, remote addr 10.0.2.2:30637 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
1275: handle_udp_packet: New UDP endpoint: local addr 10.0.2.15:3478, remote addr 10.0.2.2:30638 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet BINDING processed, success 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 000000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: session 001000000000000001: realm <mycompany.org> user <>: incoming packet message processed, error 401: Unauthorized 
1275: IPv4. Local relay addr: 10.0.2.15:52828 
1275: session 001000000000000001: new, realm=<mycompany.org>, username=<test4>, lifetime=600 
1275: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
1275: IPv4. Local relay addr: 10.0.2.15:57360 
1275: session 000000000000000001: new, realm=<mycompany.org>, username=<test4>, lifetime=600 
1275: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
1275: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
1275: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet ALLOCATE processed, success 
1276: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1276: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1276: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1276: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1277: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1277: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1278: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1278: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1280: session 001000000000000001: refreshed, realm=<mycompany.org>, username=<test4>, lifetime=0 
1280: session 001000000000000001: realm <mycompany.org> user <test4>: incoming packet REFRESH processed, success 
1280: session 000000000000000001: peer XXX.XX.XX.XX lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer XXX.XX.XX.XX lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer 10.0.2.2 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer 10.0.2.15 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1280: session 000000000000000001: peer 10.0.2.2 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer 10.0.2.15 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer 10.0.2.15 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1280: session 000000000000000001: peer 10.0.2.15 lifetime updated: 300 
1280: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CREATE_PERMISSION processed, success 
1281: session 001000000000000001: closed (2nd stage), user <test4> realm <mycompany.org> origin <>, local 10.0.2.15:3478, remote 10.0.2.2:30638, reason: allocation timeout 
1281: session 001000000000000001: delete: realm=<mycompany.org>, username=<test4> 
1281: session 000000000000000001: peer 10.0.2.15 lifetime updated: 600 
1281: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CHANNEL_BIND processed, success 
1282: session 000000000000000001: peer 10.0.2.15 lifetime updated: 600 
1282: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet CHANNEL_BIND processed, success 
1282: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1283: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet message processed, error 437: Mismatched allocation: wrong transaction ID 
1285: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet BINDING processed, success 
1286: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet BINDING processed, success 
1286: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet BINDING processed, success 
1292: session 000000000000000001: refreshed, realm=<mycompany.org>, username=<test4>, lifetime=0 
1292: session 000000000000000001: realm <mycompany.org> user <test4>: incoming packet REFRESH processed, success 
1293: session 000000000000000001: closed (2nd stage), user <test4> realm <mycompany.org> origin <>, local 10.0.2.15:3478, remote 10.0.2.2:30637, reason: allocation timeout 
1293: session 000000000000000001: delete: realm=<mycompany.org>, username=<test4> 
1293: session 000000000000000001: peer XXX.XX.XX.XX deleted 
1293: session 000000000000000001: peer 10.0.2.2 deleted 
1293: session 000000000000000001: peer 10.0.2.15 deleted 
+1

你如何在公共IP上運行TURN服務器? – mido

+1

@mido。我不確定我是否理解你的問題。我輸入:sudo turnserver -X xxx.xx.xxx.xx(xxx.xx.xxx.xx是虛擬機(centos 6)所在的計算機的公共ip,其中的虛擬機(centos 6)位於此處) – user1621010

+1

這是我的疑問,您如何確定該服務器可以從公共IP訪問,通常我最終使用AWS實例在公有IP上運行TURN,您是否使用類似的設置? – mido

回答

0

我現在在Centos 7上使用一個服務器,有2個IP地址和真正的證書以及「coturn」工作。所以也許解決方案是,現在我使用兩個IP地址