Windows自带的端口转发netsh interface portproxy
最近有一个需求,有某台内网服务器的程序,由于业务需求该服务器不能布置在公网上,且该业务只能运行于该服务器。(对,就是有那么奇葩的需求。)最开始想通过公网服务器安装路由解决,后发现太麻烦,无意中接触到netsh interface portproxy该命令,有如神助。
一. 问题描述
- A (内网:192.168.88.100)服务器连接在公网上
- B (内网:192.168.88.110)服务器位于内网中
- B服务器有一个使用9988端口的TCP程序需要被公网访问,但不能改变网络拓扑架构。
二、问题解决
1. 新增端口转发:
首先打开命令提示符(cmd)
netsh interface portproxy add v4tov4 listenport=监听端口 connectaddress=转发到的地址 connectport=转发到的端口
例子: netsh interface portproxy add v4tov4 listenport=9988 connectaddress=192.168.88.110 connectport=9988
2. 查看转发了哪些端口
netsh interface portproxy show all
3. 删除转发规则
netsh interface portproxy delete v4tov4 listenaddress=192.168.88.110 listenport=9988
三、其它说明
1. 监听端口与转发到的端口可以不同。例如想暴露公网端口为19988,实际服务器端口为9988,那么可写成netsh interface portproxy add v4tov4 listenport=19988 connectaddress=192.168.88.110 connectport=9988
2. 能使用DMZ的情况还是推荐使用DMZ
3.使用netsh interface portproxy记得配置Windows和出口路由器防火墙规则