使用开源FRP工具搭建内网穿透详细教程,本地服务让外网访问完全自定义管控

首先我们对内网和外网这两个名词做个解释:

1、内网:是内部建立的局域网络或办公网络;

2、外网:是通过一个网关或网桥与其他网络系统连接,相对于自己的内网来说,其他网络系统称为外网。

一、什么是内网穿透

内网穿透简单来说就是将内网外网通过隧道打通,让内网的数据让外网可以获取。比如常用的办公室软件等,一般在办公室应用,通过拨号上网,没有公网IP,这样办公软件只有在办公室本地的局域网之内才能访问,用了内网穿透方案后,这些基于内网访问的办公室软件就可以在外网家里访问了。

内网穿透的概念:内网穿透,也即 NAT 穿透,内网映射,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。简单来说,就是让互联网(外网)设备能访问局域网(内网)设备提供的服务,这里的设备通常指电脑。

二、内网穿透的使用场景

对开发人员来说,需要使用到内网穿透的一个典型的应用场景就是针对第三方授权(通常是 OAuth2.0)和支付回调的开发调试。通过内网穿透工具将第三方 SDK 或平台的回调地址映射到本机开发环境,从而达到实时调试的目的。

其次是节约部署成本(通常是公网服务器费用)。通过将应用部署在本机,再利用内网穿透工具对外提供服务,这样既能节约服务器租用费用,又能提升服务器的硬件配置。

内网穿透常见的几个使用场景:

企业远程办公:企业用户购买了企业管理系统、财务系统、人力资源系统,分公司与总部不在同一城市,分公司需要远程访问总部系统;

开发人员远程调试:放在家里的树莓派,服务器等,需要远程ssh管理,这样打通服务器的22端口即可远程通过ssh操作服务器了.

数据远程同步:一些企业内部数据库,由于安全等原因,不愿意放到云服务器上,可以将数据库放到办公室本地,然后通过天联传输通道传输,这样既保证安全,又保证公网可以正常访问

远程监控:一些设备的运行监控信息,可以远程监控管理,可以方便的管理监控各个设备的运行情况.

远程联机游戏: 一些本地运行的游戏,想和好基友一起联网玩,采用天联组网方案即可实现联网游戏.

文件远程共享:FTP共享文件、NAS文件存储,可以通过天联实现远程共享、下载、上传;

三、自己搭建内网穿透条件和优势

目前,市面上有不少免费提供内网穿透的工具/产品,比如nat123、花生壳、快解析等,那为什么还要自己搭建呢?

笔者搭建内网穿透的目的就属于低频率开发调试用,因此在拥有公网服务器的条件下,自建是最合适的方式。

内网穿透自己搭建的优势主要体现在‌成本可控‌和‌技术自主性‌两方面:

成本可控:自建方案(如 FRP )可显著降低长期使用成本,无需支付年费或高昂的云服务器费用。例如,FRP开源方案仅需购买带公网IP的VPS云服务器,但后续维护成本较高,且需自行承担域名备案、SSL证书等费用。 ‌

技术自主性:自建方案(如FRP)提供更高的配置灵活性,支持TLS加密、IP白名单等安全设置,适合技术人员在可控环境中自定义网络策略。但需自行处理配置文件和命令行操作,对非技术人员有一些门槛。 ‌

相比之下,第三方服务(如大众化的 nat123 )优势在于‌不用公网IP开箱即用‌,无需搭建服务器或配置复杂网络参数,且提供图形化界面和适配多种设备的客户端,更适合快速部署需求。

四、常见开源内网穿透的搭建工具

ngrok:一个国外的穿透工具,1.0 版本是开源的,目前 2.0 及以上版本已经闭源,并且提供免费和收费的服务。

frp:这是一个国内的开源工具,目前最新版本为 v0.61.1(截止2025-02),有比较详尽的中文文档,并且一直在维护更新。

由于 frp 一直开源,并且维护积极、更新频繁,再加上中文文档的加持,笔者最终选择了 frp 作为搭建工具。

注:frp 自主搭建需要一个有公网 ip 的服务器,如常见的阿里云 ECS和腾讯云主机。

五、frp 下载和版本选择

官方 github release 地址,目前最新版本是 v0.61.1(截止2025-02-14),一般建议直接上官方github地址访问和下载, 如v0.61.1 的常用平台安装包:developbook.cn/download

1、版本选择说明

压缩包说明

frp_0.61.1_darwin_amd64.tar.gz适用于 Mac OS 系统

frp_0.61.1_freebsd_amd64.tar.gz适用于 FreeBSD 64 位系统

frp_0.61.1_linux_amd64.tar.gz适用于 Linux 64 位系统

frp_0.61.1_linux_arm.tar.gz适用于 Linux 32 位嵌入式系统

