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
解压出来我们看到有以下文件
其中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文件夹下
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
客户端
客户端这里我们在本地主机使用的是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文件就行)
把马赛克这个换成自己的公网ip
访问jenkins
格式: http://自定义域名:虚拟地址端口
对与这个案例来讲就是http://jenkins.demo.com:18081,通过这个就可以访问到我本地的jenkins
完整的文档教程: https://freefrp.net