最近我开始在家工作后遇到了一个非常奇怪的网络问题。
我的网络拓扑如下:
[Modem] -- [Router 1] -- [Router 2]
192.168.0.1 192.168.1.1 192.168.2.1
Skype 音频在两个路由器上都可以正常工作,但我无法从路由器 1 加入任何视频或共享我的屏幕 - 但是,它在路由器 2 上运行良好。
在路由器 1 上将我的计算机设置为 DMZ 似乎没有效果,禁用 NAT 过滤、SIP ALG 或启用/禁用 UPnP 也没有效果。
不过,我觉得真正奇怪的是,即使在所有 3 台设备(全部设置为网关)上都启用了防火墙,并且启用了 NAT 过滤,我仍然能够从路由器 2 正常使用 Skype,但不能从路由器 1 正常使用。所有设备都是由不同的制造商生产的。
是什么原因导致了这个问题?有人能给出什么原因导致这个问题的建议吗?我最初的想法是,这可能是由调制解调器或路由器 1 上的防火墙设置引起的,但这似乎无法解释为什么 Skype 在路由器 2 上工作正常。
答案1
路由器 1 在互联网方面处于双重 NAT 的情况并且出现问题,但路由器 2 甚至处于三重 NAT 并且仍能正常工作。
由于问题不是双重 NAT,我认为唯一的解释是它与路由器 1 的某些设置有关。
如果路由器 1 支持 QoS(服务质量),您可以检查它是否已设置。否则,这可能与其防火墙有关。
您还可以寻找路由器 1 的固件更新,这可能会有帮助。
为了得到更好的答案,您应该在您的帖子中添加路由器 1 的确切型号以及可能与互联网服务相关的任何设置页面的屏幕截图。
答案2
Netgear 路由器上的 Skype
端口转发解决方案
最近有详细记录的故障排除Netgear 社区表单上的主题 详细说明了客户在使用 Skype 和 Facetime 时遇到的许多问题。帖子中有很多建议,但没有一个能解决客户所有设备上的问题。最终,我们为每台设备找到了解决方案。Skype 为客户提供了特定的端口,客户应该在 Netgear 路由器上转发/打开这些端口。以下是图像客户发布的内容。这也可能是您的解决方案:
这是我现在的端口的图片。不确定我从哪里开始,这里没有列出 FaceTime 的端口。他工作太快了,我没有记下他所做的所有更改。服务类型设置为端口触发。
VoIP 和对等连接的需求
Skype 的动机是使用技术建立点对点连接,而不是充当 VoIP 连接的中间人。想象一下,两个在澳大利亚的人试图通过 Skype 进行连接。通过美国路由数据需要很长时间。延迟太高了!这不会带来良好的聊天体验,因为一切都会延迟。在这种情况下,点对点连接更受欢迎,因为它的延迟更少。Skype 需要克服的问题是,两个客户端都位于路由器(也称为伪装防火墙. 如下所示:
路由器是一种伪装防火墙因为:
从专用网络传输到公用网络的数据包将具有源地址被修改而从公共网络返回私有网络的数据包将具有目的地址已修改。为了避免回复翻译的歧义,需要对数据包进行进一步修改。绝大多数互联网流量使用传输控制协议 (TCP) 或用户数据报协议 (UDP)。对于这些协议,端口号会发生变化,以便返回数据包上的 IP 地址和端口信息组合可以明确地映射到相应的专用网络目的地。[1]
Skype 通话中的两台计算机位于路由器后面,因此 Skype 利用了一种称为NAT 穿越技术以便让两台计算机建立对等连接。但是,
网络地址转换技术尚未标准化。因此,用于 NAT 穿越的方法通常是专有的,且记录不全。[2]
在您的问题中您提到了“打洞”:
具体来说,路由器 1 的“打洞”似乎不起作用……
你肯定是在正确的轨道上。“打洞”是NAT 穿越技术。这基本上是一种让两个内部网络相互通信的黑客手段。
现在,如果我们添加第二个子网/路由器。事情变得更加复杂,因为我们从单一网络地址转换(单一 NAT)变为双重 NAT。
因此,单 NAT 对于大多数配置来说都是必要的,并允许本地网络上的多个设备通过相同的公共 IP 地址共享相同的连接,这与双 NAT 有何不同?[3]
从技术上讲,一切都能正常工作,因为每台设备上都会发生静态和动态 NAT,数据会在每个设备之间跳跃,网络在第 3 层进行分段,因此 DHCP 等第 2 层协议不会发生冲突。[3]
了解双重 NAT 及其对 UPnP 的影响
问题主要出现在一台设备上的 NAT 表已填满或丢失了特定连接的踪迹,这种配置将导致无法有效追溯网络路径的对等技术出现问题,MTU 路径发现可能无法运行或中断,并且使用 uPnP 的游戏/媒体服务可能无法工作,除非手动重新转发这些服务。[3]
就你的情况而言,Skype 可能正在尝试使用UPnP(通用即插即用)[4] 这对于两个路由器/子网来说是一个问题,或者双重 NAT因为:
没有机制让一个支持 UPnP 的路由器要求另一个路由器打开端口[5]
这意味着如果您子网上的本地地址在进入网络之前被转换两次,则该子网上的设备将无法使用 UPnP。
另请参阅:“双重 NAT 可能引发的问题” (harrymc 的回答)
解决方案
如果您希望两个路由器都为 Skype 提供完整功能,则需要为两个路由器设置单个子网。请参阅以下指南了解如何执行此操作。
参考
[1]:维基百科 - 网络地址转换
[2]:维基百科 - NAT 遍历
[5]:uPNP 和双重 NAT
[指南] 切换到单个子网
切换到单个子网可以消除双重 NAT问题。为了获得单个子网,您可以按照以下步骤操作:https://support.bluos.net/hc/en-us/articles/360000220927-我可以将两个路由器连接到同一个网络名称的同一网络吗?
- 禁用 [第二台] 路由器上的 DHCP 服务器,以防止 IP 冲突或网络配置问题,从而仅允许路由器 1 管理网络。
- 手动将 [第二个] 路由器的 IP 地址设置为比现有主路由器高 1 位,例如,如果您的路由器 IP 为 192.168.1.1,则将此路由器设置为 192.168.1.2。[请] 确保此地址不在第一个路由器分配的 DHCP 地址范围内。如果不是,请在路由器 1 的 DHCP 表中为此路由器的地址进行 DHCP 保留。
- 将路由器2的Internet网关设置为路由器1的IP地址。
- 使用有线连接将两个路由器从路由器 1 中的任意端口 1-4 连接到路由器 2 中的任意端口 1-4。您可以使用无线媒体桥或电力线以太网套件创建有线连接。请勿使用路由器 2 的 WAN 端口。
- 在此路由器的无线安全设置中,禁用自动频道选择并手动将频道设置为频道 8 - 或主路由器或此网络上任何其他路由器未使用的任何其他频道(对于真正大的区域,可以设置两个以上的路由器)。
- 在路由器 2 中设置与路由器 1 相同的无线安全性。
使用桥接模式
您还可以通过使用路由器 2 来避免双重 NAT桥接模式
登录您的路由器并浏览各种设置以启用桥接模式。
以下是 TP-Link 路由器的示例照片:
其他注意事项
请确保当您连接到每个路由器时,您已经禁用 Windows 防火墙,或者允许 Skype 通过公共和专用网络上的 Windows 防火墙。
如果您在双重 NAT 中看到成功连接,而在单重 NAT 中却看不到,则数据可能通过 Skype 的服务器而不是点对点连接进行路由。请参阅此处在一篇关于 Skype 如何运作的文章中:
然而,在非常活跃的网络中,[Skype 呼叫者] 可能找不到正确的开放端口。对于特定类型的防火墙,情况也是如此,它会将每个新连接分配给一个随机源端口。这样一来,Skype 服务器就无法告诉 [Skype 呼叫者] 在哪里寻找 [接收 Skype 客户端] 防火墙中的合适漏洞。
然而,即便如此,Skype 也不会放弃。在这种情况下,Skype 服务器将用作中继。它接受来自两个 [Skype 客户端] 的传入连接,并将数据包转发出去。只要防火墙允许传出 UDP 流量,此解决方案始终可行。然而,这会给基础设施带来额外负载,因为所有音频数据都必须通过 Skype 的服务器。延长的数据包传输时间也会导致令人不快的延迟。