Windows服务器基于netsh命令实现请求转发

ops/2024/10/10 21:21:18/

一、前言

        在日常工作中经常会遇到涉及内外网互通的情况,常规操作是使用第三方软件Nginx等代理请求,实现内外网的互联互通。但是某种层度上看的话,如果只是涉及请求代理,使用Nginx第三方服务器软件有种小题大做的感觉,它的核心作用更多是实现请求分发、负载均衡等性能调优。

        基于上述背景,本文将介绍如何在Windows服务器使用netsh命令进行TCP请求转发。Linux版本可参考:使用ssh或者autossh进行端口转发

二、正文

1、netshnginx区别

  1. netsh

    • 用途netsh 是 Windows 操作系统中的一个命令行实用程序,用于管理网络接口、网络协议和各种网络服务。
    • 功能netsh 可以用来配置网络设置,如 IP 地址、子网掩码、网关、DNS 服务器等;还可以管理防火墙、VPN、网络适配器等功能。
    • 操作系统netsh 是 Windows 特有的工具,可以在 Windows 中的命令提示符或 PowerShell 中使用。
  2. Nginx

    • 用途:Nginx 是一个高性能的开源 Web 服务器,也可以用作反向代理服务器、负载均衡器和 HTTP 缓存。
    • 功能:Nginx 的主要功能是处理和响应 HTTP 请求,它可以处理静态内容、动态内容(通过 FastCGI、uWSGI 等)、SSL/TLS 加密、虚拟主机配置等。
    • 操作系统:Nginx 是跨平台的,可以在多种操作系统上运行,包括各种 UNIX 类系统和 Windows。

主要区别

  • 用途和功能netsh 主要用于管理和配置网络设置和服务,而 Nginx 主要用于处理和分发 Web 请求。
  • 操作系统支持netsh 仅限于 Windows 系统,而 Nginx 可以在多种操作系统上运行。
  • 领域netsh 属于网络管理领域,主要服务于操作系统本身的网络功能;而 Nginx 属于服务器软件领域,主要服务于 Web 应用程序的处理和分发。

因此,netsh 和 Nginx 是两个在不同领域、解决不同问题的工具,没有直接的功能比较基础。

2、netsh功能介绍

注意!在window中,netsh现在只能针对TCP请求进行端口转发,不能对UDP协议进行转发。

端口转发(Port Forwarding):通过监听一个端口,将所有收到的数据,转发到另一个配置的本地端口或者远程地址的端口中。

举个例子:192.168.1.100 机器上部署了Tomcat服务,端口为8080。可用户所在网段为192.168.2.xxx,如果要访问到Tomcat服务就需要在 192.168.2.xxx 网段进行服务代理。

我们选择在 192.168.2.100 机器上使用netsh命令进行TCP端口代理,映射到 192.168.1.100 的Tomcat服务上。

netsh interface portproxy add v4tov4 listenport=6666 listenaddress=0.0.0.0 connectaddress=192.168.1.100 connectport=8080

上述指令中 我们将 2.100 的 6666 端口进行监听,一旦有请求访问过来就进行请求转发到 192.168.1.100 机器的 8080 端口,从而实现请求的代理。

当然,上述前提是192.168.2.100 与 192.168.1.100之间互通。用户后续访问 192.168.2.100:6666 等同于访问到 192.168.1.100:8080 。

3、netsh具体使用

上述指令中参数说明如下:

  • interface portproxy:切换到端口代理的上下文中。固定不变。
  • add:表示添加一个端口转发
  • v4tov4:表示添加的类型。还可以v4tov6,v6tov4,v6tov6四种参数
  • listenport:想要监听那个端口,相当于图1中的PortA
  • listenaddress:配置监听的地址,如何配置0.0.0.0表示本地的任何地址,如果是127.0.0.1,只有在请求通过这个回环地址,才会进行端口转发。监听的网卡地址。
  • connecport:转发到的端口,相当于图1中的PortB。
  • connectaddress:配置的转发的地址,可以是这个机器连接到的任何地址。

其他相关指令介绍:

