Windows中netsh命令实现端口转发

Windows中netsh命令实现端口转发

在使用服务器的时候由于仅windows服务器拥有独立IP,而数据库位于内网。为了开发调试方便现在需要能够映射数据库端口到外网。
经网上查阅资料windows自带了Interface Portproxy,刚好这东西能够满足需求。

使用方法

语法:

powershell
1
netsh interface portproxy delete v4tov6listenport= {Integer | ServiceName} [[listenaddress=] {IPv4Address| HostName}] [[protocol=]tcp]

服务器相关的参数:

  • 数据库IP: 172.16.0.100

  • 端口: 3306

  • 服务器IP: 172.16.0.56

  • 需要映射的端口: 36033

powershell
1
netsh interface portproxy add v4tov4 listenport=36033 connectaddress=172.16.0.100 connectport=3306

接下来就可以通过外网IP加端口 36033 访问数据库了,下面记录一下相关的参数

参数:

  • listenport: 必需,指定要监听的端口

  • listenaddress: 需要监听的计算机 IP,未指定则默认值为本机

  • connectport: 需要转发的端口,未指定则默认值为本地计算机上的 listenport

  • connectaddress: 需要转发的计算机 IP,未指定则默认值为本机

  • protocol: 指定的协议,暂仅支持 TCP

相关命令

  • 查看

    powershell
    1
    netsh interface portproxy show all
  • 修改

    powershell
    1
    netsh interface portproxy set v4tov4 listenport=33306 connectaddress=172.16.0.100 connectport=3306
  • 删除

    powershell
    1
    netsh interface portproxy delete v4tov4 listenport=36033

注意事项

如果系统是 xp/2003 的话,要先安装 ipv6: netsh interface ipv6 install

请确保防火墙(Windows防火墙或通常包含在杀毒软件中的第三方防火墙)允许到新端口的传入连接。 如有必要,可以使用以下命令添加新的 Windows 防火墙规则:

powershell
1
netsh advfirewall firewall add rule name="portproxy_1344" protocol=TCP dir=in localip=172.16.0.100 localport=36033 action=allow

如果该命令未返回任何内容并且通过 netsh interface portproxy 进行端口转发不成功,则请确保 iphlpsvc(IP Helper) 服务当前已在你的系统上运行

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...