MikroTik RouterOS v7.10 实现 NAT1 Full Cone 的 endpoint-independent-nat 配置指南

图片[1]-MikroTik RouterOS v7.10 实现 NAT1 Full Cone 的 endpoint-independent-nat 配置指南

MikroTik 在 RouterOS v7.10 Stable 中加入了一个非常实用的新功能:endpoint-independent-nat
这意味着,我们终于可以通过 RouterOS 原生实现 NAT1 / Full Cone NAT,不再依赖各种旁路网关或黑盒设备,对在线游戏、P2P、VoIP 等场景非常友好。

这篇文章结合实际配置,带你一步步用 RouterOS 把 NAT 类型调教到 Full Cone,并通过测试工具验证效果。

一、先搞清楚:为什么大家都在追求 Full Cone NAT?

在家庭宽带或中小企业网络中,运营商通常只给一个公网 IP,LAN 内的所有设备都要通过 NAT 出口上网。
不同的 NAT 行为决定了你在以下场景中的体验:

  • 主机联机游戏(Switch / PS / PC 联机房间、P2P 匹配)
  • P2P 下载 / 上传
  • VoIP / 视频会议 / 远程控制软件

常见的 NAT 类型大致可以分为:

  1. Full Cone NAT(NAT1)
    • 内网某个 IP:Port 一旦映射到公网端口,外网的任何主机都可以通过该端口访问回来
    • 对打洞、P2P、联机游戏最友好。
  2. Restricted / Port-Restricted NAT(NAT2/3)
    • 只允许内网主机曾经访问过的外部 IP(或 IP+端口)回连,限制较多。
  3. Symmetric NAT(NAT4)
    • 对不同目标地址使用不同的映射端口,对 P2P 和某些游戏非常不友好,经常显示“严格 NAT”。

在实际体验上,Full Cone 往往意味着:更容易被匹配为房主、更少的联机失败、更顺畅的连接建立过程
因此很多玩家和网络折腾爱好者都在追求“把 NAT 调成 Full Cone”。

二、RouterOS v7.10 新增 endpoint-independent-nat 有什么用?

在早期版本中,RouterOS 的 NAT 行为更多接近“端点相关”(endpoint-dependent),容易表现为 对称 NAT 或受限 NAT
v7.10 Stable 引入的 endpoint-independent-nat 动作,就是用来实现“端点无关”的映射:

  • Endpoint-independent 的含义:
    对同一个内网 IP:Port,只要走同一个出口接口,映射到的公网地址和端口就保持一致,
    不会因为访问的目标不同而变化
  • 对我们来说,直接效果就是:
    路由器可以表现为 Full Cone NAT(至少对 UDP),让外部更容易通过打洞、信令等方式回连到内网设备。

目前这个动作主要针对 UDP 流量(也是多数联机游戏、打洞协议的核心),正好满足我们最常见的需求。

三、网络环境简述

本文假设你的网络拓扑大致是这样:

  • 宽带光猫:桥接模式
  • MikroTik 路由:
    • 通过 PPPoE 拨号上网,WAN 接口名为 pppoe-out1
    • LAN 侧通过桥接(bridge)或多个接口给内网设备分配地址
  • RouterOS 版本:v7.10 Stable 及以上

如果你的接口名称不同,后面配置时把 pppoe-out1 换成你实际的 WAN 接口即可。

四、基础上网配置(略述)

下面这些属于常规 RouterOS 上网配置,这里不展开细节,只做简要说明:

  1. PPPoE 客户端配置
    • Interfaces 中创建 PPPoE Client
    • 绑定到接光猫的物理接口,填入运营商账号密码
    • 拨号成功后会生成 pppoe-out1 接口
  2. LAN 地址 / DHCP / DNS 等
    • 给 bridge 或 LAN 接口配置内网 IP(如 192.168.88.1/24)
    • 开启 DHCP 服务器
    • 设置上游 DNS 或用 DoH 等方案
  3. 传统 masquerade NAT
    • IP → Firewall → NAT 中创建 srcnat 规则,action = masquerade
    • 通过 WAN 接口把内网地址伪装到公网 IP 上网

如果你对这些还不太熟悉,可以参考你自己以前的文章或官方教程,本文重点放在 如何启用 endpoint-independent-nat 来实现 Full Cone

五、用 Firewall NAT 配置 NAT1 / Full Cone

要让 RouterOS 表现为 Full Cone NAT,需要在 IP → Firewall → NAT 中新增两条规则:

  1. 出站 UDP 使用 endpoint-independent-nat(srcnat)
  2. 入站 UDP 同样使用 endpoint-independent-nat(dstnat)

1. 图形界面配置思路

