针对普通用户,想要在运营商那里申请公网ip,一个是太难,一个是成本太高;本文记录自己搭建frp服务器的过程; 申请不到公网ip,但是可以购买一个便宜的服务器,这样服务器就带有公网ip 例如:阿里云,腾讯云
去官网githud地址下载frp安装包,下载服务端和客户端对应的包
版本选择说明: 目前最新版本0.29.1
. frp_0.29.1_darwin_amd64.tar.gz —— 适用于Mac OS系统
. frp_0.29.1_freebsd_386.tar.gz —— 适用于FreeBSD 32位系统
. frp_0.29.1_freebsd_amd64.tar.gz —— 适用于FreeBSD 64位系统
. frp_0.29.1_linux_386.tar.gz —— 适用于Linux 32位系统
. frp_0.29.1_linux_amd64.tar.gz —— 适用于Linux 64位系统
. frp_0.29.1_linux_arm.tar.gz —— 适用于Linux 32位嵌入式系统
. frp_0.29.1_linux_arm64.tar.gz —— 适用于Linux 64位嵌入式系统
. frp_0.29.1_linux_mips.tar.gz
. frp_0.29.1_linux_mips64.tar.gz
. frp_0.29.1_linux_mips64le.tar.gz
. frp_0.29.1_linux_mipsle.tar.gz
. frp_0.29.1_windows_386.zip —— 适用于Windows 32位系统
. frp_0.29.1_windows_amd64.zip —— 适用于Windows 64位系统
搭建服务端
阿里云服务器,系统ubuntu 18.0.4
wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd64.tar.gz
解压压缩包
tar -xzvf frp_0.26.0_darwin_amd64.tar.gz
frp压缩包文件说明
每个压缩包解压后都包含以下文件和一个systemd文件夹:
. frpc —— 客户端可执行二进制文件
. frpc_full.ini —— 包含全部配置项的客户端配置文件
. frpc.ini —— 客户端使用的配置文件,包含最简配置
. frps —— 服务端可执行二进制文件
. frps_full.ini —— 包含全部配置项的服务端配置文件
. frps.ini —— 服务端使用的配置文件,包含最简配置
. systemd —— 文件夹,用于将frpc和frps添加为服务的配置,linux下使用systemd作为守护程序、mac os使用launchd作为守护程序
注:服务端只需用到frp_0.29.1_linux_amd64目录下的frps相关文件,本机(客户端)只需用到frp_0.29.1_darwin_amd64目录下的frpc相关文件。
配置服务端 frps.ini
cd /opt/frp_0.29.1_linux_amd64/
vi frps.ini
修改端口,监听端口号和frp服务端口
[common]
bind_port = 7000
vhost_http_port = 8080
vhost_https_port = 8089
启动frps程序
chmod +x ./frps
./frps -c ./frps.ini
阿里云的安全组,需要打开7000,8088端口,配置的什么端口,就打开什么端口
本地客户端
根据自己的系统下载对应的版本,我的是linux
配置frpc
cd ./frp_0.29.1_linux_amd64/
vi frpc.ini
配置web访问
[common]
server_addr = x.x.x.x # 服务端ip
server_port = 7000 # 服务端端口
[web]
type = http # 协议类型http/https
local_ip = 127.0.0.1 # 本地ip
local_port = 3000 # 本地web服务端口
启动frpc程序
sudo ./frpc -c ./frpc.ini
方便管理,配置service
为了方便管理frps的启动、停止、重启和开机自启,我们需要将frps添加为系统service,通过systemd守护程序来管理。 在frp_0.29.1_linux_amd64目录里的systemd目录下,已经为我们准备好了添加service的模板:
. frpc.service —— 客户端使用此模板
. frpc@.service
. frps.service —— 服务端使用此模板
. frps@.service
cd ./frp_0.29.1_linux_amd64
vi frps.service
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
1、将user=nobody改为user=root,注:root表示运行frps的用户。 2、其中服务运行配置项为:ExecStart=/usr/bin/frps -c /etc/frp/frps.ini,我们需要将二进制文件frps复制或移动到到/usr/bin目录,配置文件frps.ini复制或移动到/etc/frp目录,而/etc/frp目录不存在,需要手动创建一个
复制frps到/usr/bin目录:
cp ./frp_0.29.1_linux_amd64/frps /usr/bin
创建frp目录,并复制frps.ini到/etc/frp目录:
mkdir /etc/frp
cp ./frp_0.29.1_linux_amd64/frps.ini /etc/frp
将frps.service复制到/etc/systemd/system目录:
cp ./frp_0.29.1_linux_amd64/systemd/frps.service /etc/systemd/system
使用systemctl管理frps
# 启动
systemclt start frps
# 停止
systemclt stop frps
# 重启
systemctl restart frps
# 查看状态
systemctl status frps
# 开机自启
systemctl enable frps
客户端frpc,配置和服务端一样
配置内外网hhtp,https,ssh
只需配置客户端即可:frpc.ini
ssh
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
远程ssh连接方法
ssh name@ip -p 6000
http
#http类型的内网穿透,必须设置服务端:vhost_http_port,
#并且所有的http类型的客户端都将通过同一个vhost_http_port访问。
#custom_domains 域名必须要有,并且备案
# frpc.ini
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = test.yourdomain.com
# 启用健康检查,类型为 http
health_check_type = http
# 健康检查发送 http 请求的 url,后端服务需要返回 2xx 的 http 状态码
health_check_url = /status
health_check_interval_s = 10
health_check_max_failed = 3
health_check_timeout_s = 3
访问的时候通过域名访问:www.xxx.xxx:8080
https
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7002
[test_htts2http]
type = https
custom_domains = test.yourdomain.com
plugin = https2http
plugin_local_addr = 127.0.0.1:8089
# HTTPS 证书相关的配置
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1