networking - TURN 服务器 XOR-RELAYED-ADDRESS IP 与其自己的公共(public) IP 不同

标签 networking nat-traversal stun

假设我正在运行绑定(bind)到公共(public) IP(例如 100.0.0.1)的 TURN 服务器。当服务器为创建分配请求创建中继端口时,服务器是否会发回与 XOR-RELAYED- 中绑定(bind)到的 IP 地址(本例中为 100.0.0.1)不同的 IP 地址?地址属性?我对网络不太熟悉,无法了解所有可能的情况,并且 RFC 5766并没有真正说出任何具体内容(据我所知)。

换句话来说,XOR-RELAYED-ADDRESS 中的 IP 地址是多余的吗?在我考虑过的所有情况下,客户端只需要知道分配的端口,并且可以完全忽略XOR-RELAYED-ADDRESS的IP。只要客户端知道中继端口,它总是可以在中继端口将中继数据发送到 TURN 服务器公共(public) IP(它已经知道该 IP,因为它必须最初连接...)。

有什么意见吗?

最佳答案

如果您的服务器不在 NAT 后面(在分配有公共(public) IP 地址的公共(public)互联网上),则 XOR-RELAYED-ADDRESS 中返回的 IP 地址将是相同的。 (它始终与分配给其 NIC 的 IP 地址相同)。

我认为您考虑忽略 XOR-RELAYED-ADDRESS 的原因与您提出 TURN 服务器实际上位于 NAT/防火墙后面的其他问题有关。我想你会发现IP地址是可以预测的。但是您的服务器所在的防火墙/NAT 可能会弄乱端口分配。确保您了解 TURN 服务器如何进行端口分配,并且您的防火墙正确进行端口转发。

一点术语澄清。您的服务器没有“绑定(bind)”到公共(public)或私有(private)IP。您的服务器套接字绑定(bind)到已分配并关联 IP 地址的接口(interface)。

关于networking - TURN 服务器 XOR-RELAYED-ADDRESS IP 与其自己的公共(public) IP 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11634898/

相关文章:

Android 图像缓存/Web/内存库

python - 使用 Python/iptables 拦截通过 Linux Bridge 的 UDP 数据包

nat - 以编程方式确定路由器 NAT 类型

javascript - 有条件地使用 STUN 服务器

networking - 如何在我的树莓派上使用 STUN/ICE 实现 NAT 遍历

iphone - 确定 iPhone 上的 EDGE 连接断开后何时恢复

c - 在 C 中以编程方式获取网络链接类型和速度

java - 如何从 STUN 请求获取外部 IP 地址和外部端口号?

python - 在python中的不同LAN之间发送数据

node.js - 设置Nodejs WebRTC视频通话,并且Turn/ICE失败,CORS被阻止