windows上如何实现把指定网段的流量转发到指定的端口,有哪些界面化的软件用来配置完成,类似于 Linux中的iptables规则实现
windows上如何实现把指定网段的流量转发到指定的端口,有哪些界面化的软件用来配置完成,类似于 Linux中的iptables规则实现:
iptables -t nat -I PREROUTING -s 192.168.100.2/24 -j REDIRECT --to-port
iptables -t nat -A POSTROUTING -s 192.168.100.2/24 -j MASQUERADE
在 Windows 上,如果想实现类似于 Linux 中 iptables
的功能,将特定网段(例如 192.168.100.0/24
)的流量转发到指定端口,可以通过以下两种方式实现:
✅ 方法一:使用 Windows 自带工具(无界面,命令行)
1. 启用 IP 转发(路由功能)
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f
修改后需重启系统生效。
2. 配置 NAT(模拟 iptables 的 MASQUERADE)
使用 PowerShell 执行:
New-NetNat -Name "MyNat" -InternalIPInterfaceAddressPrefix 192.168.100.0/24
这相当于 Linux 中的:
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
3. 配置端口转发(模拟 REDIRECT)
虽然 netsh portproxy
不支持基于源网段转发,但你可以使用 PowerShell 的静态 NAT 映射实现类似功能:
Add-NetNatStaticMapping -NatName "MyNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -ExternalPort 80 -InternalIPAddress 127.0.0.1 -InternalPort 8080
这条规则将所有访问本机 80 端口的流量转发到本地的 8080 端口。
✅ 方法二:使用图形界面工具(推荐)
软件名称 | 功能简介 | 是否支持按网段转发 | 图形界面 | 下载地址 |
---|---|---|---|---|
WinGate | 高级代理/NAT/端口转发工具 | ✅ 支持按 IP/网段设置规则 | ✅ 是 | https://www.wingate.com |
CCProxy | 国产代理服务器,支持端口转发和NAT | ✅ 支持按 IP/网段设置规则 | ✅ 是 | https://www.ccproxy.com |
Simple DNS Plus + NAT 插件 | 配合 NAT 插件可实现端口转发 | ✅ 支持 | ✅ 是 | https://simpledns.com |
Windows RRAS(路由和远程访问服务) | Windows Server 自带,支持完整 NAT 和端口映射 | ✅ 支持 | ✅ 是(MMC 控制台) | 控制面板 → 管理工具 → 路由和远程访问 |
✅ 总结建议
需求 | 推荐方案 |
---|---|
快速命令配置、无需界面 | 使用 PowerShell + New-NetNat + Add-NetNatStaticMapping |
需要图形界面、灵活规则 | 使用 WinGate 或 CCProxy |
企业级部署、集成 AD | 使用 Windows RRAS |
在 WinGate 中配置“端口转发”有两种常见场景:
• 反向代理(Reverse Proxy):把外部访问 WinGate 某端口的流量转给内网另一台主机/端口(类似 iptables DNAT)。
• 透明端口映射(TCP Mapping Service):把 WinGate 本机某端口的流量直接转给任意 IP/端口(类似 netcat/iptables REDIRECT)。
下面以图形界面(GateKeeper)分别说明两种配置方法,均无需手动写脚本。
──────────────────
一、反向代理(HTTP/HTTPS 场景示例)
-
启动管理控制台
开始菜单 → WinGate → GateKeeper,登录后进入 Services 页。 -
新建或修改 WWW Proxy Service
• 左侧列表若已存在 WWW Proxy Service,直接双击打开;
• 若没有,则右键空白处 → New Service → WWW Proxy Service → 按向导完成即可。 -
设置监听端口
General 选项卡 → Service 端口(例如 80 或 8080),勾选「Enable this service」。 -
绑定接口
Bindings 选项卡 → 选「Bind to any IP address on any internal adapter」或仅勾内部网卡,确保客户端可达。 -
配置反向代理规则
Non-Proxy Requests 选项卡
• 默认是 Reject Request,改为 Pipe request through to predetermined server。
• Server:填入最终内网服务器的 IP(如 192.168.100.10)。
• Port:填入内网服务器实际端口(如 80)。
• 可勾选 Change port in Host header,保持 URL 不变。
保存 → Apply。
此时 WinGate 会把所有访问其 80 端口的流量转发到 192.168.100.10:80。 -
如需仅对 192.168.100.0/24 生效
Policies 选项卡 → Add → Source IP → 指定 192.168.100.0/24 → Allow,其余默认 Deny。
──────────────────
二、TCP Mapping Service(通用端口转发,不限协议)
-
新建 TCP Mapping Service
Services → 右键 → New Service → TCP Mapping Service → Next → 输入自定义名称 → Finish。 -
设置监听端口
General 选项卡 → Service 端口(例如 9000)。 -
设置转达目标
TCP Mapping 选项卡
• Destination server:填写目标 IP(可公网也可内网,如 192.168.100.20)。
• Destination port:填写目标端口(如 22)。
• 可按需勾选 Preserve source address(日志里记录真实来源)。
保存 → Apply。 -
限制来源网段(可选)
Policies → Add → Source IP → 192.168.100.0/24 → Allow,其余 Deny。
──────────────────
三、快速验证
- 在客户机(192.168.100.x)上访问 WinGate_IP:映射端口,确认数据被正确转发。
- GateKeeper → Activity → 实时日志可看到转发记录。
──────────────────
• 端口冲突:确保 WinGate 所在机器无其他程序占用要监听的端口。
• 防火墙:Windows 防火墙或第三方安全软件需放行 WinGate 的监听端口。
• 多映射需求:可重复建立多个 TCP Mapping Service 或 WWW Proxy Service,每个服务对应一条转发规则。
完成上述步骤后,即可在 WinGate 图形界面下实现“把指定网段流量转发到指定端口”的功能,效果与 Linux iptables DNAT/REDIRECT 类似。
在 Windows 主机上实现全局透明代理
如果您最终目的是想实现类似“透明代理”的功能,让特定网段的设备通过您的 Windows 电脑上的代理(如 Clash、v2ray 等运行在 7890 端口)上网,正确的做法不是在 WSL 里操作,而是在 Windows 主机上操作。
确保您的代理软件(如 Clash for Windows)已正确安装并运行,开启了允许局域网连接(Allow LAN)和相应的混合端口(如 7890)。
使用 Windows 自带的 netsh 设置端口转发(这是您原始需求在 Windows 上的等效实现):
cmd
:: 以管理员身份打开 CMD
:: 将所有来自 192.168.100.0 网段,目标为本机 80 端口的 TCP 流量,重定向到本机的 7890 端口
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=127.0.0.1 connectport=7890
:: 如果需要重定向 HTTPS 流量(端口 443)
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=443 connectaddress=127.0.0.1 connectport=7890
配置 Windows 防火墙,允许入站连接:
cmd
netsh advfirewall firewall add rule name="Proxy Redirect HTTP" protocol=TCP dir=in localport=80 action=allow
netsh advfirewall firewall add rule name="Proxy Redirect HTTPS" protocol=TCP dir=in localport=443 action=allow
这样,当同一局域网下的其他设备(192.168.100.10)将网关设置为您的 Windows 电脑的 IP 地址后,它们的 HTTP/HTTPS 流量就会被发送到您电脑的 80/443 端口,继而由 netsh portproxy 重定向到本机 127.0.0.1:7890 的代理服务进行处理。
删除 netsh interface portproxy 规则
要删除您之前添加的端口代理规则,可以使用以下命令:
方法一:使用完全匹配参数删除
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=443
这条命令会删除监听在 0.0.0.0:443 的所有 IPv4 到 IPv4 的端口代理规则。
方法二:查看所有规则后再删除
如果您不确定要删除的确切规则,可以先查看所有现有规则:
netsh interface portproxy show all
这会显示所有已配置的端口代理规则,例如:
IPv4 侦听员到 IPv4 连接侦听地址 侦听端口 连接地址 连接端口
0.0.0.0 443 127.0.0.1 7890
确认后,使用上面提到的删除命令删除特定规则。
方法三:重置所有端口代理规则
如果您想删除所有端口代理规则,可以使用以下命令:
netsh interface portproxy reset
注意:这将删除所有端口代理配置,而不仅仅是您添加的那一条。请谨慎使用。
额外提示
删除规则后,您可能还需要更新防火墙设置。如果您之前添加了允许这些端口的防火墙规则,现在也可以删除它们:
netsh advfirewall firewall delete rule name="Proxy Redirect HTTPS"
验证删除
删除后,再次运行查看命令确认规则已删除:
netsh interface portproxy show all
如果列表中没有您删除的规则,说明操作成功。
注意事项
- 这些命令需要在管理员权限的命令提示符或 PowerShell 中运行
- 删除规则不会影响当前已建立的连接,只会阻止新的连接使用该转发规则
- 如果您使用的是第三方工具(如某些代理软件)设置的端口转发,可能还需要在该工具中禁用相关功能