使用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并未启动, 启动该服务即可正常工作。