当前位置: 首页 > news >正文

使用nginx和frp实现高效内网穿透:简单配置,畅通无阻

I. 引言

A. 介绍内网穿透的概念和用途

  1. 内网穿透是一种网络技术,它允许用户通过公共网络访问位于私有网络(内网)中的资源和服务。在传统的网络环境中,内网通常是由路由器或防火墙保护的,无法直接从外部网络访问内部资源。这种限制可能会对远程办公、远程管理设备、远程访问文件和服务等应用场景造成困扰。
  2. 内网穿透技术通过在内网和外网之间建立一条安全的通道,允许外部用户通过公共网络访问内部网络资源。它提供了一种简单而有效的方法,使用户能够远程连接到内部服务器、访问内部网站、使用内部应用程序等。

B. 使用nginx和frp的优势和适用性

  1. nginx是一个高性能的Web服务器和反向代理服务器,它具有卓越的性能、灵活性和可扩展性。nginx的反向代理功能使其成为实现内网穿透的理想选择。通过配置nginx作为反向代理服务器,可以将外部请求转发到内部服务器,实现对内部资源的访问。
  2. frp(Fast Reverse Proxy)是一种开源的内网穿透工具,它提供了一种简单而灵活的方式来实现内网穿透。frp使用客户端-服务器架构,通过在内网中运行frp客户端和在公网中运行FRP服务器来建立连接。frp通过将外部请求转发到内部服务器,使用户能够安全地访问内部网络资源。
  3. nginx和frp的结合使用为内网穿透提供了一种强大而可靠的解决方案。nginx作为反向代理服务器可以处理外部请求的转发和负载均衡,而frp提供了安全的通信通道,使外部用户能够远程访问内部网络资源。这种组合可以满足各种内网穿透需求,并提供高性能和可靠性。

II. 理解nginx

A. nginx的基本概述和特点

  • nginx是一款高性能的Web服务器和反向代理服务器,由俄罗斯的工程师Igor
    Sysoev于2004年创建。它的发展历程经历了多个版本的迭代和改进,如今已成为广泛使用的服务器软件之一。
  • nginx以其出色的性能和低内存占用而闻名。相比传统的服务器软件,NGINX采用了事件驱动的架构,能够处理大量并发连接而不会过度消耗系统资源。这使得NGINX能够高效地处理高负载的网络流量,同时保持较低的内存使用。

B. 安装和配置nginx

安装nginx通常是一个简单的过程,可以根据您的操作系统选择适合的安装方法。以下是一键安装步骤:

wget https://dosthing.github.io/imagic/shell/software/nginx-install.sh
#修改权限
chmod  +x nginx-install.sh 
#执行安装
./nginx-install.sh

C. nginx作为反向代理的使用案例

  1. nginx作为反向代理的概念是将外部请求转发到内部服务器,以提供更高的性能、负载均衡和安全性。当外部客户端发送请求时,nginx接收请求并将其转发到内部服务器处理,并将响应返回给客户端。
  2. 使用nginx作为反向代理的一个常见案例是在Web应用程序中实现负载均衡。通过将请求分发给多个后端服务器,nginx可以平衡负载,提高系统的可伸缩性和稳定性。
  3. 另一个使用案例是将外部请求转发到内部服务器以提供访问控制和安全性。nginx可以作为安全网关,拦截和验证请求,保护后端服务器免受恶意攻击。

总之,nginx作为反向代理提供了灵活且可靠的方式来处理外部请求,并将其转发到内部服务器,以提供高性能、负载均衡和安全性。

III. 理解frp

A. frp的基本概述和特点

  1. frp(Fast ReverseProxy)是一种开源的内网穿透工具,它提供了一种简单而灵活的方式来实现内网穿透。FRP的作用是允许外部用户通过公共网络访问位于私有网络(内网)中的资源和服务。
  2. frp采用了客户端-服务器架构,通过在内网中运行frp客户端和在公网中运行FRP服务器来建立连接。frp客户端负责将内网资源映射到公网,而frp服务器则负责接收外部请求并将其转发到对应的frp客户端。
  3. frp使用一种基于TCP和UDP的通信协议来实现客户端和服务器之间的通信。该协议包括了一系列的指令和数据包,用于建立连接、传输数据和控制流程。

frp的特点包括:

  1. 简单易用:frp提供了简单而直观的配置方式,使用户能够快速上手并进行内网穿透设置。
  2. 灵活性:frp支持多种内网穿透方式,如TCP端口转发、HTTP和HTTPS代理等,可以根据不同的需求进行配置。
  3. 安全性:frp通过使用加密和身份验证机制来确保通信的安全性。用户可以配置访问令牌和TLS证书等来保护内网资源的访问。
  4. 可扩展性:frp支持多客户端和多服务器的部署,可以满足复杂的内网穿透需求,并提供高可用性和负载均衡。

总结起来,frp是一种简单而灵活的内网穿透工具,采用客户端-服务器架构和通信协议来实现外部用户对内网资源的访问。它具有简单易用、灵活性、安全性和可扩展性等特点,适用于各种内网穿透场景。

B. 安装和配置frp

