内网穿透——让本地项目无需部署也能被他人访问

为啥学内网穿透,学了它有啥用?我这里举两我遇到的问题吧

问题一:

在学习多级缓存的时候,我安装在云服务器上的 OpenResty 是需要访问我本地电脑上的项目来获取数据的,而我项目又还没有调式好,不想在服务器部署,那怎么让它能从云服务器那边访问呢?

问题二:

事情是这样的,在学习redis分片集群的时候,想尽可能模拟实际,使用三台服务器来搭建三从三主的分片集群。但是呢,我只有两台云服务器:一个是腾讯学生优惠 一百多买的。另一个是华为当时搞活动薅羊毛(一年只要三十多)。

这样下来不够用啊我要的是三个,还差一个咋办啊?诶,要不我用本地的虚拟机吧,但是也不行啊,因为我们自己的电脑连接上网络之后,IP地址是不断变化的,没有固定的公网IP,所以别人是无法访问的,那云服务器上的 redis 节点就没法跟本地的搞集群了。
 

其它作用:

除了以上两个问题,还有啥其它用途呢?嗯,还是有很多用途的,例如:买的云服务器太垃圾了,不够用该怎么办,那就可以通过内网穿透让你本地的充当服务器了,这样的话一些旧电脑啥的都可以利用起来了。

使用啥工具进行内网穿透

我这里使用的 frp 。啥也不说,frp官方快给我打钱!!!

主要原因还是:它不用花钱而且用起来特简单

接下来说正事,要咋玩?

环境说明
云服务器:CentOS7.6-Docker20  

本地机器:Windows 系统

要干哪些事?
先了解其大概原理:

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

由上可知,我们要配置的就两个:frp 服务端和客户端

服务端配置

先切换到root目录,(到哪都行)但为了方便你后面可以直接 cv ,所以跟我一样方便一些

cd~

下载frp

wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz

然后解压

tar -zxvf frp_0.36.2_linux_amd64.tar.gz

文件夹改个名,方便使用

mv -r frp_0.36.2_linux_amd64 frp

进入该目录

cd frp

查看一下文件

ls -a

我们需要关注一下这4个文件

frps    frps.ini     这两个是服务端使用的

frpc    frpc.ini     这两个是客户端使用的,这里可以直接删掉,也可以不删,随你

编辑 frps.ini 文件

vi frps.ini

这个文件应有如下格式,编辑完成后保存

[common]
bind_port = 7000

bind_port   表示用于客户端和服务端连接的端口,随便一个未占用的端口即可,后面客户端也会用到

然后我们就可以运行frps的服务端了

./frps -c frps.ini

如果在启动后输出内容最后看到  Start frps success,那恭喜你,已经成功了一半

为了方便日后使用,我们使用 systemctl 的方式 管理 frp服务

切换到  /lib/systemd/system

cd /lib/systemd/system

创建一个文件 frps.service

touch frps.service

编辑 frps.service

vi frps.service

将下面这段直接 c v

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
#ExecStart=/your/path/frps -c /your/path/frps.ini
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target

然后就可以通过下面指令对 frps 进行操作了

启动
systemctl start frps
 
设置自启动
systemctl enable frps
 

停止
systemctl stop frps
 
重启
systemctl restart frps
 
 查看应用的日志
systemctl status frps

客户端配置

下载: frp_0.36.2_windows_amd64.zip

解压在随便哪个喜欢的目录下,因为现在这里是客户端,所以也可以直接删除其中的 frps 和 frps.ini 文件。随你

打开frpc.ini,进行如下配置

[common]
server_addr = x.x.x.x
server_port = 7000
 
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 8081
 
#如果想多几个端口能被访问则像下面这样加就行了,[] 里名字要不一样 
#[web1]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 8082
#remote_port = 8082

其中common字段下的三项即为服务端的设置。

  • server_addr为服务端IP地址,填入即可。

  • server_port为服务器端口,填入你设置的端口号即可,如果未改变就是7000

web字段都是自己定义的规则,自定义端口对应时格式如下。

  • [xxx] 表示一个规则名称,自己定义,此处由于我部署的是web服务,所以起名为web。

  • type 表示转发的协议类型,有TCP、UDP、HTTP、HTTPS等选项可以选择,如有需要请自行查询frp手册。

    当然你只要跟我一样就行了

  • local_iplocal_port 配置为本地需要暴露到公网的服务地址和端口。local_ip可以填你本地虚拟机的ip

  • remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

  • 简而言之:当其他人访问server_addr:remote_port时就能访问到local_ip:local_port

配置完成 frpc.ini 后,就可以运行frpc了,frpc程序不能直接双击运行!

然后在上方地址栏中输入:powershell 后 回车

内网穿透——让本地项目无需部署也能被他人访问_第1张图片

 

然后输入:

./frpc -c frpc.ini

内网穿透——让本地项目无需部署也能被他人访问_第2张图片
 不要关闭此窗口,此时别人就可以通过server_addr:remote_port,访问你本地机器了,并且在窗口上会动态输出访问信息

 

如果有其它使用需求,请查看官方文档  https://frps.cn/11.html

 

内网穿透——让本地项目无需部署也能被他人访问_第3张图片

你可能感兴趣的:(一些问题的解决,服务器,运维)