ubuntu 配置 turnserver

前端之家收集整理的这篇文章主要介绍了ubuntu 配置 turnserver前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参考资料:http://www.webrtcbbs.com/forum.PHP?mod=viewthread&tid=139&extra=page%3D1

http://www.blogjava.net/linli/archive/2014/10/22/418935.html

在使用WebRTC进行即时通讯时,需要使浏览器进行P2P通讯,但是由于NAT环境的复杂性,并不是所有情况下都能进行P2P(几乎只能在同一局域网内进行),这时需要 TURN Server来帮助客户端之间转发数据。rfc5766-turn-server是一个高性能的开源TURN Server实现。以下是使用Ubuntu操作系统安装rfc5766-turn-server:


第一步:下载安装包
  1. wgethttp://ftp.cn.debian.org/debian/pool/main/r/rfc5766-turn-server/rfc5766-turn-server_3.2.4.4-1_amd64.deb

第二步:安装
  1. sudoapt-getupdate
  2. sudoapt-getinstallgdebi-core
  3. sudogdebirfc5766-turn-server_3.2.4.4-1_amd64.deb
安装完后,在/usr/share/doc/rfc5766-turn-server下有很多文档可参考。


第三步:配置

在配置之前先生成一下TurnServer的用户名还有密码:

turnadmin -k -u 用户名 -rnorth.gov-p 密码


记得复制保存一下生成出来的key:0xa9c04dc63524413e8c16fa1bb04a1472

修改/etc/turnserver.conf 文件(直接将一下内容覆盖原来的文件)
  1. listening-ip=外网ip
  2. listening-port=3478
  3. tls-listening-port=5349 relay-ip=外网ip
  4. external-ip=外网ip
  5. relay-threads=50
  6. lt-cred-mech
  7. user=myuserHello:0xa9c04dc63524413e8c16fa1bb04a1472(格式:user:pass)
  8. userdb=/etc/turnuserdb.conf
  9. #max-bps=102400
  10. pidfile="/var/run/turnserver.pid"
配置说明:
  1. #TURN为UDP和TCP的侦听器端口(默认:3478)。
  2. #注:实际上,TLS和DTLS会话可以连接到"清晰的"TCP和UDP端口,
  3. #如果允许配置。
  4. listening-ip=外网ip
  5. listening-port=3478
  6. #TURN为TLS的侦听器端口(默认:5349)。
  7. #注意:事实上,"清晰的"TCP和UDP会话可以连接到TLS和DTLS端口,
  8. #如果允许配置。
  9. #TURN服务器"自动"识别传输类型。
  10. #实际上,两个监听终端点("清晰的"端和"TLS"端)是
  11. #对等的功能;但我们保持两个端点来满足RFC5766规范。
  12. #对于安全的TCP连接,我们目前支持SSL的3个版本,
  13. #是TLS1.0版本,1.1版本和1.2版本。
  14. #SSL2还支持"encapculation模式"。
  15. #对于安全的UDP连接,我们支持DTLS版本1。
  16. tls-listening-port=5349
  17. #中继地址(本地IP地址将用于传递数据包的给每个端)
  18. #可以使用多个中继地址。
  19. #相同的IP可以用作监听IP和继电器IP。
  20. #如果没有指定中继IP,那么turnserver将应用默认策略:
  21. #它将自行决定使用那个中继
  22. #地址,并且它总是会使用客户端套接字的
  23. #IP地址作为中继的IP地址在TURN会话中(如果
  24. #请求的中继地址族解决同族的客户端套接字)。
  25. #
  26. relay-ip=外网ip
  27. #
  28. #AmazonEC2用户:
  29. #TURN服务器公开/私有的地址映射,假如服务器是在NAT后端。
  30. #在这种情况下,如果一个表单中"-X<ip>"使用一个-X,
  31. #然后该ip将被作为中继ip地址来使用。
  32. #这种情况只适用于一个简单的例子,
  33. #当一个中继的地址是被使用,和没有RFC5780功能是必需的。
  34. #单个中继地址必须通过NAT映射到外部的IP。
  35. #外部的IP值,假如不为空,通过XOR-RELAYED-ADDRESS字段返回。
  36. #外部的IP,NAT必须直接转发端口(转发端口12345,
  37. #必须总是映射到相同的外部端口12345)。
  38. #在更复杂的情况下,当涉及到多个IP地址,
  39. #这个选项必须使用几次,每个条目必须形
  40. #成"-X<public-ip/private-ip>",将所有涉及到的地址。
  41. #RFC5780NAT发现STUN功能正常工作,
  42. #如果正确的地址映射,即使TURN服务器本身是
  43. #在一个NAT后。
  44. #默认,该值为空,并且没有使用地址映射。
  45. #
  46. external-ip=外网ip
  47. #
  48. #数量的中继线程处理建立连接(除了验证线程和侦听器线程)。
  49. #如果设置为0,那么应用程序中继进程在一个线程中运行,在同一
  50. #个线程中监听处理(身份验证线程仍然是一个单独的线程)。
  51. #在旧系统(3.9Linux内核之前),
  52. #数量的UDP线程总是一个线程监听一个网络端点,
  53. #包括辅助端点——除非设置0或1值。
  54. #
  55. relay-threads=50
  56. #
  57. #取消使用长期证书机制。
  58. #默认情况下不使用凭证机制(允许任何用户)。
  59. #这个选项可能使用用户数据文件
  60. #PostgresqlMysqL或Redis来存储用户密钥。
  61. #
  62. lt-cred-mech
  63. #
  64. #钥匙必须由turnadmin实用程序生成。键值取决于用户名称、领域和密码:
  65. #
  66. #Example:
  67. #例子,使用以下命令:
  68. #
  69. #$turnadmin-k-uninefingers-rnorth.gov-pyouhavetoberealistic
  70. #
  71. #Output:0xbc807ee29df3c9ffa736523fb2c4e8ee
  72. #输出是:0xbc807ee29df3c9ffa736523fb2c4e8ee
  73. #
  74. #('0x'inthebeginningofthekeyiswhatdifferentiatesthekeyfrom
  75. #password.Ifithas0xthenitisakey,otherwiseitisapassword).
  76. #('0x'开始的关键是区分从密码的关键。
  77. #如果它有0x,那么它是一个关键,否则这是一个密码)。
  78. #
  79. #Thecorrespondinguseraccountentryintheconfigfilewillbe:
  80. #相应的配置文件中的用户帐户条目将:
  81. #
  82. #user=ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
  83. #Or,equivalently,withopenclearpassword(lesssecure):
  84. #或者是这样,明文密码(不安全的):
  85. #user=ninefingers:youhavetoberealistic
  86. #
  87. user=user:password
  88. #
  89. #'Dynamic'用户帐户数据库文件名。
  90. #只有用户长期机制可以存储在一个文件,短期机制不会处理选项,短期机制需要PostgresqlMysqL
  91. #Redis数据库
  92. #'Dynamic'的长期用户帐户在turnserver程序中动态检查的,
  93. #这样他们可以改变的在turnserver运行时。
  94. #默认文件名是turnuserdb.conf.
  95. #
  96. userdb=/etc/turnuserdb.conf
  97. #
  98. #存储进程pid的文件名。
  99. #默认是/var/run/turnserver.pid(超级用户使用)
  100. #或者是/var/tmp/turnserver.pid
  101. #
  102. pidfile="/var/run/turnserver.pid"