根据自己的操作类型选择对应的安装包下载
https://github.com/fatedier/frp/releases/tag/v0.51.3
服务端配置:修改配置frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 5443
kcp_bind_port = 5443
dashboard_port = 6443
dashboard_user = 用户名
dashboard_pwd = 密码
vhost_http_port = http端口
vhost_https_port = https端口
log_file = ./frps.log
log_level = info
log_max_days = 3
token = z3mNsFshlzYxYv9E
max_pool_count = 50
tcp_mux = true
subdomain_host = frps.test.cn
  bind_addr:指定frps监听的IP地址,这里设置为0.0.0.0表示监听所有可用的网络接口。bind_port:指定frps监听的TCP端口号,这里设置为5443。kcp_bind_port:指定frps监听的KCP端口号,这里设置为5443。KCP是一种基于UDP的可靠传输协议。dashboard_port:指定frps的仪表盘(dashboard)的访问端口号,这里设置为6443。仪表盘是一个Web界面,用于监控和管理frps的运行状态。dashboard_user:指定仪表盘的用户名,这里设置为"用户名"。您需要将其替换为实际的用户名。dashboard_pwd:指定仪表盘的密码,这里设置为"密码"。同样,您需要将其替换为实际的密码。vhost_http_port:指定HTTP协议的虚拟主机访问端口号。vhost_https_port:指定HTTPS协议的虚拟主机访问端口号。log_file:指定frps的日志文件路径和名称,这里设置为"./frps.log",表示将日志记录到当前目录下的frps.log文件中。log_level:指定日志的级别,这里设置为info,表示记录信息级别的日志。其他可选的级别包括debug、warn和error等。log_max_days:指定日志文件的最大保留天数,这里设置为3,表示保留3天的日志文件。token:指定连接frps的客户端需要提供的身份验证令牌。这里设置为"z3mNsFshlzYxYv9E",您可以将其替换为自己的令牌。max_pool_count:指定连接池的最大连接数,这里设置为50。tcp_mux:指定是否启用TCP多路复用,这里设置为true,表示启用。subdomain_host:指定用于子域名访问的主机名,这里设置为"frps.test.cn"。您可以将其替换为您自己的域名。

客户端配置 修改frpc.ini

[common]
server_addr = frps.test.cn
server_port = 5443
token = z3mNsFshlzYxYv9E
[web]
type = http
local_ip = 192.168.119.128
local_port = 80
#remote_port = 2003
subdomain = a
[ssh]
type = tcp
local_ip = 192.168.119.128
local_port = 22
remote_port = 6000
#subdomain = b
[common]:这是一个通用配置部分,包含了与frpc的基本连接参数。server_addr:指定frps服务器的地址,这里设置为"frps.test.cn"。您需要将其替换为实际的服务器地址。
server_port:指定frps服务器的端口号,这里设置为5443。
token:指定连接frps服务器需要提供的身份验证令牌,这里设置为"z3mNsFshlzYxYv9E"。请确保与frps服务器配置中的令牌匹配。
[web]:这是一个web类型的代理配置,用于将HTTP流量转发到本地的某个服务。type:指定代理的类型,这里设置为http,表示使用HTTP协议。
local_ip:指定本地服务的IP地址,这里设置为192.168.119.128。您需要将其替换为实际的本地服务IP地址。
local_port:指定本地服务的端口号,这里设置为80。
subdomain:指定用于访问代理的子域名,这里设置为"a"。通过frps服务器的域名和子域名,可以访问到本地的HTTP服务。
[ssh]:这是一个SSH类型的代理配置,用于将SSH流量转发到本地的SSH服务。type:指定代理的类型,这里设置为tcp,表示使用TCP协议。
local_ip:指定本地SSH服务的IP地址,这里设置为192.168.119.128。您需要将其替换为实际的本地SSH服务IP地址。
local_port:指定本地SSH服务的端口号,这里设置为22。
remote_port:指定frps服务器上用于公开SSH服务的远程端口号,这里设置为6000。通过frps服务器的域名和远程端口号,可以访问到本地的SSH服务。

C. frp的内网穿透原理和工作方式

frp通过一种称为内网穿透的技术,使外部用户能够访问位于私有网络(内网)中的资源和服务。下面是frp的内网穿透原理和工作方式的概述:

  • 连接建立阶段:

    frp客户端在内网中运行,并与FRP服务器建立连接。
    frp服务器监听来自外部用户的连接请求。

  • 外部请求转发阶段:

    外部用户发起请求到FRP服务器的公网地址和端口。
    frp服务器接收请求,并根据配置文件中的规则,将请求转发给相应的FRP客户端。
    内部响应转发阶段:

    frp客户端接收到来自FRP服务器的请求,并将其转发到内网中的资源或服务。
    内网中的资源或服务响应请求,将响应发送回FRP客户端。

  • 响应传输阶段:

    frp客户端将内网资源的响应传输回FRP服务器。
    frp服务器将响应传输回外部用户,完成请求-响应的过程。
    frp的工作方式主要依赖于客户端-服务器架构和通信协议。frp客户端负责将内网资源映射到公网,通过与FRP服务器建立连接并传输数据来实现外部访问。frp服务器接收外部请求,并根据配置文件中的规则将请求转发给相应的frp客户端。frp客户端将请求转发到内网资源并将响应传输回frp服务器,最终将响应传递给外部用户。

通过这种方式,frp实现了内网穿透,使外部用户能够通过公共网络访问内网中的资源和服务,实现了内网和公网之间的连接和通信。

总结起来,frp通过客户端-服务器架构和通信协议实现内网穿透。frp客户端将内网资源映射到公网,frp服务器接收外部请求并将其转发给相应的frp客户端,最终实现外部用户对内网资源的访问和通信。这种工作方式使得FRP成为一种强大而灵活的内网穿透工具。

