ios - 如何使用 IPv6 设置 Restund Turn 服务器

标签 ios webrtc ipv6 stun turn

我正在使用 Restund for WebRTC。我的 Restund 服务器当前支持 IPv4。我正在尝试更新我的 Restund 服务器以同时使用 IPv4 和 IPv6。我遇到了一些麻烦,需要一些帮助。

我的困境是,自 10.2 更新以来,我的 Restund Turn 服务器不再与 iOS 设备上的 Cell Service 配合使用(当使用 T-Mobile 和 Sprint 时。注意:Verizon 仍在工作)。据我了解,这些运营商现在仅通过 IPv6 进行通信。其他运营商已宣布他们将很快进行转换。

我注意到的一件事是需要使用 ifconfig 中列出的 eth0 网络设备中的“本地”IPv4 地址。因此,我还添加了 [::1] 条目,以防 IPv6 情况需要它。我还添加了完整的 IPv6 地址。所以有 udp_listen、tcp_listen 和 tls_listen 3 个条目。

在下面的示例中,我已将真实地址更改为示例地址。

我在下面包含了我的/etc/restund.conf 文件。

daemon                  yes
debug                   no
realm                   HOST
syncinterval            600
udp_listen              192.168.1.100:3478
udp_listen              [::1]:3478
udp_listen              [AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA]:3478
udp_sockbuf_size        524288
tcp_listen              192.168.1.100:3478
tcp_listen              [::1]:3478
tcp_listen              [AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA]:3478
tls_listen              192.168.1.100:3479,/etc/cert.pem
tls_listen              [::1]:3479,/etc/cert.pem
tls_listen              [AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA]:3479,/etc/cert.pem

# modules
module_path             /usr/local/lib/restund/modules
module                  stat.so
module                  binding.so
module                  auth.so
module                  turn.so
module                  syslog.so
module                  status.so

# auth
auth_nonce_expiry       3600
auth_shared_expiry      86400
# share this with your prosody server
auth_shared yoursecretthing
#auth_shared_rollover incaseyouneedtodokeyrollover

# turn
turn_max_allocations    512
turn_max_lifetime       600
turn_relay_addr         192.168.1.100
#turn_relay_addr6       ::1
turn_relay_addr6        AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA
turn_relay_addr6        ::1

# syslog
syslog_facility         24

# status
# 2/2/2017 Apparently only the first status is used, the second one is ignored.
#          I verified this by going to:
#            http://[AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA]:8080
#            http://PUBLIC_IPV4_ADDR:8080/
#          Only one would work at a time.
#          So I commented the IPv6 Addresses.
status_udp_addr         192.168.1.100
#status_udp_addr                AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA
status_udp_port         33000
status_http_addr        192.168.1.100
#status_http_addr       AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA
status_http_port        8080

验证 Restund 运行没有错误后,我验证了现在正在使用 netstat -nlp 监听相应的 TCP/UDP 端口。

我在 netstat 结果中发现的一个问题是,完整的 IPv6 地址仅显示 8 组中的 4 组(AAAA:AAAA:AAAA:AAAA 而不是 AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA) 。我想知道这是否是我应该关心的事情。

netstat -nlp
IPv4 && IPv6 [Full Address and ::1]
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.1.100:8080       0.0.0.0:*               LISTEN      11442/restund
tcp        0      0 192.168.1.100:3478       0.0.0.0:*               LISTEN      11442/restund
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1321/sshd
tcp        0      0 192.168.1.100:3479       0.0.0.0:*               LISTEN      11442/restund
tcp6       0      0 AAAA:AAAA:AAAA:AAAA:3478 :::*                    LISTEN      11442/restund
tcp6       0      0 ::1:3478                :::*                    LISTEN      11442/restund
tcp6       0      0 :::22                   :::*                    LISTEN      1321/sshd
tcp6       0      0 AAAA:AAAA:AAAA:AAAA:3479 :::*                    LISTEN      11442/restund
tcp6       0      0 ::1:3479                :::*                    LISTEN      11442/restund
udp        0      0 192.168.1.100:33000      0.0.0.0:*                           11442/restund
udp        0      0 192.168.1.100:3478       0.0.0.0:*                           11442/restund
udp        0      0 0.0.0.0:68              0.0.0.0:*                           927/dhclient
udp6       0      0 AAAA:AAAA:AAAA:AAAA:3478 :::*                                11442/restund
udp6       0      0 ::1:3478                :::*                                11442/restund

在我的/etc/restund.conf 文件中添加所有这些 IPv6 后,我仍然无法通过 IPv6 进行通信。预先感谢您的任何意见!

最佳答案

这不会解决您的 IPv6 问题,但它应该可以让您的代码暂时正常工作。

1 月 27 日,T-Mobile 发布了 iOS 10.2.1 运营商更新 27.2: https://support.t-mobile.com/docs/DOC-32574

尝试更新您的运营商设置,它可能会解决 T-Mobile 问题。

  1. 在主屏幕上,点按“设置”。
  2. 点按“常规”
  3. 点按“关于”,然后查看“运营商更新”字段。

如果您尚未更新,它此时应该会提示您进行更新。看看这是否可以解决您的 T-Mobile 问题。他们添加了一个更新,“添加双堆栈以改善应用程序与 iOS 10.2 的兼容性问题”。

关于ios - 如何使用 IPv6 设置 Restund Turn 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42007579/

相关文章:

audio - 组合两个 WebRTC 对等点时是否可以同步音频?

javascript - Tokbox StreamCreated 被调用的次数与客户端被调用的次数相同

java - 用于验证 InetSocketAddresses(ipv4/v6 + 端口地址)的正则表达式

c - 如何在消息中设置 IPv6 路由器警报选项

ios - iOS Swift 上的 AWSS3TransferUtilityErrorDomain Code=2 尝试上传图像/pdf 时

html - WebRTC 回退

ios - 无法将类型 '(Either<NestedType>) -> Void' 的值转换为预期的参数类型 '(Either<[_]>) -> Void'

docker - IPv6 绑定(bind)错误 : Cannot assign requested address

ios - 我的代码跳过 Xcode obj-c 中的 if end else

ios - 导航弹出动画意外 - 跳出屏幕