frp内网穿透

为什么要使用内网穿透?

  • 线上出问题无法排查问题的时候,我们需要时内网穿透;
  • 需要从公网访问nas;
  • 在本地搭建web服务,想发布到公网中使用。

我们可以准备一台低配置的云服务器、域名、公网ip带宽可以设置高一点以便于提高访问速度,

下载地址

使用方式

下载下来分为服务端和客户端 服务端搭建在公网服务器上面,客户端可以在本地主机使用,我用的都是最新的版本,所以我选择的是下载页面中的第一个tag/release,根据linux的系统架构来选择下载那一个,我linux是x86的架构,那我就下载的是带有linux-amd64的地址

服务端

  • 可以在本地下载上传到服务端,也可以直接从服务端下载

下载

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

解压

tar -zxvf frp_0.38.0_linux_amd64.tar.gz

解压出来我们看到有以下文件
Snipaste_2022-01-24_14-39-12
其中frps开头的为服务端使用,frpc为客户端使用

如何使用

在服务端我们就直接使用frps开头的文件

修改frps.ini文件,内容如下
[common]
bind_port = 7000 # 绑定服务端端口
vhost_http_port=18081 #虚拟地址端口,用于web程序访问
token=QWERTYUIOPASDFGHJKL # token 作为服务端与客户端链接的密钥,可以随便填但不要太简单以免被其他引入挖矿程序或者病毒
dashboard_port=7500 # 后台管理界面访问的端口
dashboard_user=admin # 后台管理访问的用户名
dashboard_pwd=password # 后台管理访问的密码
enable_prometheus=true
启动

以service方式启动,我们看到里面有systemd文件夹,文件夹中的文件就是linux service的配置文件,我们需要把frps.srvice这个文件复制到systemd文件夹下
Snipaste_20220124_145202.png

mkdir -p /etc/frp #创建frp配置文件夹
cp frps.ini /etc/frp/
cp systemd/frps.srvice /usr/lib/systemd/system/ # 把service文件放在systemd文件夹下面
systemctl enable frps
systemctl start frps

到这一步,服务端就完了,记得要开放两个端口7000和7500

访问后台页面

使用公网ip加7500访问: http://服务器公网ip:7500
Snipaste_20220124_152321.png

客户端

客户端这里我们在本地主机使用的是frpc.ini和frpc这两个二进制文件, 如果我们要使用外网访问本地主机网站,下面我以访问jenkins为例

修改frpc.ini文件

[common] 公共配置类
server_addr = 114.116.xx.xx # 服务端的公网ip地址
server_port = 7000 # 服务端配置的端口
token=QWERTYUIOPASDFGHJKL # 和服务端配置的token一样

[jenkins]
type=http
local_port=8080 #本地jenkins端口
local_ip=127.0.0.1 #本地ip
custom_domains=jenkins.demo.com # 需要穿透的ip,这里我模拟一个ip

启动客户端

./frpc -c ./frpc.ini 启动命令

使用swithhosts修改hosts文件(只要能修改hosts文件就行)

Snipaste_20220124_153524.png
把马赛克这个换成自己的公网ip

访问jenkins

格式: http://自定义域名:虚拟地址端口
对与这个案例来讲就是http://jenkins.demo.com:18081,通过这个就可以访问到我本地的jenkins
Snipaste_20220124_153835.png

完整的文档教程: https://freefrp.net