背景

最近租了一个windwos系统的服务器和sqlserver数据库。服务器有外网ip,数据库只能内网访问,为了开发方便,需要做个端口转发,实现通过外网连接内网的sqlserver。刚好windows自带了Interface Portproxy这个东西,能满足要求,下面简单记录一下配置过程

简介

相关的参数:数据库IP:172.16.0.123 端口:1433 服务器IP:172.16.0.10 需要映射的端口:1344,接下来就是一条命令搞定了<!–more–>

netsh interface portproxy add v4tov4 listenport=1344 connectaddress=172.16.0.123 connectport=1433

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

  • listenport 必需。指定要监听的端口
  • listenaddress 需要监听的计算机ip,未指定则默认值为本机
  • connectport 需要转发的端口,未指定则默认值为本地计算机上的listenport
  • connectaddress 需要转发的计算机ip,未指定则默认值为本机
  • protocol 指定的协议,暂仅支持TCP

相关命令

查看

netsh interface portproxy show all

修改

netsh interface portproxy set v4tov4 listenport=1333 connectaddress=172.16.0.123 connectport=1433

删除

netsh interface portproxy delete v4tov4 listenport=29090

注意事项

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

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

netsh advfirewall firewall add rule name=”forwarded_RDPport_1344” protocol=TCP dir=in localip=172.16.0.10  localport=1344 action=allow

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