你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

Linux部署frp内网穿透访问内网主机

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


说明

  • 服务部署在内网主机中,主机没有独立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服务端的公网IP
    • serverPort:frp服务端的端口
    • name:名称可以随意写
    • type:代理类型,这里使用TCP
    • localIP:被代理的本地服务 IP
    • localPort:被代理的本地服务端口
    • 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服务
    • 启动frpsudo systemctl start frps
    • 停止frpsudo systemctl stop frps
    • 重启frpsudo systemctl restart frps
    • 查看frp状态sudo systemctl status frps
  • 执行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服务
    • 启动frpsudo systemctl start frpc
    • 停止frpsudo systemctl stop frpc
    • 重启frpsudo systemctl restart frpc
    • 查看frp状态sudo systemctl status frpc
  • 执行sudo systemctl enable frpc设置服务开机自启动

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。