为什么使用 frp?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
服务器端部署
下载
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
解压
tar -zxvf frp_0.45.0_linux_amd64.tar.gz
cd frp_0.45.0_linux_amd64
查看解压的目录
ls -alh
编辑 frps.ini
[common]
bind_port = 7000
bind_udp_port = 7001
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 这是 web 界面密码
enable_prometheus = true
log_file = /root/frps.log
log_level = info
log_max_days = 3
token = 这是连接密码
写一个服务文件
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
在 etc 文件夹下创建 frp 文件夹,把 frps.ini 服务配置拷贝过去
mkdir -p /etc/frp
cp frps.ini /etc/frp
把 frps 固件包拷贝到系统的命令库中
cp frps /usr/bin
把 frps 的单元文件拷贝到用户 lib
cp systemd/frps.service /usr/lib/systemd/system/
使能 & 启用
systemctl enable frps
systemctl start frps
客户端
我是在 var 目录下建立了一个 frp 文件夹,放入 frpc 和 frpc.ini 以及 frpc.service 文件
frpc.ini 文件
[common]
server_addr = 服务器端的 IP
server_port = 7000
token = 这是连接密码
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
frpc.service 文件
[Unit]
Description=Frpc
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/var/frp/frpc -c /var/frp/frpc.ini
[Install]
WantedBy=multi-user.target
把 frpc 的单元文件拷贝到用户 lib
cp /var/frp/frpc.service /usr/lib/systemd/system/
使能 & 启用
systemctl enable frpc
systemctl start frpc
在服务器端面板已经看到了登录,并且检查服务器端的 6000 端口是否正常打开并可以用来连接内网机器的 ssh。
映射其他端口可以从配置文件举一反三。
正文结束