不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
写在前面
有小伙伴推荐,简单了解
博文内容涉及 内网穿透 工具 frp 的安装以及2个Demo
内网的静态文件服务访问 Demo
内网多端口映射 Demo
理解不足小伙伴帮忙指正
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
公有云上面租一台机器
配置 hostname
修改 PS1
(非必须),更新 yum 仓库,开始之前做一些准备工作
1 2 ┌──[root@liruilongs.github.io]-[~] └─$yum update
使用的系统环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ┌──[root@liruilongs.github.io]-[~] └─$hostnamectl Static hostname: liruilongs.github.io Pretty hostname: VM-16-15-centos Icon name: computer-vm Chassis: vm 🖴 Machine ID: 613a0293049a4b07973b2510b3318f11 Boot ID: 67748b49b4774c38a59a204f8c03efec Virtualization: kvm Operating System: CentOS Stream 9 CPE OS Name: cpe:/o:centos:centos:9 Kernel: Linux 5.14.0-432.el9.x86_64 Architecture: x86-64 Hardware Vendor: Tencent Cloud Hardware Model: CVM Firmware Version: seabios-1.9.1-qemu-project.org ┌──[root@liruilongs.github.io]-[~] └─$
服务端安装 安装包下载:
https://github.com/fatedier/frp/releases
需要根据服务端类型选择对应的版本
1 2 3 4 5 6 ┌──[root@liruilongs.github.io]-[~] └─$mkdir frp ┌──[root@liruilongs.github.io]-[~] └─$cd frp ┌──[root@liruilongs.github.io]-[~/frp] └─$wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz
解压
1 2 3 4 5 [root@liruilongs frp] [root@liruilongs frp] frp_0.57.0_linux_amd64 frp_0.57.0_linux_amd64.tar.gz [root@liruilongs frp] [root@liruilongs frp_0.57.0_linux_amd64]
服务端可执行文件 frps
放到合适的位置
1 2 3 4 5 6 7 8 9 10 11 12 13 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$ls frpc frpc.toml frps frps.toml LICENSE ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$mv frps /usr/local/bin/ ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$ls /usr/local/bin/frps /usr/local/bin/frps ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$which frps /usr/local/bin/frps ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
服务端配置文件准备 配置文件可以参考: gofrp.org/zh-cn/docs/examples/
服务端配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ┌──[root@liruilongs.github.io]-[/etc/frps] └─$mkdir /etc/frps;cd /etc/frps; vim frps.toml ┌──[root@liruilongs.github.io]-[/etc/frps] └─$cat /etc/frps/frps.toml bindPort = 7000 webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin" ┌──[root@liruilongs.github.io]-[/etc/frps] └─$
这里需要同步开启 云服务器的防火墙或者安全组,放行端口 7500
服务端 service 单元文件编写 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ┌──[root@liruilongs.github.io]-[/etc/frps] └─$vim /etc/systemd/system/frps.service ┌──[root@liruilongs.github.io]-[/etc/frps] └─$cat /etc/systemd/system/frps.service [Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /usr/local/bin/frps -c /etc/frps/frps.toml [Install] WantedBy = multi-user.target
确认配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ┌──[root@liruilongs.github.io]-[/etc/frps] └─$systemctl cat frps.service [Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /usr/local/bin/frps -c /etc/frps/frps.toml [Install] WantedBy = multi-user.target ┌──[root@liruilongs.github.io]-[/etc/frps] └─$
服务端启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl start frps.service ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl status frps.service ● frps.service - frp server Loaded: loaded (/etc/systemd/system/frps.service; disabled; preset: disabled) Active: active (running) since Sat 2024-04-27 12:15:03 CST; 8s ago Main PID: 926794 (frps) Tasks: 5 (limit : 11127) Memory: 9.4M CPU: 220ms CGroup: /system.slice/frps.service └─926794 /usr/local/bin/frps -c /etc/frps/frps.toml Apr 27 12:15:03 liruilongs.github.io systemd[1]: Started frp server. Apr 27 12:15:03 liruilongs.github.io frps[926794]: 2024-04-27 12:15:03.809 [I] [frps/root.go:105] frps uses config file: /etc/f> Apr 27 12:15:04 liruilongs.github.io frps[926794]: 2024-04-27 12:15:04.020 [I] [server/service.go:237] frps tcp listen on 0.0.0> Apr 27 12:15:04 liruilongs.github.io frps[926794]: 2024-04-27 12:15:04.020 [I] [frps/root.go:114] frps started successfully Apr 27 12:15:04 liruilongs.github.io frps[926794]: 2024-04-27 12:15:04.021 [I] [server/service.go:350] dashboard listen on 0.0.> ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
配置开机自启动
1 2 3 4 5 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl enable frps.service Created symlink /etc/systemd/system/multi-user.target.wants/frps.service → /etc/systemd/system/frps.service. ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
访问服务端管理界面测试 通过 公网IP:管理Web端口
访问管理界面
管理界面
客户端安装 移动客户端可执行文件到合适位置,这里我们使用这一台机器同时模拟客户端, 实际上 客户的端需要拷贝到你的内网环境的机器上
1 2 3 4 5 6 7 8 9 10 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$ls frpc frpc.toml frps.toml LICENSE ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$mv frpc /usr/local/bin/ ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$which frpc /usr/local/bin/frpc ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
客户的配置文件准备 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ┌──[root@liruilongs.github.io]-[/etc] └─$mkdir /etc/frpc;vim /etc/frpc/frpc.toml ┌──[root@liruilongs.github.io]-[/etc] └─$cat /etc/frpc/frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 webServer.addr = "0.0.0.0" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin" [[proxies]] name = "admin_ui" type = "tcp" localPort = 7400 remotePort = 7600 ┌──[root@liruilongs.github.io]-[/etc/frps] └─$
需要放行服务端防火墙 7600 端口,这里我们把内网,也就是客户端的 7400 端口映射到 公网的 7600 端口,这里我们就可以通过 公网IP:7600
来访问 客户端的管理界面
客户端 service 单元文件编写 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ┌──[root@liruilongs.github.io]-[~] └─$vim /etc/systemd/system/frpc.service ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl cat frpc.service [Unit] Description = frp client After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /usr/local/bin/frpc -c /etc/frpc/frpc.toml [Install] WantedBy = multi-user.target ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
客户端服务启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl start frpc.service ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$systemctl status frpc.service ● frpc.service - frp client Loaded: loaded (/etc/systemd/system/frpc.service; enabled; preset: disabled) Active: active (running) since Sat 2024-04-27 12:57:04 CST; 5s ago Main PID: 937311 (frpc) Tasks: 4 (limit : 11127) Memory: 4.6M CPU: 7ms CGroup: /system.slice/frpc.service └─937311 /usr/local/bin/frpc -c /etc/frpc/frpc.toml Apr 27 12:57:04 liruilongs.github.io systemd[1]: Started frp client. Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.663 [I] [sub/root.go:142] start frpc service for config file [/etc/frpc/frpc.toml] Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.664 [I] [client/service.go:294] try to connect to server... Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.672 [I] [client/service.go:286] [b7a69f20af11ef97] login to server success, get run id [b7a69f20af11ef97] Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.672 [I] [proxy/proxy_manager.go:173] [b7a69f20af11ef97] proxy added: [admin_ui] Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.672 [I] [client/service.go:184] admin server listen on 0.0.0.0:7400 Apr 27 12:57:04 liruilongs.github.io frpc[937311]: 2024-04-27 12:57:04.675 [W] [client/control.go:168] [b7a69f20af11ef97] [admin_ui] start error: port unavailable ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
访问客户端管理界面测试
常用场景Demo 官方文档提供了很多 Demo,这里主要看种常四用的场景
提供简单的文件访问服务 客户端配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$cat /etc/frpc/frpc.toml serverAddr = "62.234.100.41" serverPort = 7000 webServer.addr = "0.0.0.0" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin" [[proxies]] name = "admin_ui" type = "tcp" localPort = 7400 remotePort = 7600 [[proxies]] name = "test_static_file" type = "tcp" remotePort = 8099 [proxies.plugin] type = "static_file" localPath = "/tmp" stripPrefix = "static" httpUser = "abc" httpPassword = "abc" ┌──[root@liruilongs.github.io]-[~/frp/frp_0.57.0_linux_amd64] └─$
这里需要注意部分端口可能浏览器不能识别为 web 服务,比如 6000 ,可能需要更换端口 8099
1 2 3 4 5 ┌──[root@liruilongs.github.io]-[/tmp] └─$systemctl restart frpc.service ┌──[root@liruilongs.github.io]-[/tmp] └─$systemctl is-active frpc.service active
端口范围映射 客户的配置文件中添加下面的配置,重新加载
1 2 3 4 5 6 7 {{- range $_ , $v := parseNumberRangePair "6000-6006,6007" "6000-6006,6007" }} [[proxies]] name = "tcp-{{ $v .First }}" type = "tcp" localPort = {{ $v .First }} remotePort = {{ $v .Second }} {{- end }}
这会映射 6000-60007 这8 个端口
博文部分内容参考 © 文中涉及参考链接内容版权归原作者所有,如有侵权请告知 :)
https://github.com/fatedier/frp
https://gofrp.org/zh-cn/docs/
© 2018-2024 liruilonger@gmail.com , All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)