说明
- 服务部署在内网主机中,主机没有独立IP,但是可以访问外网,服务每次维护不方便需要现场办公
- 需要一台有独立公网IP的主机,在主机上部署frp服务,然后再在内网主机启动frp客户端,就可以实现远程登陆主机和访问主机服务
- frp项目地址:
https://github.com/fatedier/frp
- frp官网:
https://gofrp.org/zh-cn/
准备
- 前往
https://github.com/fatedier/frp/releases
根据系统版本下载压缩包,压缩包里包含客户端和服务器二进制文件
启动frp服务端
- frp服务端需要部署在有公网IP的主机中
- 解压后将文件上传到公网服务器,我的目录是
/home/deploy/frp
- 执行
cd /home/deploy/frp
进入目录 - 执行
chmod 777 /home/deploy/frp/*
修改权限 - 修改
frps.toml
文件内容bindPort = 7000
,默认就是7000
,也可以改成其他端口,如果修改端口记得同时修改客户端的配置 - 执行
./frps -c ./frps.toml
启动服务,启动成功如下:
[root@ecs-a490-0005 frp]# ./frps -c ./frps.toml
2024/01/19 11:34:08 [I] [root.go:104] frps uses config file: ./frps.toml
2024/01/19 11:34:08 [I] [service.go:225] frps tcp listen on 0.0.0.0:7000
2024/01/19 11:34:08 [I] [root.go:113] frps started successfully
- 服务在前台执行,如果关闭控制台,服务就会停止
- 可以在后台执行,命令是
nohup ./frps -c ./frps.toml &
,日志会输出到nohup.out
文件中 - 如果想停止服务,可以先执行
netstat -tunlp|grep 7000
通过端口号查看进程,再执行kill -9 <pid>
停止进程
启动frp客户端
- frp客户端部署在内网主机中
- 解压后将文件上传到内网服务器,我的目录是
/home/deploy/frp
- 执行
cd /home/deploy/frp
进入目录 - 执行
chmod 777 /home/deploy/frp/*
修改权限 - 修改
frpc.toml
文件内容,实现代理22端口配置,如下:
serverAddr = "113.115.121.189"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
- 参数说明:
serverAddr
:frp服务端的公网IPserverPort
:frp服务端的端口name
:名称可以随意写type
:代理类型,这里使用TCPlocalIP
:被代理的本地服务 IPlocalPort
:被代理的本地服务端口remotePort
:服务端绑定的端口
- 更多参数可以查看官方文档:
https://gofrp.org/zh-cn/docs/reference/
- 执行
./frpc -c ./frpc.toml
启动服务,启动成功如下:
[root@localhost frp]# ./frpc -c ./frpc.toml
2024/01/20 00:49:48 [I] [root.go:141] start frpc service for config file [./frpc.toml]
2024/01/20 00:49:48 [I] [service.go:287] try to connect to server...
2024/01/20 00:49:48 [I] [service.go:279] [07110d90c5cf437f] login to server success, get run id [07110d90c5cf437f]
2024/01/20 00:49:48 [I] [proxy_manager.go:173] [07110d90c5cf437f] proxy added: [test-tcp]
2024/01/20 00:49:48 [I] [control.go:169] [07110d90c5cf437f] [test-tcp] start proxy success
- 服务在前台执行,如果关闭控制台,服务就会停止
- 可以在后台执行,命令是
nohup ./frpc -c ./frpc.toml &
,日志会输出到nohup.out
文件中 -
如果想停止服务,可以先执行
ps aux | grep frpc
查看进程,再执行kill -9 <pid>
停止进程 - 启动成功后就可以使用ssh连接内网主机,
公网ip:6000
使用服务
- 可以用
systemd
管理frp
服务并添加到开机启动
添加frps
服务
- 执行
sudo vim /etc/systemd/system/frps.service
创建文件,并添加内容如下:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/deploy/frp/frps -c /home/deploy/frp/frps.toml
[Install]
WantedBy = multi-user.target
- 使用
systemd
命令管理frps
服务- 启动frp
sudo systemctl start frps
- 停止frp
sudo systemctl stop frps
- 重启frp
sudo systemctl restart frps
- 查看frp状态
sudo systemctl status frps
- 启动frp
- 执行
sudo systemctl enable frps
设置服务开机自启动
添加frpc
服务
- 执行
sudo vim /etc/systemd/system/frpc.service
创建文件,并添加内容如下:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/deploy/frp/frpc -c /home/deploy/frp/frpc.toml
[Install]
WantedBy = multi-user.target
- 使用
systemd
命令管理frpc
服务- 启动frp
sudo systemctl start frpc
- 停止frp
sudo systemctl stop frpc
- 重启frp
sudo systemctl restart frpc
- 查看frp状态
sudo systemctl status frpc
- 启动frp
- 执行
sudo systemctl enable frpc
设置服务开机自启动