Skip to content

[Bug] WINDOWS开启TUN模式的NAT行为问题 #2340

@totorode

Description

@totorode

验证步骤

  • 我已经阅读了 文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • 我仔细看过 文档 并未解决问题
  • 我已在 Issue Tracker 中寻找过我要提出的问题,并且没有找到
  • 我是中文用户,而非其他语言用户
  • 我已经使用最新的 Alpha 分支版本测试过,问题依旧存在
  • 我提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • 我提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器或者堆砌大量对于复现无用的配置等。
  • 我提供了完整的日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。
  • 我直接使用 Mihomo 命令行程序重现了错误,而不是使用其他工具或脚本。

操作系统

Windows

系统版本

windows10

Mihomo 版本

Mihomo Meta v1.19.15 windows amd64 with go1.25.3 Tue Oct 14 18:00:25 UTC 2025
Use tags: with_gvisor

配置文件

mode: rule
ipv6: true
dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: true
  enhanced-mode: redir-host
tun:
  enable: true
  device: mihomo
  stack: gvisor
  dns-hijack:
    - any:53
  auto-route: true
  auto-detect-interface: true
  endpoint-independent-nat: true

描述

服务端和客户端都已经开启了XUDP
1.只在高级windows defender防火墙为mihomo.exe设置允许UDP和TCP从任意地址入站的规则,并且设置允许边缘遍历或者遵从用户,NatTypeTester.exe进行测试时NAT的映射行为Endpoint independent,过滤行为Address and port dependent
2.高级windows defender防火墙的公用配置文件从活动设置为关闭后或者把mihomo的虚拟网卡从公用防火墙的受保护网络连接列表里剔除掉,即彻底关掉防火墙对虚拟网卡的保护干预,NAT的过滤行为正确上升到Endpoint independent
3.不关闭公用网络防火墙,只是在powershell里面使用Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceIndex <你的接口索引> -NetworkCategory Private把tun模式的虚拟网卡转换到专用网络,即改成使用防火墙的专用配置文件管理,NAT的过滤行为降级到Address and port dependent

很明显只要windows防火墙插手了tun虚拟网卡的管理,UDP数据就会在防火墙干预下降级到Address and port dependent;只有手动关掉防火墙对虚拟网卡的干预才能实现FULLCONE;这到底是mihomo还是windows系统本身的锅,有没有人可以解答下,能彻底解决吗

重现方式

参考上文

日志

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions