如何在Windows中使用netsh命令进行端口转发

https://www.freebuf.com/articles/system/176889.html

早上自己做了下实验,的确可以。linux下 ssh可以做端口转发,windows 下面的netsh也是可以做端口转发的

已下是正文:

感谢原作者

自Windows XP开始,Windows中就内置网络端口转发的功能。任何传入到本地端口的TCP连接(IPv4或IPv6)都可以被重定向到另一个本地端口,或远程计算机上的端口,并且系统不需要有一个专门用于侦听该端口的服务。

在Linux中,使用iptables可以非常轻松地配置端口重定向。在Windows Server系统上,路由和远程访问服务(RRAS)通过使用虚拟专用网络 (VPN) 或拨号连接支持远程用户或站点到站点连接,但这种方式相对较为麻烦。其实,除此之外还有一种更为简单的方法可以帮助我们在Windows中实现端口转发,即我们可以使用命令Netsh的Portproxy模式配置Windows中的端口转发。该命令的语法如下:

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport

listenaddress – 等待连接的本地IP地址。

listenport – 本地侦听TCP端口。

connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)。

connectport – 一个TCP端口,来自listenport的连接会被转发到该端口。假设当前我们的RDP服务端口在一个非标准端口上进行响应,如3340(端口可以在服务设置中更改)。为此,我们需要将传入流量从TCP端口3340重定向到另一个本地端口 – 3389(即标准rdp端口)。

我们以管理员身份启动命令提示符并执行以下命令:

netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

10.10.1.110 – 计算机的当前IP地址。

使用netstat确保3340端口当前处于被侦听状态:

netstat -ano | findstr :3340

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

必须在为其创建端口转发规则的网络接口上启用IPv6支持。

以上条件必须满足,如果没有IP Helper服务且未启用IPv6支持,则端口重定向将不起作用。

你可以使用其PID找出正在侦听此端口的进程(在我们的示例中PID为636):

tasklist | findstr 636

让我们使用任意的RDP客户端尝试从远程系统连接到此计算机。指定RDP端口3340,在RDP服务器地址后以冒号分隔,例如10.10.1.110:3340

如果不出问题的话,连接应该会被成功建立。

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

netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110  localport=3340 action=allow

你可以创建任意数量的Windows端口转发规则。所有netsh interface portproxy规则都是持久性的,并会在Windows系统重启后被保存。

显示系统中的转发规则列表:

netsh interface portproxy show all

在我们的例子中,只有一个转发规则即从3340到3389端口的转发:

Listen on ipv4:             Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
10.1.1.110 3340 10.1.1.110 3389

Tip:此外,portproxy设置可以通过以下命令查看:

netsh interface portproxy dump
#========================
# Port Proxy configuration
#========================
pushd interface portproxy
reset
add v4tov4 listenport=3340 connectaddress=10.1.1.110 connectport=3389
popd
# End of Port Proxy configuration

删除指定的端口转发规则:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110

清除所有当前的端口转发规则:

netsh interface portproxy reset

重要:以上端口转发仅适用于TCP端口,对于UDP端口将不起作用,并且不能使用127.0.0.1作为连接地址。

如果要将传入的TCP连接转发至另一台计算机,则命令如下:

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101

此规则将所有传入的RDP请求(到3389端口)从此计算机重定向到IP地址为192.168.1.101的远程计算机上。

portproxy的另一个特性就是可以让它看起来像任意的远程网络服务在本地运行。

例如,将连接从本地端口5555转发至远程地址157.166.226.25(CNN网站):

netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp

现在,如果你在浏览器中访问http://localhost:5555/,则将打开CNN网站的主页。因此,尽管浏览器对本地计算机进行了寻址,但它仍会打开一个远程页面。

端口转发还可用于将端口从网卡的外部地址,转发到在同一计算机上运行的虚拟机端口。

此外,在Windows Server 2012 R2中情况可能会有所不同。在Windows Server 2012 R2中,端口转发规则仅在系统重启之前有效,并且在重启后它们会被重置。出现这种病情况,你需要检查网络接口上是否存在定期断开连接,以及操作系统引导时IP地址是否发生更改(最好使用静态IP地址)。作为一种解决方案,我会添加一个使用netsh interface portproxy规则的脚本到Windows scheduler,以在系统启动时运行。