frp_0.61.1_linux_arm64.tar.gz适用于 Linux 64 位嵌入式系统

frp_0.61.1_windows_amd64.zip适用于 Windows 64 位系统

frp_0.61.1_windows_arm64.zip适用于 Windows 64 位嵌入式系统

笔者的服务器系统为 CentOS7 64 位,所以选择了 frp_0.61.1_linux_amd64.tar.gz;笔者的个人电脑系统为 Mac OS X,所以选择了 frp_0.60.1_darwin_amd64.tar.gz。

2、下载方式

(1)直接下载

直接点击链接,使用浏览器下载到本机。利用 ssh 工具连接到云主机 ECS,再使用 lrzsz 工具的 rz 命令将 frp_0.61.1_linux_amd64.tar.gz 上传到服务器,而压缩包 frp_0.61.1_darwin_amd64.tar.gz 直接在本机解压。

推荐大家一款Mac上好用的免费SSH工具:FinalShell

注:ssh 工具、lrzsz 实用工具的安装和用法可自行搜索。

(2) 终端命令下载

服务器

// 下载

wget https://developbook.cn/download/frp/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

// 解压

tar -xzvf frp_0.61.1_linux_amd64.tar.gz

本机

// 使用curl下载

curl -O https://developbook.cn/download/frp/v0.61.1/frp_0.61.1_darwin_amd64.tar.gz

// 解压

tar -xzvf frp_0.61.1_darwin_amd64.tar.gz

3、frp 压缩包文件说明

每个压缩包解压后都包含以下文件:

frpc —— 客户端可执行二进制文件

frpc.toml —— 客户端使用的配置文件

frps —— 服务端可执行二进制文件

frps.toml —— 服务端使用的配置文件

注:服务端只需用到 frp_0.61.1_linux_amd64 目录下的 frps 相关文件,本机(客户端)只需用到 frp_0.61.1_darwin_amd64 目录下的 frpc 相关文件。

六、服务端FRP配置和启动

1、在服务器上打开 frps.toml:

vi frps.toml

注:确保当前已进入工作目录/root/frp_0.61.1_linux_amd64/。

2、配置 frps 要监听的端口:按下 i 进入编辑模式,在末尾增加一行:vhostHTTPPort = 8080,使 frps.toml 最终配置如下:

[common]

bindPort = 7000

vhostHTTPPort = 8080

注:vhostHTTPPort 监听的端口不能被占用,否则会导致 frps 不能启动,端口可根据实际需要修改;bindPort 端口为 frp 服务端和客户端连接通信的端口,默认为 7000。

3、保存配置并退出:按下 Esc,输入:wq。

4、启动 frps 程序:

./frps -c ./frps.toml

注:如遇 permission denied 错误,表明 frps 可能没有运行权限,则先赋权:

chmod 700 frps

然后再次执行启动命令。

七、客户端配置和启动

1、在本机进入 frp_0.61.0_darwin_amd64 目录,打开 frpc.toml 文件;

2、以配置访问内网的 web 服务(常见情形)为例,最终修改 frpc.toml 如下:

serverAddr = “x.x.x.x”

serverPort = 7000

[[proxies]]

name = “local-service”

type = “http”

localIP = “127.0.0.1”

localPort = 3000

注:x.x.x.x 为运行 frps 的服务器公网 ip,localPort 为本机启动的 web 服务对应的端口,请根据实际情况修改。

3、启动 frpc 程序:

sudo ./frpc -c ./frpc.toml

注:此时 frpc 会通过 7000 端口尝试与 frps 建立通信连接,如果一切顺利,则终端会提示连接成功;但实际情况却显示连接失败,因为还少了两个步骤:

一、需要登录云主机控制台将 7000 端口加入云 ECS 安全组的入站规则里面,同理还需将 8080 端口加入。具体操作参考:添加安全组规则;

二、将 7000 和 8080 加入服务器防火墙规则,具体操作参考:CentOS7 使用 firewalld 打开关闭防火墙与端口。

当一切就绪,frpc 启动并连接成功后,打开浏览器输入 x.x.x.x:8080 就能访问到本机 127.0.0.1:3000 的服务(本机 web 服务需要处于启动状态)。

至此,一个最简配置的基于 frp 的内网穿透便搭建完成,更多配置和用法,请参考官方文档:frp 官方中文文档。

小结

有公网主机条件,有一点点专业知识的,是可以自己搭建开源内网穿透FRP完全自主管理控制使用,独享加自主权限应该是最大优势了。如果是没有公网IP,或不想花时在后续管理公网服务器上的,则可以用nat123或花生壳等三方内网穿透服务直接使用,同时看你需求是否能够满足而定。

转载:https://cloud.tencent.com/developer/article/2551465

centos 查看宝塔密码