在 Winbox / WebFig 中:

  1. 打开 IP → Firewall → NAT,点击 “+” 新建规则
  2. 第一条规则(srcnat):
    • Chainsrcnat
    • Protocoludp
    • Out. Interfacepppoe-out1(或你的拨号接口)
    • Actionendpoint-independent-nat
  3. 第二条规则(dstnat):
    • Chaindstnat
    • Protocoludp
    • In. Interfacepppoe-out1
    • Actionendpoint-independent-nat

重点:这两条规则要放在 NAT 列表的最前面,确保 UDP 先匹配到 endpoint-independent-nat,再轮到后面的普通 masquerade 或其他规则。否则行为会被覆盖,NAT 类型可能不会变成 Full Cone。

你可以通过拖拽或在命令行使用 place-before=0 来实现。

2. 命令行配置示例

在终端中输入以下两条命令即可完成同样的配置:

这里有几个小细节值得说明:

  • chain=srcnat / chain=dstnat
    • srcnat 负责出站流量的地址转换
    • dstnat 负责入站流量的反向处理
      两者配合,才能完整实现 Full Cone 行为。
  • protocol=udp
    • 当前只对 UDP 做 endpoint-independent 处理,
    • 不会影响 TCP 连接,这也是比较安全稳妥的做法。
  • place-before=0
    • 表示将规则插入到 NAT 表的最顶部(位置 0 之前)。
    • 这样可以保证 所有 UDP 流量优先命中这两条规则,再去匹配后面的 masquerade 或其他 NAT。

完成后,你的 NAT 规则列表中会多出两条 UDP 的 endpoint-independent-nat,位置位于最上方。

六、验证 NAT 类型:看到 Full Cone 才算成功

配置完毕后,就可以用 NAT 类型测试工具来验证了。常见做法包括:

  • 使用常见的 NAT Type Test 工具
  • 某些游戏平台 / 游戏本身自带 NAT 检测(如显示 Open / NAT Type A / Type 1 等)
图片[2]-MikroTik RouterOS v7.10 实现 NAT1 Full Cone 的 endpoint-independent-nat 配置指南

当看到测试结果显示为:Full Cone,就说明 RouterOS 通过 endpoint-independent-nat 已经正常工作了。

如果你测试到的仍然是 Restricted / Symmetric,可以依次排查:

  1. 规则顺序是否正确
    • 两条 endpoint-independent-nat 是否确实在 NAT 表的最前面?
    • 有没有其他针对 UDP 的 NAT 规则抢先匹配?
  2. 接口是否填写正确
    • out-interface / in-interface 是否都指向真正对外的 PPPoE 或物理 WAN 接口?
  3. 运营商是否做了 CGNAT
    • 如果你的路由器本身拿到的就不是公网 IP(而是 10.x / 100.64.x / 192.168.x 等),
    • 那么即便本地是 Full Cone,外面还有一层运营商 NAT,依旧会受限,只能说“尽人事”。

七、安全性与最佳实践

Full Cone NAT 带来更好的连接性,但也意味着 “对外更开放”,因此建议结合防火墙过滤规则一起使用。

几个建议:

  1. 只对 UDP 开启 endpoint-independent-nat
    • 正如上面的配置所示,只限定在 protocol=udp
    • 避免对 TCP 造成过于宽松的外部直连行为。
  2. 配合 firewall filter 做基本防护
    • 例如丢弃一些明显异常的入站 UDP 流量
    • 或只对特定端口范围放行(视实际需求而定)
  3. 根据应用场景评估是否需要
    • 游戏玩家、小型游戏房主、家庭 NAS 需要 P2P/打洞时:Full Cone 极具价值
    • 纯办公网络、合规要求严格的环境:可以更保守,只在特定时间或特定地址段使用
  4. 关注 RouterOS 后续版本变更
    • 由于 endpoint-independent-nat 是 v7.10 引入的新动作,后续版本可能会有优化或行为调整,
    • 建议升级前简单阅读官方 changelog,避免踩坑。

MikroTik RouterOS v7.10 Stable 引入的 endpoint-independent-nat,终于给了我们一个官方、原生的方式,在 RouterOS 上实现 NAT1 / Full Cone NAT,尤其是对 UDP 流量的游戏、P2P、VoIP 场景非常友好。

本文基于 PPPoE 上网场景,给出了完整的 NAT 配置思路和命令行示例:

  • srcnatdstnat 链中各添加一条 endpoint-independent-nat 规则
  • 限定 protocol=udp,接口为对外拨号的 pppoe-out1
  • 将规则插入到 NAT 表顶部,保证优先匹配

最终通过 NAT 测试工具验证为 Full Cone,配置目标即告达成。
如果你也在为严格 NAT、联机失败、打洞不畅而烦恼,不妨在升级到 v7.10 之后,试试这组配置。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容