--查看所有的端口转发netsh interface portproxy show all--删除一个端口映射
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=0.0.0.0--删除所有的端口映射
netsh interface portproxy reset--显示端口配置脚本
netsh interface portproxy dump

三、总结

        在日常网络管理和应用部署中,需要实现内外网之间的互通是一种常见的需求。传统上,我们可能会使用像Nginx这样的第三方软件来实现请求代理和转发。然而,在Windows服务器环境下,利用netsh命令进行TCP请求转发是一种更加直接和内置的方法。 

         本文通过比较netsh和Nginx的区别,清晰地展示了它们的功能定位和适用场景。netsh作为Windows操作系统的一部分,主要用于配置网络设置和服务,特别适合于在本地网络环境中进行端口转发和代理。相比之下,Nginx则是一个跨平台的高性能Web服务器和反向代理服务器,更适合处理Web请求的分发和负载均衡。

        进一步地,文章详细介绍了如何使用netsh命令在Windows服务器上进行TCP端口转发。通过实际的例子,展示了如何将来自一个网络段的请求代理到另一个网络段中的服务,从而实现内外网的互通。重点解释了各个参数的含义和使用方法,确保读者能够准确地配置和管理端口转发

        最后,强调了netsh在Windows环境中的独特优势和局限性,例如它只支持TCP请求转发,不能处理UDP协议。总结指出,选择合适的工具取决于具体的需求和操作系统环境,netsh为Windows管理员提供了一个方便和强大的工具来管理和优化网络连接。

        通过本文的学习,读者可以更加深入地理解和利用netsh命令来解决内外网互通的需求,提升网络管理效率和灵活性。


http://www.ppmy.cn/ops/55280.html

相关文章

objdump

objdump是一个用于在Linux系统中查看和解析对象文件(如可执行文件、目标文件和共享库)的命令行工具。它可以展示文件的多种信息,包括汇编代码、符号表、调试信息等。objdump的常用选项包括: -d 或 --disassemble:反汇编…

PDF处理篇:有哪些免费的PDF注释工具

PDF 是一种功能强大的格式,广泛用于处理和传输数据。您可以创建自己的 PDF 文件,也可以使用其他人创建的 PDF 文件。但是,有时您想在 PDF 文件中包含其他文本、图形和其他元素。这就是 PDF 注释器为您提供帮助的地方。 有许多可用的 PDF 注释…

女性经济崛起,天润融通用客户感知挖掘市场潜力

每逢一年一度的国际妇女节,“女性”话题都会被郑重地讨论。 从消费市场上来说,最近几年女性群体正在拥有越来越大的影响力,甚至出现了“她经济”这样的专属词汇在最近几年被市场反复讨论。 毫无疑问,女性消费群体的崛起已经成为…

《昇思25天学习打卡营第7天|函数式自动微分》

文章目录 今日所学:一、函数与计算图二、微分函数与梯度计算三、Stop Gradient四、Auxiliary data五、神经网络梯度计算总结 今日所学: 今天我学习了神经网络训练的核心原理,主要是反向传播算法。这个过程包括将模型预测值(logit…

【C语言】--操作符详解

🌭个人主页: 起名字真南 🍿个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 :2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

删除账户相关信息

功能需求 获取正确的待删除账户名杀死系统中正在运行的属于该账户的进程确认系统中属于该账户的所有文件删除该账户 1. 获取正确的待删除账户名 #让用户输入账户名 read -t 10 -p "please input account name: " accountif [ -z $account ] thenecho "account…

精准畜牧业:多维传感监测及分析动物采食行为

全球畜牧业呈现出一个动态且复杂的挑战。近几十年来,它根据对动物产品需求的演变进行了适应,动物生产系统需要提高其效率和环境可持续性。在不同的畜牧系统中有效行动取决于科学技术的进步,这允许增加照顾动物健康和福祉的数量。精准畜牧业技…

前后端分离:四种开发模式与实践指南

前后端分离:四种开发模式与实践指南 什么是前后端分离 当业务变得越来越复杂或产品线越来越多时,原有的开发模式就无法满足业务需求了。 产品越来越多,展现层的变化越来越快、越来越多,此时应该进行前后端分离的分层抽象&#…