使用SSH工具连接服务器
使用SSH工具远程连接Linux服务器。
输入命令查看账号和密码
输入命令:/etc/init.d/bt default,查看查看面板默认信息里的账号和密码。 

6.x以上版本也可以输入命令:bt,打开宝塔命令行,输入命令编号14,查看面板

首页文章分类 Javajar包可以直接访问是否安全

Java JAR包是一种Java程序的打包格式,它可以包含Java类文件、资源文件等。一般来说,Java JAR包是安全的,但在特定情况下ava有一个安全管理器(Security Manager)来限制JAR包对系统资源的访问。默认情况下,Java应用程序是没有安装安全管理器的,也就是说JAR包可以直接访问系统资源,包括文件系统、网络和操作系统级别的资源。但在一些特殊场景下,比如在受控的环境中运行Java应用程序,可以通过启用安全管理器来对JAR包的访问权限进行控制,以加强安全性。

其次,JAR包可以包含恶意代码。由于Java的开放性和灵活性,JAR包中的代码可以执行许多操作,包括读写文件、网络通信、系统调用等。因此,恶意代码开发者可以将恶意代码隐藏在JAR包中,并利用Java的特性进行攻击。为了确保安全,使用JAR包时安全审查和验像其他软件一样,JAR包也可能存在安全漏洞,例如缓冲区溢出、代码注入等。这些漏洞可能导致攻击者执行恶意代码,或者利用已知的漏洞进行攻击。为了减少这种风险,开发者应及时更新和修复JAR包,同时使用安全的开发实践来编写自己的代码。

综上所述,Java JAR包可以直接访问系统资源,但在特定情况下可以通过安全管理器进行限制。同时,JAR包可能存在恶意代码和漏洞,因此在使用JAR包时需要保证来源可靠,并加强安全审查和验证。

php下安装zend注意事项

ZendOptimizer-3.3.0a-Windows-i386官方下载地址:

http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-Windows-i386.exe

 

安装 Zend Optimizer

下载后得到 ZendOptimizer-3.3.0a-Windows-i386.exe,直接双击安装即可,安装过程要你选择 Web Server 时,选择 Apache 2.x ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。我这里安装到c:\php5\Zend,如图4.1所示

图 4.1 安装路径【默认就行】

图 4.2 服务器类型【2.x】

图 4.3 php.ini所在目录【和原本服务器php.ini选择一致】

图 4.4 Apache所在目录【和原本服务器php.ini选择一致】

图 4.5 完整安装信息

windows域的域和组的区别

工作组是一群计算机的集合,它仅仅是一个逻辑的集合,各自计算机还是各自管理的,你要访问其中的计算机,还是要到被访问计算机上来实现用户验证的。而域不同,域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。为什么是这样的呢?因为在加入域的时候,管理员为每个计算机在域中(可和用户不在同一域中)建立了一个计算机帐户,这个帐户和用户帐户一样,也有密码保护的。可是大家要问了,我没有输入过什么密码啊,是的,你确实没有输入,计算机帐户的密码不叫密码,在域中称为登录凭据,它是由2000的DC(域控制器)上的KDC服务来颁发和维护的。为了保证系统的安全,KDC服务每30天会自动更新一次所有的凭据,并把上次使用的凭据记录下来。周而复始。也就是说服务器始终保存着2个凭据,其有效时间是60天,60天后,上次使用的凭据就会被系统丢弃。如果你的GHOST备份里带有的凭据是60天的,那么该计算机将不能被KDC服务验证,从而系统将禁止在这个计算机上的任何访问请求(包括登录),解决的方法呢,简单的方法使将计算机脱离域并重新加入,KDC服务会重新设置这一凭据。或者使用2000资源包里的NETDOM命令强制重新设置安全凭据。因此在有域的环境下,请尽量不要在计算机加入域后使用GHOST备份系统分区,如果作了,请在恢复时确认备份是在60天内作的,如果超出,就最好联系你的系统管理员,你可以需要管理员重新设置计算机安全凭据,否则你将不能登录域环境。
域和工作组适用的环境不同,域一般是用在比较大的网络里,工作组则较小,在一个域中需要一台类似服务器的计算机,叫域控服务器,其他电脑如果想互相访问首先都是经过它的,但是工作组则不同,在一个工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的,但是和域一样,如果一台计算机想访问其他计算机的话首先也要找到这个组中的一台类似组控服务器,组控服务器不是固定的,以选举的方式实现,它存储着这个组的相关信息,找到这台计算机后得到组的信息然后访问.

 

虚拟机的备份(快照、复制、克隆)

方法一:打开VMware,单击“虚拟机”——“克隆”——“下一步”……注意克隆类型选择“创建一个完整的克隆”。其它根据提示操作就可以了。(此方法比较慢!)

