Windows端口转发

命令介绍

Windows 从 Windows 2000 开始就提供了最基本的端口转发功能,是基于 Windows 的 IP Helper 服务的,不仅可以提供端口转发功能,还可以通过将 IPv4 和 IPv6 的不同地址的数据进行转发,但是只可以转发 TCP 协议,暂不支持 UDP 协议,使用 netsh interface portproxy 命令即可开启

例如我想查看所有的端口转发规则,则可以使用 netsh interface portproxy show all。

 PS C:\Windows\system32> netsh interface portproxy show all
 侦听 ipv4:                 连接到 ipv4:
 地址            端口        地址            端口
 --------------- ----------  --------------- ----------
 127.0.0.1       3389        25.63.54.89     3389

参数

 show all       - 显示所有端口代理参数。
 show v4tov4    - 显示 IPv4 代理连接到另一个 IPv4 端口的参数。
 show v4tov6    - 显示 IPv4 代理连接到 IPv6 的参数。
 show v6tov4    - 显示 IPv6 代理连接到 IPv4 的参数。
 show v6tov6    - 显示 IPv6 代理连接到另一个 IPv6 端口的参数。

add命令

add 命令可以增加一条端口转发规则,具体用法为:

 add v4tov4     - 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。
 add v4tov6     - 添加通过 IPv6 的 IPv4 和代理连接到的侦听项目。
 add v6tov4     - 添加通过 IPv4 的 IPv6 和代理连接到的侦听项目。
 add v6tov6     - 添加通过 IPv6 的 IPv6 和代理连接到的侦听项目。
 用法: add v4tov4 [listenport=]<integer>|<servicename>
             [connectaddress=]<IPv4 address>|<hostname>
             [[connectport=]<integer>|<servicename>]
             [[listenaddress=]<IPv4 address>|<hostname>]
             [[protocol=]tcp]
 参数:
         标记            值
         listenport      - IPv4 侦听端口。
         connectaddress  - IPv4 连接地址。
         connectport     - IPv4 连接端口。
         listenaddress   - IPv4 侦听地址。
         protocol        - 使用的协议。现在只支持 TCP。

例如我想将本地的 3389 端口转发到远程的 3389 端口上,可以使用以下命令实现:

 netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=3389 connectaddress=25.63.54.89 connectport=3389

delete命令

delete 命令用来删除一条端口转发规则,删除时只需要指定端口转发的监听地址和端口即可,具体用法为:

 delete v4tov4  - 删除通过 IPv4 的 IPv4 和代理连接到的侦听项目。
 delete v4tov6  - 删除通过 IPv6 的 IPv4 和代理连接到的侦听项目。
 delete v6tov4  - 删除通过 IPv4 的 IPv6 和代理连接到的侦听项目。
 delete v6tov6  - 删除通过 IPv6 的 IPv6 和代理连接到的侦听项目。
 用法: delete v4tov4 [listenport=]<integer>|<servicename>
             [[listenaddress=]<IPv4 address>|<hostname>]
             [[protocol=]tcp]
 参数:
        标记             值
        listenport     - 要侦听的 IPv4 端口。
        listenport     - 要侦听的 IPv4 地址。
        protocol       - 要使用的协议。当前仅支持 TCP。

dump命令

dump 命令可以将已存在的端口转发规则进行输出,保存到一个文件中或者输出到控制台的标准输出中,方便发送给其他人或者进行备份,以备下次还原。

执行 netsh interface portproxy dump 将配置信息输出到控制台的标准输出,或者执行 netsh interface portproxy dump > 1.txt 命令将配置信息重定向到文件中。

PS C:\Windows\system32> netsh interface portproxy dump
 
#========================
# 端口代理配置
#========================
pushd interface portproxy
 
reset
add v4tov4 listenport=3389 connectaddress=25.63.54.89 connectport=3389
 
 
popd
 
# 端口代理配置结束
 
PS C:\Windows\system32> netsh interface portproxy dump >1.txt

set命令

set 命令可以修改现有的端口转发配置,也可以新加端口转发配置。

例如将刚才的远程地址和端口改为 123.124.125.126:3390,使用以下命令来修改。

PS C:\Windows\system32> netsh interface portproxy show all
 
侦听 ipv4:                 连接到 ipv4:
 
地址            端口        地址            端口
--------------- ----------  --------------- ----------
127.0.0.1       3389        25.63.54.89     3389
 
C:\Windows\system32>netsh interface portproxy set v4tov4 listenaddress=127.0.0.1 listenport=3389 connectaddress=123.124.125.126 connectport=3390
 
 
C:\Windows\system32>netsh interface portproxy show all
 
侦听 ipv4:                 连接到 ipv4:
 
地址            端口        地址            端口
--------------- ----------  --------------- ----------
127.0.0.1       3389        123.124.125.126 3390

reset命令

reset 命令可以重置所有的端口转发规则,如果没有备份的小伙伴慎用。

C:\Windows\system32>netsh interface portproxy show all
 
侦听 ipv4:                 连接到 ipv4:
 
地址            端口        地址            端口
--------------- ----------  --------------- ----------
127.0.0.1       3389        123.124.125.126 3390
 
 
C:\Windows\system32>netsh interface portproxy reset
 
 
C:\Windows\system32>netsh interface portproxy show all
 
 
C:\Windows\system32>

注意事项

如果有添加了规则但是规则不生效的小伙伴,可以检查下 Windows 的 IP Helper 服务是否开启,因为端口转发功能是由这个服务支持的,一定要保证它是正常运行的才可以。还有,在监听本地地址上的端口时,最好先确定本地的端口没有被占用,防止端口冲突影响其他程序的正常运行。


Windows端口转发
https://www.hechunyu.com/archives/windowsduan-kou-zhuan-fa
作者
chunyu
发布于
2022年05月23日
许可协议