在 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 问题。