方法二:直接在你存放虚拟机文件的地方把它复制一份虚拟机文件夹副本。打开虚拟机时用“文件”——“打开”,在弹窗中“浏览”到你刚刚复制的虚拟机文夹件副本,找到vmx文件(如Windows XP Professional.vmx)就打开可以了。
这种方法打开克隆的虚拟机,vmware会提示“你复制了它还是移动了它”,选“复制”就可以了。

另:如果想创建备用虚拟机而又不想浪费磁盘资源的话,建议使用“快照功能”。步骤:
“虚拟机”——“快照”——“从当前状态创建快照”,就可以保存当前的虚拟机状态,之后无论你在虚拟机中做任何的操作,如把虚拟系统弄得稀巴烂等等,只要在“快照管理器”中“恢复到上一快照”(或其它已有的快照),一切恢复如常!

彻底解决mysql报错:1030, ‘Got error 28 from storage engine’

1、cd到 根目录,du -sh * 看哪个目录占用空间大,有的高达十几个G,那么就要盯住这个目录了

2、cd 占内存大的目录,继续 du -sh * 

 

发现data目录居然15G,进入data目录:cd data

然后查找大文件:

文件查找命令:

find -size +100M

意思是查找大于100M的文件,M是兆,再大点可以用G

如果想定位大文件:

ls -lhS

这是将文件从大到小展现

3、重复前两步,根据实际情况判断删除或者移走

https://blog.csdn.net/harry5508/article/details/84345684

4、删除大文件

删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件

My设置密码报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requir

英文翻译:错误1819(hy000):您的密码不符合当前策略要求

validate_password_policy取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默认是1,即MEDIUM,所以刚开始第一次设置的密码必须符合该参数的长度,并且必须含有数字、小写大写字母、特殊字符。
我设置的密码为:@wjb13191835106,很明显我错误的原因就是密码太过于简单,不符合mysql密码策略。

问题解决
注意:其实没有什么大问题存在,只是密码设置过于简单不符合mysql策略而已,改成复杂符合的就行了。
当然,如果我是普通的学习环境、测试环节,不需要如此复杂难记的密码,请看下面。

(1)修改validate_password_policy参数值为0(1为开启复杂策略)
注意:此参数(policy)必须优先修改,因为policy策略不修改为0会影响下面的length参数。

set global validate_password_policy=0;

(2)修改validate_password_length参数值为1

set global validate_password_length=1;

最后执行修改密码测试:

alter user ‘root’@’localhost’ identified by ‘@wjb13191835106’;

PuTTY实现Windows向Linux上传文件

PSCP工具

PuTTY小巧方便。但若需要向网络中的Linux系统上传文件,则可以使用PuTTY官方提供的PSCP工具来实现上传。PSCP基于ssh协议实现,其用法与SCP命令非常类似。

获取PSCP工具

PuTTY官方网站下载页中,找到PSCP,下载。

wps_clip_image-31489

下载后,习惯性的将pscp.exe与Putty.exe文件放在一起。

首先需要保证在命令行下可以访问到pscp.exe。可以通过配置Windows的环境变量Path,或者直接通过命令行访问到pscp.exe。

示例:如下所示,在Windows中访问到pscp.exe

wps_clip_image-28724

使用 ? 查看命令参数与选项:

wps_clip_image-26053

传输文件

把本地文件file传输到Linxu服务器的目录中。

基本命令格式:pscp 文件 用户名@LinuxIP:目录

 

使用“ -l ”选项可以指定用户名。

基本命令格式:pscp -l 用户名 文件 LinuxIP:目录

 

使用“ -r ”选项可以用于传输目录。

基本命令格式:pscp  -r 目录 用户名@LinuxIP:目录

或使用命令格式:pscp -l 用户名 -r 目录 LinuxIP:目录

 

例:上传文件至Linux。

wps_clip_image-964

对相应的用户输入密码,即可开始上传。

wps_clip_image-29473

在Linux相应的目录下查看,文件已经存在。

wps_clip_image-14512

同理,PSCP也可以用于从Linux向Windows复制文件或目录。不再赘述。

PuTTY + Xming 实现Oracle图形安装  http://www.linuxidc.com/Linux/2015-08/121051.htm

使用PuTTY时对原始设置的几个简单实用修改 http://www.linuxidc.com/Linux/2014-02/96924.htm

如何通过PuTTY实现远程登录控制Linux平台 http://www.linuxidc.com/Linux/2013-06/85266.htm

PuTTY连接VMWare中Ubuntu的问题解决 http://www.linuxidc.com/Linux/2013-05/84819.htm

VMware+Linux+PuTTY环境配置 http://www.linuxidc.com/Linux/2013-05/84818.htm

使用PuTTY密钥认证机制远程登录Linux  http://www.linuxidc.com/Linux/2015-03/114944.htm

来源http://www.linuxidc.com/Linux/2016-08/133991.htm