FRP简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
官网:https://gofrp.org
Github:Releases · fatedier/frp · GitHub
中文文档:frp/README_zh.md at dev · fatedier/frp · GitHub
工具下载地址:Release v0.34.3 · fatedier/frp · GitHub
FRP好处是利用内网或防火墙后的机器(例如家用路由器后的192.168段的IP),对外网环境提供http或https服务。对于http和https服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供tcp和udp服务,例如在家里通过ssh或者web访问公司内网环境内的主机或者业务进行办公!!
配置 FRPS
编写frps 配置文件
下载frp 并将frp 移动到 /usr/local/frp
有时我们机器会配置多个frp服务以防止某个frpc挂掉,这里将本次的服务命名为frpc_xxx,如果你需要建立多个frpc,重复执行本文的操作,并将xxx替换为你自定义的名字就好。
sudo wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
sudo tar -zxvf frp_0.48.0_linux_amd64.tar.gz
sudo mv frp_0.48.0_linux_amd64 frpc_xxx
sudo mv frpc_xxx /usr/local/frp
编写配置文件 frps.ini 并保存
vim /usr/local/frpc_xxx/frpc.ini
[common]
# bind_port 是frp内网穿透服务器端监听的端口,默认是7000,我用的是8888
bind_port = 8888
# 开启token验证
authentication_method = token
# 设置token验证,相当于密码
token = XXXXXXXXXX
# 这个是frp内网穿透服务器的web界面的端口,可以通过http://你的ip:6443查看frp内网穿透服务器端的连接情况,和各个frp内网穿透客户端的连接情况。
dashboard_port = 6443
dashboard_user = 自己设置个用户名
dashboard_pwd = 自己设置个密码
esc :wq 保存退出。
配置权限
sudo chmod +x -R /usr/local/frp/frpc_xxx
配置 systemd
在Linux环境下实现开机自启有多种方案,最常用的是使用 systemd (推荐)和使用 rc.local ,由于 rc.local 的设置有些复杂,本篇文章我将采用 systemd 创建系统服务来实现开机自启。
使用 vim /lib/systemd/system/frpc_xxx.service 编辑系统服务配置文件
[Unit]
Description= frpc_xxx Service - %i
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/bin/bash -c '/usr/local/frp/frpc_xxx/frpc -c /usr/local/frp/frpc_xxx/frpc.ini'
[Install]
WantedBy=multi-user.target
使用 sudo systemctl enable frpc_xxx 设置开机自启
使用 sudo systemctl daemon-reload 使系统服务被加载
使用 sudo systemctl start frpc_xxx 来启动 frps
大功告成!此时输入 sudo systemctl status frpc_xxx -l并回车,你应该看服务的状态为 Active: active (running) ,如果你看到服务状态显示的不是 Active: active (running) ,则你可能需要从最开始重新进行一遍所有步骤。
额外的命令
启动 frps: sudo systemctl start frpc_xxx
停止 frps: sudo systemctl stop frpc_xxx
重启 frps: sudo systemctl restart frpc_xxx
查看 frps 运行状态及日志: sudo systemctl status frpc_xxx