在Windows Server 2003/XP中,必须在注册表项HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters中另外将IPEnableRouter参数设置为1。

[转帖]Windows 内置端口转发功能的更多相关文章

  1. Windows内置安全主体

    转自:https://blog.csdn.net/xcntime/article/details/51746148 导读:对于Windows内置安全主体特别需要注意的是:你无法创建.重命名和删除它们, ...

  2. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

  3. 利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat diskWindow ...

  4. jsp内置对象 转发与重定向的区别

    jsp 内置对象  转发与重定向的比较 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重 ...

  5. django内置的分页功能

    django内置的分页功能 # 先导入需要查询的模型类 from game.models import Score # 导入内置的分页功能 from django.core.paginator imp ...

  6. 传输层隧道技术之lcx内网端口转发

    传输层技术包括TCP隧道.UDP隧道和常规端口转发等.在渗透测试中,如果内网防火墙阻止了指定端口的访问,在获得目标机器的权限后,可以使用IPTABLES打开指定端口.如果内网中存在一系列防御系统,TC ...

  7. linux下内网端口转发工具:linux版lcx [实现远程内网维护]

    这个工具以前使用的初衷是内网渗透,需要将内网ssh端口转发到外网服务器上.但这个工具同样适用于运维工程师进行远程内网维护. 当然这一切的前提是内网可以访问外网,检测方法当然就是直接ping 一个外网I ...

  8. SSH 内网端口转发实战

    导读 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人. 如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧 ...

  9. secureCRT端口转发功能

    总共有三台机器: A是办公网络的windows主机, B是一台linux堡垒机(114.144.xxx.xx), C是内网生产环境一台linux机器(192.168.1.6), A只能访问B但A不能访 ...

随机推荐

  1. Kubernetes1.91(K8s)安装部署过程(七)--coredns安装

    为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...

  2. 浅拷贝与深拷贝的实现方式、区别;deepcopy如果你来设计,如何实现(一)

    浅拷贝与深拷贝的实现方式.区别:deepcopy如果你来设计,如何实现: copy浅拷贝:没有拷贝子对象,所以原始数据改变,子对象改变 deepcopy深拷贝:包含对象里面的子对象的拷贝,所以原始对象 ...

  3. CAN总线学习总结——错误帧和错误状态

    CAN总线学习总结——错误帧和错误状态 标签: 数据 / 错误帧 / 错误状态 / CAN总线 / 总线协议 253 一.五种CAN总线可能发生的错误 1.CRC错误: 接收节点计算出的CRC校验值, ...

  4. 怎样让oracle实验本在不做实验时性能提升——win7下举例

    怎样让oracle实验本在不做实验时性能提升--win7下举例 型号:ThinkPad E431 系统:WIN7 实验使用的笔记本不使用数据库时.建议将oracle关闭,使其释放占用的资源. orac ...

  5. Centos7-kafka-2.12安装验证

    1.下载Kafka 官网:https://kafka.apache.org/ 2.安装脚本 #解压 tar zxf kafka_2.-.tgz -C /usr/local mv /usr/local/ ...

  6. 2.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重定向文件和添加文件

    回忆第一章节的内容,我们用echo命令输出莎士比亚的第一首十四行诗的第一行(Listing 6): $ echo "From fairest creatures we desire incr ...

  7. MSF里MS17_010利用模块笔记

    1.   auxiliary/scanner/smb/smb_ms17_010      //扫描检测漏洞辅助模块 扫描结果这里可以看到 2,3,4这几台主机存在此漏洞! 2.     auxilia ...

  8. Python3入门(二)——Python开发工具Pycharm安装与配置

    一.概述 与IDEA同一家——Jetbrains出品的IDE,强大之处不再赘述 二.安装 点击下载一个合适的版本 参考网友的激活方式激活:https://blog.csdn.net/u01404481 ...

  9. 20155236范晨歌_Web基础

    20155236范晨歌_Web基础 目录 实践目标 Apache 前端编程 后端编程 PHP MYSQL & 后端 简单SQL注入与XSS 发帖和会话管理 实践目标 (1)Web前端HTML ...

  10. [Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION

    根据 471716.1,11g 之后,下列动作如果遇到坏块,都会输出记录到  V$DATABASE_BLOCK_CORRUPTION. -  Analyze table .. Validate str ...