场景
- 家里有主路由192.168.31.1,旁路由192.168.31.2,Xbox主机192.168.31.13;
- Xbox的网关和DNS均指向旁路由;
- 主路由设置DMZ主机为旁路由(问题不大,主路由上头还有个光猫,光猫防火墙开端口转发给主路由),旁路由根据需求进行端口转发内网服务。
问题
在什么都没有配置的情况下,网络是这样的:
- 上行(Xbox → 服务器):
- Xbox(192.168.31.13) → 旁路由(192.168.31.2) → 主路由(192.168.31.1) → 服务器
- 下行(服务器 → Xbox):
- 服务器 → 主路由(192.168.31.1) → Xbox(192.168.31.13)
Xbox经过旁路由后才到主路由,但由于没有经过SNAT修改,主路由维护的NAT表中,它还是认为「Xbox<->公网」这个会话,数据是由Xbox直接发起的,跟旁路由没有关系,回包时就理所应当的直接发送给Xbox,旁路由就完全看不到这个包。
这个路径对于通常网络请求,比如下载,网页浏览是没有影响的,因为他们对路径没有那么强的要求。但对于远程串流这种需要P2P的服务,它强依赖路径的对等。
配置
在「网络」→「防火墙」→「NAT规则」下新增一条:
- 地址族限制:自动
- 协议:任何
- 出站区域:lan
- 源地址:Xbox所在的内网IP
- 目标地址:任意
- 操作:SNAT - 重写为特定的源IP或端口
- 重写IP地址:旁路由IP

这个配置下,原本Xbox的上行经过旁路由时,旁路由不会记录而是直接类似于转发的形式送给主路由,现在旁路由会正常记录这个NAT映射关系,并且将源IP修改为192.168.31.2。主路由看到的源IP也会变成192.168.31.2,此时当有回包时,主路由就会认为这个包应该送给旁路由而不是Xbox,保证路径对等。
共有 0 条评论