# Info.
frp 的终极目的,是使内网机器能通过公网进行访问,所以大前提是得有另外一台拥有独立ip的公网机器(当然你要把10.1穿到192.168我也没意见),服务端和客户端系统 win&linux 皆可。
整个过程类似路由器的端口映射,只不过变成了不同机器上的配置文件和命令的方式
服务器端文件为 frps*,客户端文件为 frpc* 。下文配置文件部分,win&linux 通用
# Do it.
操作环境如下
- 内网机:centos7.6 8c8g 家用宽带100M
- 公网机:centos7.6 4c4g 公网5M
Part.1 服务端配置(公网端)
1. 到项目地址下载心仪版本并解压,mv到合适路径并改名
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 &&rm -rf frp_0.38.0_linux_amd64.tar.gz
mv frp_0.38.0_linux_amd64 frp
- 服务器端删除 frpc* 文件
- frps.ini 配置文件
- frps_full.ini 记录所有可配置项示例
2. 修改配置文件
服务器端至少需要设置服务监听端口,其他配置根据需要添加,这里额外配置token验证和仪表盘
vim frps.ini
[common]
bind_port = 12345 #frp服务监听端口
#启用token验证,token可自定义
authenticate_heartbeats = true
authenticate_new_work_conns = true
token = 123456
#启用简易面板、登录验证(可选)
dashboard_port = 54321
dashboard_user = admin
dashboard_pwd = admin
3. 启动服务
基本启动命令:./frps -c frps.ini
win命令
※此时所有log将输出到shell,后台运行等配置可参考 Part.3
Part.2 客户端部署
1. 到项目地址下载心仪版本并解压,mv到合适路径并改名
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 &&rm -rf frp_0.38.0_linux_amd64.tar.gz
mv frp_0.38.0_linux_amd64 frp
- 客户端删除 frps* 文件
- frpc.ini 配置文件
- frpc_full.ini 记录所有可配置项示例
2. 修改配置文件
客户端需要设置服务器信息、穿透设置
以下是基本配置项释义和示例
vim frpc.ini
[common]
server_addr = 8.8.8.8 #服务器ip
server_port = 2333 #服务端监听端口
#如服务端开启token验证,则此处也如是配置
authenticate_heartbeats = true
authenticate_new_work_conns = true
token = 123456
#格式示例:
#
#[自定义名称]
#type = tcp #类型:tcp/udp
#local_ip = 192.168.1.2 #本机ip
#local_port = 本机将被映射出去的端口
#remote_port = 从外部访问所用端口
#
#最终效果为,访问 server_addr:remote_port 将被指向 local_ip:local_port
#实用示例:
#
[ssh]
type = tcp
local_ip = 192.168.1.2
local_port = 22
remote_port = 10086
[web]
type = tcp
local_ip = 192.168.1.2
local_port = 80
remote_port = 80
3. 启动服务
基本启动命令:./frpc -c frpc.ini
※此时所有log将输出到shell,后台运行等配置可参考 Part.3
使用frp应先启动服务端再启动客户端
Part.3 进程守护
这里示例 后台运行 和 systemctl进程守护 两种方式
建议使用进程守护,相对更易管理
1. nohup后台运行
启动后台运行:nohup ./frps -c ./frps.ini &
查看进程id:jobs -l
关闭进程:kill -9 id
2. systemctl进程守护
vim /lib/systemd/system/frps.service
*注意frps和frpc
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frpc -c /root/frp/frpc.ini #此处写启动命令
[Install]
WantedBy=multi-user.target
保存退出即可使用 systemctl 管理命令即可
Q.E.D
Comments NOTHING