frp内网穿透

什么是内网穿透?

内网穿透就是让两个不在局域网的网络连接在一起,换句话说,也就是让两个没有什么联系的网络连接在一起。

内网之间本来是不能连接的,我们平时可以看到前后端联调代码的时候,前端人员和后端人员总是需要连接同一个网络,只要连接了同一个网络,就属于一个局域网下,这个时候前后端的两台电脑就可以互相访问了。 如果前后端不在同一个局域网下面,就不能联调代码,这就是因为内网之间是不能互相访问的。另外,内网穿透的时候,需要关闭防火墙,防火墙在我的理解下只是距离自己电脑最近的一层防护,当然也是最坚实的防护。

补充一点,我们买的服务器是公网,不属于内网,我们只用在服务器的后台开放对应的端口就行了,这就是为什么所有人都可以访问服务器ip的原因,至于为什么服务器是公网,这个大家不用管。

什么情况下用到内网穿透?

根据上面的例子,我们知道,只要是两个不在同一局域网的电脑需要连接在一起,就需要内网穿透。举个具体的例子,在开发钉钉机器人的时候,当你@outgoing机器人后,机器人会给你的服务器发送一个Post请求,服务器是公网,所以可以发送成功,你也能接收到,但是有个问题是,你没法调试自己的代码,有些许的不方便。 这个时候,如果你想让钉钉机器人的Post请求发送到自己本地的IDE,但是由于你本地IDE所在的局域网和钉钉的局域网不是同一个,不在同一个局域网下面是无法互相访问的,所以我们需要内网穿透,内网穿透后,我们就以让钉钉官方发送的请求直接发送到我们的本地IDE,我们就可以调试了。

内网穿透所需物品

  • 一个运行在本地的Web项目
  • 一台服务器(无需域名)
  • frp工具

内网穿透的大致思路是通过frp工具,让我们的服务器收到的请求转发到我们的本地IDE

内网穿透具体过程

    下载frp

frp是一个工具,在github也是很出名,我们需要下载两份,一份是linux,用在服务器上面,一份是windows上面,用在自己本地windows电脑上面。

服务端配置

一:先确定公网服务端linux系统版本

[root@VM_0_6_centos ~]# getconf LONG_BIT
64

可以看到是64位,所以我们下载的对应frp版本也是64位

二:根据版本确定下载对应的安装包

通过上面的操作,最终我们选择 frp_0.30.0_linux_amd64.tar.gz (说明:FRP V0.30.0 版本 linux 系统 ADM64位操作系统)

下载方式一:通过wget

wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz && tar xzvf frp_0.30.0_linux_amd64.tar.gz && mv frp_0.30.0_linux_amd64 frp

下载方式二:通过xftp传输

 下载地址:   Releases · fatedier/frp (github.com)

下载完成后通过xftp传输到服务器,然后再解压即可。

我们解压完成后进入到目录中,可以看到frps换frps.ini  ,我下面的文件是已经删除掉了一下和服务端无关的文件,只留下了有用的文件

我们编辑frps.ini文件

bind_port是frp客户端和我们阿里云服务器连接的端口,如果你的阿里云服务器端口没有被占用的话,那就不用修改了,如果你的阿里云服务器端口7000已经被占用了,那就需要再换一个。

vhost_http_port是我们需要和本地电脑连接的端口,换句话说,就是我们本地IDE项目运行的那个端口,同样,该端口在阿里云服务器也不能被占用。

保存后我们运行服务端,也就是通过frps.ini文件运行frps。

第一种运行方式是前台开启,如果把x-shell退出后,连接就会中断失效

 第二种方式是后台开启,把x-shell退出后,不会中断

前端开启,关闭ssh连接就会失效
./frps -c ./frps.ini
 
后台开启,关闭ssh连接仍然运行
nohup ./frps -c ./frps.ini &

若通过后者开启,信息会自动保存到frp路径下的 nohup.out 文件中,内容与上面一致

开启之后,还需在阿里云后台防火墙设置中开启相应端口

否则,客户端在连接时会出错

[W] [control.go:113] login to server failed: dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out

至此服务端已经配置好了。

客户端(内网主机)配置

我们下载一份对应的frps在windows环境下的文件, 下载地址:   Releases · fatedier/frp (github.com)

 我下载的版本是frp_0.44.0_windows_amd64

下载完成之后,解压,找到frpc.ini

 使用记事本编辑

 [common]中的server_addr是我们的服务器公网地址,server_port 应与服务端配置中的 bind_port 一致

[web]为模块名可以自己定义,local_port与内网主机,也就是我们本地IDE运行的项目所在的端口一致,custom_domains填映射到阿里云ip的域名,没有域名直接填阿里云ip即可

编辑完成后,退出保存,在当前路径下打开黑窗口,以frpc.ini配置文件运行frpc.exe 

 运行命令

frpc -c frpc.ini

 于此同时,我们可以可以看到frp服务端已经有了对应的连接成功的提示。

 至此,我们的frp客户端也已经配置完成了。

测试是否穿透成功

本地运行一个goweb项目

现在我们让一个外网,随便找一个和你不在同一网络下的人连接 服务器端口:81,就可以看到请求已经发送到你的本地了。 

本地IDE收到的请求提示 

 

 至此,内网穿透成功。

如果您看了文章有疑问,请在评论区留言,欢迎指正!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值