用 FRP 配置 toml 文件搭建内网穿透
用 FRP 配置 toml 文件搭建内网穿透
需求场景
1、一台外网可访问的有固定 ip 的云服务器
2、一台外网无法访问的无固定 ip 的本地家用电脑
需求:将云服务器搭建为一台内网穿透服务器,实现通过外网访问家用电脑(网页)的功能。且即使没有域名也可通过公网访问。
下载软件
GitHub:https://github.com/fatedier/frp
releases 页面:https://github.com/fatedier/frp/releases
官方文档:https://gofrp.org/zh-cn
根据自己实际情况选择,家用电脑和服务器都是 x64 架构。
上传软件
个人习惯先分别在云端和本地的 ubuntu 的 /etc 目录下新建 frp 目录用来存放 frp 文件。
解压后,在家用电脑端保存frpc
和frpc.toml
文件,在云服务器端保存frps
和frps.toml
文件。
frp 软件在 0.52.0 版本开始支持 toml 格式的配置文件,在后继版本取消 ini 配置格式。
服务端设置
云端放行端口
frp 服务端口:7000(可自定义)
frp 控制面板端口:7500(可自定义)
要在两个地方放行:
1、 是云服务器提供商设置的防火墙放行端口,
2 是服务器操作系统 Ubuntu 端口也要放行
1 | # 添加监听端口 |
如果用的宝塔面板,在安全里设置:
如果端口不放行后面会报无法连接错误: connect: no route to host
云端配置文件 frp.toml
1 | bindPort = 7000 # frp服务的特定端口,防火墙也需放开该端口 |
启动服务端
方式一:直接启动
服务器端,传统的启动方式是直接敲命令:
先 cd 到 frps 所在目录
1 | ./frps -c ./frps.toml & |
这么写,比较麻烦,而且如果要停止进程也比较麻烦,建议采用构建成服务的方式。
方式二:以服务方式启动(推荐)
安装 systemd
,通常情况下系统都带得有,没有的情况下使用如下命令安装。
使用 yum 安装 systemd(CentOS/RHEL)
1 | yum install systemd |
使用 apt 安装 systemd(Debian/Ubuntu)
1 | apt install systemd |
创建 frps.service 服务
创建并编辑该文件
1 | sudo vim /etc/systemd/system/frps.service |
写入内容
1 | [Unit] |
以服务的方式管理 frps
1 | # 启动frp |
验证服务端是否启动成功
访问:http:// 服务器 IP: 后台管理端口” ,输入用户名和密码可以查看连接状态
如:http://62.244.114.4:7500/
,
用户名和密码分别对应 frps.toml 文件中的
1 | webServer.user = "admin" |
登录之后 frp 控制面板界面如下:
如果上述步骤没有问题,则说明 frp 的服务端配置成功了,也就意味着内网穿透你已经成功了一半
客户端设置
配置文件frpc.toml
客户端,编辑frpc.toml
文件:
1 | # frpc.toml |
运行启动
客户端运行及加入自动启动也参考服务端,唯一不同的是客户端运行需要使用 frpc -c frpc.toml
穿透测试
现在可以通过外网直接用 ip + 端口访问家中这台电脑提供的服务了,当然原理上是通过云服务器的端口中转的。
可以在家中电脑上继续搭建 NAS 系统,搭建自己的博客网站。
如果是通过域名访问网站,在国内是需要备案的。
用 docker 部署 frp
服务端
云服务器 ubuntu 配置文件 frps.toml
1 | bindPort = 7000 |
启动脚本 serverstart.sh
1 |
|
运行
1 | # frpc.toml |
客户端
本地电脑 ubuntu 配置文件 frpc.toml
1 | #!/bin/bash |
启动脚本 clientstart.sh
1 |
|
运行
1 | ./clientstart.sh |
上述配置是一个把内网 ssh 服务的 22 号端口映射到公网的 6022 端口, 执行命令
1 | ssh -p 6022 192.168.1.132 |
即可从外网访问内网 ssh 服务
注: 用公网 ip 替换 192.168.1.132
其它问题
- 端口占用冲突
如果你用的端口被系统保留了不让用,就得换其它端口
可以通过如下命令查看保留的端口范围
1 | netsh interface ipv4 show excludedportrange protocol=tcp |
- 云服务器商的控制面板和 ubuntu 系统中都要放行防火墙端口
相关引用
杂记 | 使用 FRP 搭建内网穿透服务(新版 toml 配置文件,搭配反向代理食用)_frps.toml-CSDN 博客
如何使用 docker+frp 进行内网穿透_docker_脚本之家
内网穿透!如何配置 frp 新版 0.56.0 的配置文件. toml:提供 web、samba、ssh 远程连接示例_frp 0.56-CSDN 博客