修改/etc/ turnuserdb.conf文件

如果你只有一个用户就配置下面这一句就好了,这里的跟turnuserdb.conf配置的用户名密码保持一致:

  1. myuserHello:0xa9c04dc63524413e8c16fa1bb04a1472(格式:user:pass)
配置解释:
  1. #Thisfilecanbeusedasuseraccountsstorageforlong-termcredentialsmechanism.
  2. #这个文件可以用作长期用户帐户存储凭证机制。
  3. #Keysmustbegeneratedbyturnadminutility.Thekeyvaluedepends
  4. #onusername,realm,andpassword:
  5. #钥匙必须由turnadmin实用程序生成。键值取决于用户名称、领域和密码:
  6. #
  7. #Example:
  8. #例子,使用以下命令:
  9. #$turnadmin-k-uninefingers-rnorth.gov-pyouhavetoberealistic
  10. #Output:0xbc807ee29df3c9ffa736523fb2c4e8ee
  11. #输出是:0xbc807ee29df3c9ffa736523fb2c4e8ee
  12. #
  13. #('0x'inthebeginningofthekeyiswhatdifferentiatesthekeyfrom
  14. #password.Ifithas0xthenitisakey,otherwiseitisapassword).
  15. #('0x'开始的关键是区分从密码的关键。如果它有0x,否则这是一个密码)。
  16. #
  17. #Thecorrespondinguseraccountentryintheuserdbfilewillbe:
  18. #相应的用户帐号在userdb文件中是:
  19. #
  20. #ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
  21. #Or,equivalently(lesssecure):
  22. #或者是这样(不安全的):
  23. #ninefingers:youhavetoberealistic
  24. #
  25. yourname:yourpsw

第四步:启动
  1. turnserver-L<public_ip_address>-c/etc/turnserver.conf-o-a-b/etc/turnuserdb.conf-f-r<system_domain_name>

服务器启动
turnserver -v -r by


第五步:测试

在浏览器访问http://外网ip:3478,如果看到“TURN Server”,说明已经搭好了。


在WebRtc的JS客户端中这样写:

[javascript] view plain copy
  1. iceServer={"iceServers":[{"url":"stun:stun.l.google.com:19302"},
  2. {"url":"stun:外网ip:3478"},
  3. {"url":"turn:外网ip",
  4. "credential":"0xa9c04dc63524413e8c16fa1bb04a1472","username":"myuserHello"}
  5. ]}
原文链接:https://www.f2er.com/ubuntu/354322.html

猜你在找的Ubuntu相关文章