为了实现在外网访问本地云的需求,在一番调查之后选择使用frp配置内网穿透来实现。本文参考了互联网上的众多文章,一并放在最后。
在开始前默认你现在已经有了一个可以ping通的VPS,它的ip为:xxx.xxx.xxx.xxx,用户为:root
服务端安装与配置
通过ssh连接到VPS
ssh root@xxx.xxx.xxx.xxx # 连接到远程服务器
wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz # 使用wget命令下载服务端压缩包
tar -zxvf frp_0.59.0_linux_amd64.tar.gz -C /usr/local # 解压到 /usr/local进入/etc/systemd/system目录,新建文件frps.service,配置如下:
# frps.service
[Unit] Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#Restart=always
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp_0.59.0_linux_amd64/frps -c /usr/local/frp_0.59.0_linux_amd64/frps.toml #启动服务的命令
[Install]
WantedBy=multi-user.target保存,回到frp目录下
cd /usr/local/frp_0.59.0_linux_amd64
vim frps.toml #编辑frps配置,frps中的s表示服务端,同理c表示客户端配置如下:
# frps.toml
bindPort = 7000 # 服务端与客户端通信端口
transport.tls.force = true # 服务端将只接受 TLS链接
auth.token = "public" # 身份验证令牌,frpc要与frps一致
# Server Dashboard,可以查看frp服务状态以及统计信息
webServer.addr = "0.0.0.0" # 后台管理地址
webServer.port = 7500 # 后台管理端口
webServer.user = "admin" # 后台登录用户名
webServer.password = "admin" # 后台登录密码 保存并退出。
启动frp服务端
sudo systemctl enbale frps # 设为开机自启
sudo systemctl start frps # 启动frp
sudo systemctl status frps # 查看启动日志如果没有任何报错说明服务启动成功。此时可以在网上访问端口号为7500的面板,在浏览器里输入xxx.xxx.xxx.xxx:7500,即可登录到frp的控制面板。如果访问不到,检查服务器上是否开启了7000与7500端口。执行如下操作:
sudo ufw status # 检查当前防火墙的状态
sudo ufw allow <你要开启的端口>如果还访问不到,那可能需要一点魔法。
客户端安装与配置
下载与解压的方法一样,只不过在客户端配置的是frpc服务,注意是frpc不是frps。
进入/etc/systemd/system目录,新建文件frpc.service,配置如下:
# frpc.service
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#Restart=always
Restart=on-failure
RestartSec=5s
#启动服务的命令
ExecStart=/usr/local/frp_0.59.0_linux_amd64/frpc -c /usr/local/frp_0.59.0_linux_amd64/frpc.toml
[Install]
WantedBy=multi-user.target保存,回到frp目录下
cd /usr/local/frp_0.59.0_linux_amd64
vim frpc.toml #编辑frpc配置配置如下:
# frpc.toml
transport.tls.enable = true # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000 # 公网服务端通信端口
auth.token = "public" # 令牌,与公网服务端保持一致
[[proxies]]
name = "test_case"
type = "tcp"
localIP = "127.0.0.1" # 需要暴露的服务的IP
localPort = xxxx # 本地服务的端口
remotePort = xxxx # 暴露服务的公网端口保存并退出。
启动frp服务端:
sudo systemctl enbale frpc # 设为开机自启
sudo systemctl start frpc # 启动frp
sudo systemctl status frpc # 查看启动日志不出意外的话,现在就可以在公网上访问本地服务器上的服务了。如果还有其他问题可以使用如下命令:
sudo journalctl -u frpc -e # 在客户端运行
sudo journalctl -u frps -e # 在服务端运行查看客户端和服务端的日志,看不懂没关系,把结果喂给GPT一步步排查就好,大部分情况是网络问题。
Reference
## 2024年了居然有人还不会搭建FRP做内网穿透
frp图解 附最新.toml配置文件
教你新手怎么搭建frp内网穿透教程VPS云服务器搭建最新教程+注意细节【快速上手】
