Windows下的端口转发

使用powershell中的netsh命令

端口转发是网络运维中常用到的功能, Windows已经自带了端口转发功能, 可以通过在PowerShell中调用netsh interface portproxy实现, 一般格式如下:

netsh interface portproxy add v4tov4 listenaddress=$Lhost listenport=$Lport connectaddress=$Rhost connectport=$Rport

参数说明可以通过调用netsh interface portproxy add v4tov4 ?进行查看, 比如要监听本地的8554端口, 将其转发到192.168.31.39:554上(进行RTSP流转发).可以调用如下命令:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8554 connectaddress=192.168.31.39 connectport=554

另外, netsh interface portproxy还支持一些管理命令, 这些命令可以通过netsh interface portproxy ?进行查看, 下面是一份清单:

命令 备注
add 在一个表格中添加一个配置项。
delete 从一个表格中删除一个配置项。
dump 显示一个配置脚本。
help 显示命令列表。
reset 重置端口代理配置状态。
set 设置配置信息。
show 显示信息。

使用Win-PortFwd管理端口转发

尽管直接使用PowerShell中的命令不是很复杂, 但仍有人觉得不方便, 这里推荐github上的一个管理脚本Win-PortFwd, 它提供了比较友好的菜单和向导, 可以更加简单的对转发的端口进行管理

权限问题

在添加端口转发的时候有时会出现权限问题, 通常运行下面的命令就可以解决:

set-executionpolicy remotesigned

没有监听端口的问题

在添加端口后, 也没有报错, 但端口转发就是没有工作, 使用netstat查看监听中的端口, 发现端口根本没有在监听, 这很有可能是因为系统服务列的IP Helper并未启动, 启动该服务即可正常工作。