IV. 配置nginx和frp实现内网穿透

A. 确定内网服务器的需求和目标

在开始配置nginx和frp之前,首先需要确定内网服务器的需求和目标。这将有助于我们选择适当的配置和设置,以满足您的特定要求。以下是一些问题可以帮助您明确内网服务器的需求和目标:

  1. 您希望通过内网穿透实现什么样的功能?是为了远程访问内网中的应用程序、网站或服务,还是为了搭建一个安全的远程办公环境?

  2. 您需要通过内网穿透访问的是单个服务还是多个服务?这些服务是基于HTTP、HTTPS、TCP或其他协议?

  3. 您希望内网服务器能够处理多少并发连接和流量?

  4. 您对安全性有什么要求?是否需要使用加密传输、身份验证或其他安全机制来保护数据传输?

  5. 您是否需要定制域名或子域名,以便更方便地访问内网资源?

  6. 您是否有任何特殊的网络环境或限制,如双重NAT、防火墙规则或代理服务器?

B. 配置nginx作为反向代理服务器

nginx作为反向代理服务器可以帮助将外部请求转发到frp服务器,从而实现内网穿透。下面是配置nginx的反向代理规则和将外部请求转发到frp服务器的步骤:

1.安装和配置nginx:
安装见上文
配置:以我当前的安装路径位例
进入配置路径/etc/nginx/conf.d
新建一个配置文件 frps.test.cn.conf 内容如下
在nginx的配置文件中,找到或创建一个名为server的块,用于定义反向代理的规则。
在该server块内,使用location指令定义要转发的外部请求的路径和目标地址。
在location块内,使用proxy_pass指令指定转发请求的目标地址。这个目标地址应该是frp服务器的地址和端口。
示例配置:

