说明
- 服务部署在内网主机中,主机没有独立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设置服务开机自启动