在 Windows 上启用 IP 转发

启用 IP 转发，可以让机器自身成为一台路由器来转发 IP 报文。在 Linux 下，可以通过 sysctl net.ipv4.ip_forward = 1 和 sysctl net.ipv6.conf.all.forwarding = 1 来启用内核 IP 报文转发。但在 Windows 下，相关的文章却很稀少，许多带有误导性。

步骤

以管理员权限运行 PowerShell，输入 Get-NetAdapter 确定要操作的网卡名称（即输出结果的 Name 列）。

输入Set-NetIPInterface -ifAlias '网卡名称' -Forwarding Enabled，单引号保留，网卡名称换成上面找到的。

要获取所有已打开转发功能的网卡，输入 Get-NetIPInterface -Forwarding Enabled。

对比其他方法

使用netsh interface portproxy：只能实现端口对端口的转发，无法做到路由转发的效果，也不保留源 IP 地址。

修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters：全局生效，无法单独针对某一块网卡做调整。

NAT (MASQUERADE)

Linux 下使用 IP 转发通常会搭配 iptables 的 MASQUERADE 功能使用。但在 Windows 下我没有找到对应功能。

如果你的需求是使用 WireGuard，将某台机器作为互联网出口，Tailscale 会更适合，他们解决了 NAT 问题。

参考资料

Set-NetIPInterface (NetTCPIP) | Microsoft Learn

How can I enable packet forwarding on Windows?

原文：在 Windows 上启用 IP 转发