server{listen 80;server_name frps.test.cn  *.frps.test.cn;location / {proxy_pass  http://127.0.0.1:2003;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
这段nginx配置用于反向代理HTTP请求到frps服务器上的某个服务。下面是对每个配置项的解释:server:指定一个服务器块,定义了nginx的服务器配置。listen 80:指定NGINX监听的HTTP请求的端口号,这里设置为80。
server_name frps.test.cn  *.frps.test.cn;:指定nginx响应的域名,这里设置为"frps.test.cn"和"*.frps.test.cn"。这表示当请求的域名是"frps.test.cn"或以"frps.test.cn"为后缀的子域名时,nginx将会处理该请求。
location /:指定一个位置块,定义了nginx的请求匹配和处理规则。proxy_pass  http://127.0.0.1:2003;:指定将匹配到的请求代理到指定的后端服务器。这里将请求代理到本地的127.0.0.1:2003地址,即将请求转发到frps服务器上的本地服务。
proxy_set_header:设置向后端服务器转发请求时的HTTP头部信息。
Host $host;:将请求的原始主机名传递给后端服务器。
X-Real-IP $remote_addr;:将客户端的真实IP地址传递给后端服务器。
X-Forwarded-For $proxy_add_x_forwarded_for;:将经过的代理服务器的IP地址传递给后端服务器,以便后端服务器获取请求的真实来源。
通过这个配置,当有HTTP请求访问"frps.test.cn"或以"frps.test.cn"为后缀的子域名时,nginx会将请求转发到本地的127.0.0.1:2003地址,从而实现了将HTTP流量代理到frps服务器上的某个服务的功能。请注意,这只是一个示例配置,您需要根据实际情况进行修改和调整,例如更改监听的端口、域名、代理的后端服务地址等。此外,您还需要确保NGINX已正确安装和配置,并且与frps服务器的连接正常。

2.保存并重启nginx:
service nginx restart
nginx -t

service nginx restart:这个命令用于重新启动NGINX服务器。当您对NGINX的配置文件进行了修改后,需要使用此命令来使修改生效。它会停止当前运行的NGINX进程,然后启动一个新的进程,加载最新的配置文件。nginx -t:这个命令用于检查NGINX配置文件的语法是否正确。它会验证配置文件的语法和结构,并检查是否存在任何错误。如果配置文件中存在错误,该命令将显示错误消息和位置,帮助您进行修复。  

D. 测试和验证内网穿透连接的可用性

一旦您完成了nginx和frp的配置,下面是一些测试步骤,可以帮助您验证内网穿透连接的可用性,并提供一些常见问题和故障排除方法:

1.外部访问内网服务:
在外部设备上,使用浏览器或其他工具,尝试通过访问nginx服务器的公网IP和端口,访问您在nginx配置中定义的反向代理规则。
如果一切正常,您应该能够成功访问到内网服务器上映射的服务或资源。

2.检查nginx和frp日志:
在nginx服务器和frp服务器端/客户端上查看日志文件,以了解是否有任何错误或警告信息。
检查日志文件可以帮助您确定是否有配置错误、网络连接问题或其他潜在的故障。

3.确保端口映射正确:
检查frp客户端和服务器端的配置文件,确保端口映射规则正确设置。
确保映射的本地端口与内网服务器上的服务或资源的实际端口匹配。
如果端口映射不正确,外部用户将无法正确访问内网服务。

4.防火墙和路由器设置:
确保您的防火墙和路由器设置允许通过nginx和frp的端口进行流量传输。
检查防火墙规则和端口转发设置,确保它们不会阻止或限制内网穿透连接。

5.网络连通性测试:
在内网服务器上,尝试使用ping命令或其他网络工具测试与FRP服务器的网络连通性。
如果无法与frp服务器建立网络连接,可能是网络配置问题或防火墙阻止了连接。

6.联系技术支持和社区:
如果您遇到问题无法解决,可以参考nginx和frp的官方文档,查找相关故障排除方法。
您还可以参与技术支持论坛或社区,向其他用户寻求帮助和建议。

V. 进一步的优化和安全性考虑

A. 使用SSL证书保护传输数据

保护传输数据的安全性对于内网穿透连接至关重要。通过使用SSL/TLS加密,您可以确保数据在传输过程中得到保护,并提高用户隐私的安全性。下面是配置NGINX和FRP以使用SSL/TLS加密的步骤:

1.获取SSL证书:

要使用SSL/TLS加密,您需要获取有效的SSL证书。您可以从可信任的证书颁发机构(CA)购买证书,或使用免费的证书颁发机构(如Let’s Encrypt)提供的证书。

2.配置nginx:

将SSL证书和私钥文件上传到nginx服务器。
在nginx配置文件中,添加SSL相关的配置项,包括证书路径、私钥路径和SSL协议版本等。
确保将NGINX的监听端口改为HTTPS的默认端口443。

3.配置frp:

在frp服务器端和客户端的配置文件中,启用SSL/TLS加密选项。
指定SSL证书和私钥的路径,以及SSL监听端口。

4.测试SSL连接:

重新启动nginx和frp服务,并确保它们成功加载SSL证书。
在外部设备上,使用HTTPS协议访问nginx服务器的公网IP和端口,确保连接成功并且浏览器中显示安全的锁图标。
强调数据传输的安全性和保护用户隐私的重要性,使用SSL/TLS加密可以防止敏感信息被窃取或篡改。确保您定期更新SSL证书,并遵循最佳实践来保持加密连接的安全性。

请注意,配置SSL/TLS加密的具体步骤可能因nginx和frp的版本、操作系统和环境而有所不同。建议您参考nginx和frp的官方文档以获取详细的配置指南和最新的安全建议

B. 配置访问控制和身份验证

为了增强内网穿透连接的安全性,您可以配置访问控制和身份验证机制。这将帮助您限制对内部服务的访问,并确保只有经过授权的用户才能访问。以下是设置nginx和frp以限制访问权限和添加身份验证机制的步骤:

1.nginx访问控制:

在nginx配置文件中,使用allow和deny指令来定义允许或拒绝访问的IP地址或IP地址段。
使用location指令来设置访问控制规则,例如限制特定路径或URL的访问权限。
可以结合其他模块(如auth_basic和auth_request)来实现基本身份验证或使用外部身份验证服务。

2.frp访问控制:

在FRP服务器端的配置文件中,使用allow_ports和deny_ports选项来限制访问的端口范围。
使用allow_ips和deny_ips选项来定义允许或拒绝访问的IP地址或IP地址段。

3.添加身份验证机制:

在nginx中,可以使用auth_basic模块来启用基本身份验证。您可以创建用户名和密码的组合,并将其存储在密码文件中。
使用auth_request模块可以将身份验证请求转发到外部身份验证服务,例如OAuth服务器或LDAP目录。
在FRP中,可以使用token选项来添加令牌验证,确保只有拥有有效令牌的客户端才能访问。
通过配置访问控制和身份验证,您可以限制对内网服务的访问,并确保只有经过授权的用户才能进行连接。这将提高内网穿透连接的安全性,并减少未经授权的访问风险。

C. 监控和日志记录

为了确保内网穿透连接的安全性和稳定性,监控和日志记录是至关重要的。下面是关于如何监控nginx和frp的运行状态以及重要性的讨论,以及强调日志记录的重要性:

1.监控nginx和frp的运行状态:

使用监控工具(如Prometheus、Grafana等)来实时监测nginx和frp的运行状态。
监控关键指标,如连接数、请求速率、资源利用率等,以及错误和警告信息。
设置警报规则,以便在出现异常情况时及时通知管理员。

2.日志记录的重要性:

启用详细的日志记录功能,记录nginx和frp的运行日志。
日志记录对故障排除和问题诊断至关重要。通过分析日志,可以快速定位问题并采取适当的措施。
日志记录也是安全审计的重要组成部分。它可以帮助跟踪和分析网络活动,并检测潜在的安全威胁。

3.nginx日志记录配置:

在nginx配置文件中,使用access_log指令启用访问日志记录。可以指定日志文件的位置和格式。
可以使用error_log指令启用错误日志记录,以记录nginx的错误和警告信息。

4.frp日志记录配置:

在frp的配置文件中,使用log_file选项来指定日志文件的位置。
可以设置日志级别,如调试级别或信息级别,以控制日志的详细程度

VI. 结论

A. 总结nginx和frp的优势和应用场景

nginx和frp是两个功能强大的工具,它们在内网穿透中发挥着重要的作用。下面是对NGINX和FRP的优势和应用场景进行总结:

1.nginx的优势和应用场景:

  • 高性能和可扩展性:nginx采用事件驱动的异步架构,能够处理大量并发连接和高负载情况。
  • 反向代理和负载均衡:nginx可以作为反向代理服务器,将请求转发到内部服务器,并实现负载均衡,提高应用程序的性能和可靠性。
  • 静态文件服务和缓存:nginx可以高效地提供静态文件服务,并通过缓存机制减轻后端服务器的负载。
  • 安全性和访问控制:nginx提供丰富的安全功能,如访问控制、身份验证和SSL/TLS加密,以保护内部服务免受未经授权的访问和网络攻击。

2.frp的优势和应用场景:

  • 内网穿透:frp可以帮助您在公网上访问位于内网的服务,实现内网穿透的需求。
  • 简单易用:frp提供简单的配置和管理界面,使得设置和管理内网穿透变得更加容易。
  • 多种协议支持:frp支持多种协议,如TCP、UDP和HTTP,适用于各种应用场景,包括远程访问、文件共享和视频监控等。
  • 安全性和访问控制:frp提供访问控制和身份验证机制,确保只有经过授权的用户才能访问内部服务。

nginx和frp的优势使它们成为内网穿透的理想选择。无论是构建高性能的反向代理和负载均衡环境,还是实现安全的内网穿透连接,它们都能满足您的需求。无论您是在企业环境中部署应用程序,还是需要远程访问内网资源,nginx和frp都能为您提供可靠和安全的解决方案。

请注意,nginx和frp的具体用法和配置可能因版本和环境而有所不同。建议您参考官方文档和最佳实践以获取详细的指导和支持。

B. 强调内网穿透的重要性和潜在的挑战

内网穿透对于远程访问和跨网络通信起着至关重要的作用。下面是对内网穿透重要性的强调以及需要注意的潜在挑战和配置注意事项:

1.内网穿透的重要性:

  • 远程访问:内网穿透允许用户通过公网访问位于内网的服务和资源,实现远程办公、远程管理和远程协作等需求。
  • 跨网络通信:内网穿透还可以实现不同网络之间的通信,例如将分支机构的内部服务连接到总部网络,或者将云服务与本地网络进行集成。

2.潜在的安全风险:

  • 未经授权的访问:内网穿透打开了内部服务对公网的访问通道,因此必须谨慎设置访问控制和身份验证,以防止未经授权的访问。
  • 数据泄露和攻击:如果内网穿透配置不当或安全措施不完善,可能会导致敏感数据泄露或遭受网络攻击。因此,必须采取适当的安全措施,如使用加密通信和定期更新软件补丁。

3.配置注意事项:

  • 访问控制和身份验证:确保只有经过授权的用户才能访问内部服务,可以使用用户名和密码、令牌或证书等进行身份验证。
  • 加密通信:使用SSL/TLS等加密协议来保护数据在公网传输过程中的安全性。
  • 定期更新和监控:定期更新nginx、FRP和相关组件的版本,并监控其运行状态和日志,以及及时修复任何安全漏洞或异常情况。

内网穿透是一项强大而灵活的技术,但也需要谨慎配置和管理。了解潜在的安全风险,并采取适当的安全措施,可以确保内网穿透连接的安全性和可靠性。建议在部署内网穿透之前,详细了解相关文档和最佳实践,并在需要时寻求专业的安全咨询和支持。

C. 提供进一步学习和资源参考

  1. 文档和教程:

    • nginx官方文档:nginx官方网站提供了详细的文档和教程,包括配置指南、安全性建议和最佳实践等。您可以访问https://nginx.org/查阅相关文档。
    • frp官方文档:frp是一个开源的内网穿透工具,其官方文档提供了详细的配置说明和使用指南。您可以在https://gofrp.org/docs/ 找到FRP的官方文档。
  2. 社区资源

    • StackOverflow:StackOverflow是一个广受欢迎的问答社区,您可以在其中提问关于网络安全和远程访问的问题,并寻求其他开发者和专家的帮助。访问https://stackoverflow.com/查找相关问题和答案。
    • Reddit:Reddit是一个包含各种技术社区的论坛平台,您可以在其中找到与网络安全和远程访问相关的专题和讨论组。例如,r/netsec和r/sysadmin是与网络安全和系统管理相关的热门社区。
  3. 其他相关话题和工具:

    • VPN(Virtual PrivateNetwork):VPN是一种常用的远程访问和网络安全解决方案,它可以为用户提供安全的远程连接和加密通信。了解VPN的原理和使用方法可以进一步加强网络安全。

    • SSH(SecureShell):SSH是一种加密的远程登录协议,它提供了安全的终端访问和文件传输功能。深入了解SSH的使用和配置可以帮助您更好地管理远程访问。

    • IDS/IPS(Intrusion Detection System/Intrusion PreventionSystem):IDS/IPS是用于检测和防止网络入侵的安全工具。了解IDS/IPS的原理和配置可以增强网络的安全性。

请注意,网络安全和远程访问是一个广阔而复杂的领域,不断发展和演变。因此,持续学习和保持对新技术和安全威胁的关注是至关重要的。除了上述资源,您还可以参考安全认证、网络安全书籍和在线安全培训等资源,以不断提升自己在网络安全和远程访问方面的知识和技能。

相关文章:

使用nginx和frp实现高效内网穿透:简单配置,畅通无阻

I. 引言 A. 介绍内网穿透的概念和用途 内网穿透是一种网络技术,它允许用户通过公共网络访问位于私有网络(内网)中的资源和服务。在传统的网络环境中,内网通常是由路由器或防火墙保护的,无法直接从外部网络访问内部资…...

Python土力学与基础工程计算.PDF-螺旋板载荷试验

python 求解代码如下: 1. import numpy as np 2. 3. # 已知参数 4. p_a 100 # 标准压力, kPa 5. p np.array([25, 50, 100, 200) # 荷载, kPa 6. s np.array([2.88, 5.28, 9.50, 15.00) / 10 # 沉降量, cm 7. D 10 # 螺旋板直…...

低代码开发ERP:精打细算,聚焦核心投入

企业数字化转型已经成为现代商业环境中的一项关键任务。如今,企业面临着日益激烈的竞争和不断变化的市场需求。在这样的背景下,数字化转型不仅是企业生存的必然选择,也是取得竞争优势和实现可持续发展的关键因素。 在数字化转型的过程中&…...

顺序表(数据结构)

“路虽远,行则将至” ❤️主页:小赛毛 顺序表目录 1.线性表 2.顺序表 概念及结构 静态顺序表:使用定长数组存储元素。 动态顺序表:使用动态开辟的数组存储。 接口实现 1.线性表 线性表 ( linear list ) 是…...

stable_diffusion_webui docker环境配置

1.新建docker环境 docker run -tid --name e_commerce_sd --net host --runtimenvidia nvidia/cuda:11.1-cudnn8-devel-cent os7-ssh /bin/bashdocker exec -ti e_commerce_sd /bin/bash echo expor…...

【Java】常见面试题:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

文章目录 1. 抓包工具(了解)2. 【经典面试题】GET和POST的区别:3. URL中不是也有这个服务器主机的IP和端口吗,为啥还要搞个Host?4. 补充5. HTTP响应状态码6. 总结HTTPS工作过程(经典面试题)7. H…...

批量爬虫采集完成任务

批量爬虫采集是现代数据获取的重要手段,然而如何高效完成这项任务却是让许多程序员头疼的问题。本文将分享一些实际操作价值高的方法,帮助你提高批量爬虫采集的效率和专业度。 目标明确,任务合理划分: 在开始批量爬虫采集前&…...

intelij idea 2023 创建java web项目

1.点击New Project 2.创建项目名称为helloweb ,jdk版本这里使用8,更高版本也不影响工程创建 点击create 3.新建的工程是空的,点击File-> Project Structure 4.点击Modules 5.点击加号,然后键盘输入web可以搜索到web模块&…...

【论文笔记】基于指令回译的语言模型自对齐-MetaAI

MetaAI最近发布的Humpback,论文链接:https://arxiv.org/abs/2308.06259 解决什么问题? 大量高质量的指令微调数据集的生成。 思路 在这项工作中,我们通过开发迭代自训练算法来利用大量未标记的数据来创建高质量的指令调优数据集…...

MySQL和MariaDB的版本对应关系

MariaDB 10.0和MariaDB 10.1可以作为MySQL 5.6的有限替代。 MariaDB 10.2可以作为MySQL 5.7的有限替代。 一,目前最新版本 MariaDB 10.5.8 10.4.17 10.3.27 10.2.36 MySQL 8.0.23 二,oracle MySQL版本和MariaDB版本对应表: MariaDB版本 …...

Python数据的输入与输出

编辑:2023-08-14 17:00 Python是一种高级编程语言,它支持多种输入输出方式,包括标准输入输出、文件输入输出等。本文将从以下几个方面详细阐述Python数据的输入与输出。 一、标准输入输出 Python中的标准输入和标准输出指的是控制台输入输…...

生成国密密钥对

在线生成国密密钥对 生成的密钥对要妥善保管,丢失是无法找回的。...

ASR(自动语音识别)任务中的LLM(大语言模型)

一、LLM大语言模型的特点 二、大语言模型在ASR任务中的应用 浅度融合 浅层融合指的是LLM本身并没有和音频信息进行直接计算。其仅对ASR模型输出的文本结果进行重打分或者质量评估。 深度融合 LLM与ASR模型进行深度结合,统一语音和文本的编码空间或者直接利用ASR…...

简单介绍一下centos上有什么工具可以优雅的管理开机启动项

在CentOS上,你可以使用以下工具来优雅地管理开机启动项: systemctl:systemctl 是 systemd 系统和服务管理器的主要命令。它提供了一种优雅的方式来管理启动项。你可以使用 systemctl 命令来启用、禁用、查看和管理系统服务。例如,…...

万宾燃气管网监测解决方案,守护城市生命线安全

方案背景 城市燃气管网作为连接天然气长输管线与天然气用户的桥梁,担负着向企业和居民用户直接供气的重要职责。随着城市燃气需求的急剧增加,城市燃气管网规模日趋庞大,安全隐患和风险也随之增加。目前,我国燃气管网的运行仍存在…...

Django框架 靓号管理(增删改查)

Django框架 靓号管理(增删改查) 新建一个项目 backend 使用pycharm创建app startapp app项目目录 C:\code\backend ├── app | ├── admin.py | ├── apps.py | ├── migrations | ├── models.py | ├── tests.py | ├── views.…...

责任链模式简单实现

两种实现方式 第一种 public interface IBaseTask {public void doAction(String isTask,IBaseTask iBaseTask); }public class ChainManager implements IBaseTask{//工作类的集合private List<IBaseTask> iBaseTaskList new ArrayList<>();public void addTas…...

Excel自动化办公——Openpyxl的基本使用

Excel自动化办公——Openpyxl的基本使用 个人感觉&#xff0c;相比Pandas&#xff0c;openpyxl对Excel的操作更为细致&#xff0c;Pandas则更适用于统计计算&#xff1b; 01 基本环境02 Excel数据读取操作03 案例04 向Excel写入数据05 表数据定向修改06 单元格样式制定07 单元…...

解决Fastjson2 oom(Out Of Memory),支持大对象(LargeObject 1G)json操作

在使用Fastjson中的 JSON.toJSONString时,如果对象数据太大&#xff08;>64M&#xff09;会出现Out Of Memory,查看源码发现为JSONWriter中的判断代码 其中maxArraySize默认最大为64M,如果超过了就会抛出oom错误 如果fastjson过多的使用内存,也可能导致java堆内存溢出,所以这…...

SpringBoot + redis处理购物车逻辑

1、pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2、application.xml spring: characterEncodingutf-8&useSSLfalseredis:host: 127.0.…...

open cv学习 (五) 图像的阈值处理

图像的阈值处理 demo1 # 二值化处理黑白渐变图 import cv2 img cv2.imread("./img.png", 0) # 二值化处理 t1, dst cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) cv2.imshow("img", img) cv2.imshow("dst", dst) cv2.waitKey() cv2.des…...

NVIDIA vGPU License许可服务器高可用全套部署秘籍

第1章 前言 近期遇到比较多的场景使用vGPU&#xff0c;比如Citrix 3D场景、Horizon 3D场景&#xff0c;还有AI等&#xff0c;都需要使用显卡设计研发等&#xff0c;此时许可服务器尤为重要&#xff0c;许可断掉会出现掉帧等情况&#xff0c;我们此次教大家部署HA许可服务器。 …...

基于CNN卷积神经网络的口罩检测识别系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................ % 循环处理每张输入图像 for…...

《HeadFirst设计模式(第二版)》第九章代码——迭代器模式

情景&#xff1a; 一家早餐店和一家午餐点准备合并在一起&#xff0c;两家的点菜的菜单实现方式如下: 首先&#xff0c;他们的菜单选项都基于同一个类&#xff1a; 菜单选项类 package Chapter9_IteratorPattern.Origin;/*** Author 竹心* Date 2023/8/17**/public class Men…...

Electron入门,项目启动。

electron 简单介绍&#xff1a; 实现&#xff1a;HTML/CSS/JS桌面程序&#xff0c;搭建跨平台桌面应用。 electron 官方文档&#xff1a; [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的&#xff0c;可行性真实有效。 文章1&#xff1a; https://www.cnbl…...

深入理解索引B+树的基本原理

目录 1. 引言 2. 为什么要使用索引&#xff1f; 3. 索引的概述 4. 索引的优点是什么&#xff1f; 4.1 降低数据库的IO成本&#xff0c;提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间 5. 索引的缺点…...

vue3 简易用对话框实现点击头像放大查看

设置头像悬停手势 img:hover{cursor: pointer;}效果&#xff1a; 编写对话框 <el-dialog class"bigAvatar"style"border-radius: 4px;"v-model"deleteDialogVisible"title"查看头像"top"5px"><div><img src&…...

opencv 矩阵运算

1.矩阵乘&#xff08;*&#xff09; Mat mat1 Mat::ones(2,3,CV_32FC1);Mat mat2 Mat::ones(3,2,CV_32FC1);Mat mat3 mat1 * mat2; //矩阵乘 结果 2.元素乘法或者除法&#xff08;mul&#xff09; Mat m Mat::ones(2, 3, CV_32FC1);m.at<float>(0, 1) 3;m.at…...

第四章 字符串part01

344.反转字符串 public void reverseString(char[] s) {int len s.length;int left 0;int right len-1;while (left < right){char tmp s[right];s[right] s[left];s[left] tmp;left;right--;} }反转字符串II 注意String不可变&#xff0c;因此可使用char数组或者St…...

Python3内置函数大全

吐血整理 Python3内置函数大全 1.abs()函数2.all()函数3.any()函数4.ascii()函数5.bin()函数6.bool()函数7.bytes()函数8.challable()函数9.chr()函数10.classmethod()函数11.complex()函数12.complie()函数13.delattr()函数14.dict()函数15.dir()函数16.divmod()函数17.enumer…...

什么是“新型基础设施”?建设重点是什么?

一是信息基础设施。主要是指基于新一代信息技术演化生成的基础设施&#xff0c;比如&#xff0c;以5G、物联网、工业互联网、卫星互联网为代表的通信网络基础设施&#xff0c;以人工智能、云计算、区块链等为代表的新技术基础设施&#xff0c;以数据中心、智能计算中心为代表的…...

混杂接口模式---vlan

策略在两个地方可以用--1、重发布 2、bgp邻居 2、二层可以干的&#xff0c;三层也可以干 3、未知单播&#xff1a;交换机的MAC地址表的记录保留时间是5分钟&#xff0c;电脑的ARP表的记录保留时间是2小时 4、route recursive-lookup tunnel 华为默认对于bgp学习来的路由不开启标…...

Greenplum多级分区表添加分区报错ERROR: no partitions specified at depth 2

一般来说&#xff0c;我们二级分区表都会使用模版&#xff0c;如果没有使用模版特性&#xff0c;那么就会报ERROR: no partitions specified at depth 2类似的错误。因为没有模版&#xff0c;必须要显式指定分区。 当然我们在建表的时候&#xff0c;如果没有指定&#xff0c;那…...

EV PV AC SPI CPI TCPI

SPI EV / PV CPI EV / ACCPI 1.25 SPI 0.8 PV 10 000 BAC 100 000EV PV * SPI 10 000 * 0.8 8000 AC EV / CPI 8000 / 1.25 6400TCPI (BAC - EV) / (BAC -AC) (100 000 - 8 000) / (100 000 - 6 400) 92 000 / 93 600 0.98290598...

【电商领域】Axure在线购物商城小程序原型图,品牌自营垂直电商APP原型

作品概况 页面数量&#xff1a;共 60 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;网上商城、品牌自营商城、商城模块插件 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为品牌自营网上商城…...

Cpp基础Ⅰ之编译、链接

1 C是如何工作的 工具&#xff1a;Visual Studio 1.1 预处理语句 在.cpp源文件中&#xff0c;所有#字符开头的语句为预处理语句 例如在下面的 Hello World 程序中 #include<iostream>int main() {std::cout <"Hello World!"<std::endl;std::cin.get…...

用户新增预测(Datawhale机器学习AI夏令营第三期)

文章目录 简介任务1&#xff1a;跑通Baseline实操并回答下面问题&#xff1a;如果将submit.csv提交到讯飞比赛页面&#xff0c;会有多少的分数&#xff1f;代码中如何对udmp进行了人工的onehot&#xff1f; 任务2.1&#xff1a;数据分析与可视化编写代码回答下面的问题&#xf…...

RGOS日常管理操作

RGOS日常管理操作 一、前言二、RGOS平台概述2.1、锐捷设备的常用登陆方式2.2、使用Console登入2.3、Telnet远程管理2.4、SSH远程管理2.5、登陆软件&#xff1a;SecureCRT 三、CLI命令行操作3.1、CLI命令行基础3.2、CLI模式3.3、CLI模式互换3.4、命令行特性3.4.1、分屏显示3.4.2…...

阿里云使用WordPress搭建个人博客

手把手教你使用阿里云服务器搭建个人博客 一、免费创建服务器实例 1.1 点击试用 点击试用会需要你创建服务器实例&#xff0c;直接选择默认的操作系统即可&#xff0c;点击下一步 1.2 修改服务器账号密码 二、创建云数据库实例 2.1 免费获取云数据库使用 2.2 实例列表页 在…...

供应链安全和第三方风险管理:讨论如何应对供应链中的安全风险,以及评估和管理第三方合作伙伴可能带来的威胁

第一章&#xff1a;引言 在当今数字化时代&#xff0c;供应链的安全性越来越受到重视。企业的成功不仅仅依赖于产品和服务的质量&#xff0c;还取决于供应链中的安全性。然而&#xff0c;随着供应链越来越复杂&#xff0c;第三方合作伙伴的参与也带来了一系列安全风险。本文将…...

《Java极简设计模式》第04章:建造者模式(Builder)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…...

Go download

https://go.dev/dl/https://golang.google.cn/dl/...

2023年Java核心技术面试第四篇(篇篇万字精讲)

目录 八. 对比Vector&#xff0c;ArrayList, LinkedList有何区别&#xff1f; 8.1 典型回答 8.1.1 Vector&#xff1a; 8.1.2 ArrayList &#xff1a; 8.1.3 LinkedList 8.2 考察点分析&#xff1a; 8.2.1 不同容器类型适合的场景 八. 对比Vector&#xff0c;ArrayList, Linke…...

数字化时代,数据仓库和商业智能BI系统演进的五个阶段

数字化在逐渐成熟的同时&#xff0c;社会上也对数字化的性质有了进一步认识。当下&#xff0c;数字化除了前边提到的将复杂的信息、知识转化为可以度量的数字、数据&#xff0c;在将其转化为二进制代码&#xff0c;引入计算机内部&#xff0c;建立数据模型&#xff0c;统一进行…...

【【Verilog典型电路设计之FIFO设计】】

典型电路设计之FIFO设计 FIFO (First In First Out&#xff09;是一种先进先出的数据缓存器&#xff0c;通常用于接口电路的数据缓存。与普通存储器的区别是没有外部读写地址线&#xff0c;可以使用两个时钟分别进行写和读操作。FIFO只能顺序写入数据和顺序读出数据&#xff0…...

JAVA设计模式总结之23种设计模式

一、什么是设计模式 设计模式&#xff08;Design pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计…...

Flutter 测试小结

Flutter 项目结构 pubspec.yaml 类似于 RN 的 package.json&#xff0c;该文件分别在最外层及 example 中有&#xff0c;更新该文件后&#xff0c;需要执行的 Pub get lib 目录下的 dart 文件为 Flutter 插件封装后的接口源码&#xff0c;方便在其他 dart 文件中调用 example 目…...

docker build -t 和 docker build -f 区别

docker build 是用于构建Docker镜像的命令&#xff0c;它允许你基于一个Dockerfile来创建一个镜像。在 docker build 命令中&#xff0c;有两个常用的选项 -t 和 -f&#xff0c;它们有不同的作用。 -t’选项&#xff1a; -t’选项用于指定构建出来的镜像的名称和标签。格式为 &…...

Java 项目日志实例基础:Log4j

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 介绍几个日志使用方面的基础知识。 1 Log4j 1、Log4j 介绍 Log4j&#xff08;log for java&#xff09;是 Apache 的一个开源项目&#xff0c;通过使用 Log4j&#xff0c;我…...

K8S应用笔记 —— 签发自签名证书用于Ingress的https配置

一、需求描述 在本地签发自命名证书&#xff0c;用于K8S集群的Ingress的https配置。 前提条件&#xff1a; 完成K8S集群搭建。完成证书制作机器的openssl服务安装。 二、自签名证书制作 2.1 脚本及配置文件准备 2.1.1 CA.sh脚本准备 注意事项&#xff1a; openssl服务默认CA…...