在 Windows 上启用 IP 转发

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

太长不看版(TL;DR)

以管理员权限运行 PowerShell,首先输入 Get-NetAdapter 确定网卡名称(即输出结果的 Name 列)。

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

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

对比

  1. 使用netsh interface portproxy:只能实现端口对端口的转发,无法做到路由转发的效果,也不保留源 IP 地址。
  2. 修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:全局生效,无法单独针对某一块网卡做调整。

遗留问题

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

参考资料

在 Windows 上启用 IP 转发
https://www.sjdhome.com/blog/post/ip-forward-on-windows/

本文作者
sjdhome
发布于
2023/11/10
许可协议

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

#

评论区加载中…

由于需要连接 GitHub,中国大陆访客可能面临加载缓慢。