搭建frp内网穿透并设置开机启动

首先要有个公网服务器,我的是阿里云的。在搭建之前先把要暴露的端口范围给暴露出来,也就是把防火墙打开。随后去到 GitHub 上下载服务器端和客户端。

项目地址:https://github.com/fatedier/frp
下载地址:https://github.com/fatedier/frp/releases
中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

建议先粗略看完文档后再继续阅读

搭建穿透服务并连接

根据服务器和内网电脑的操作系统下载对应的可执行文件,压缩包内包含客户端和服务端。以及默认的配置文件。
macOS: 下载 frp_0.33.0_darwin_amd64.tar.gz
windows: 下载 frp_0.33.0_windows_amd64.zip (相应大家的系统都是 64 位的吧?如果是 32 位的就下载 i386 的文件)
linux: 下载 frp_0.33.0_linux_amd64.tar.gz (如果是嵌入式芯片的电脑,类似于平板电脑、手机这样的,根据自己的芯片架构来选择其他的文件。)

首先根据文档编写符合自己情况的服务端配置文件,随后将 frps 文件和 frps.ini 配置文件上传到外网服务器,cd 到 frps 所在目录,随后执行 ./frps -c ./frps.ini 命令来启动服务端。

这里分享一下我自己的服务端配置文件:

frps.ini

[common]
# 客户端通过这个端口号来连接服务端
bind_port = 3001
# http 服务的端口号,绑定域名后都走这个端口号来访问内网的http服务
vhost_http_port = 8080
# 统计面板的端口号
dashboard_port = 3004
# dashboard 用户名密码,默认都为 admin
dashboard_user = 面板账号
dashboard_pwd = 面板密码
# 允许暴露的外网端口号,即内网穿透指定的外网端口号必须在这个范围内。
allow_ports = 3010-4000
# 安全码,客户端也要有同样的 token 才能连接到服务器
token = 123456777

然后启动一个本地 http 服务,这里我的 http 服务监听的端口是 5000。
根据文档编写符合自己情况的客户端配置文件,好了后启动客户端。用命令行的方式启动,不要双击启动。
windows 打开资源管理器,打开 frpc.exe 的所在目录,然后在地址栏输入 cmd 回车。然后命令行所在目录就是 frpc.exe 的所在目录了。接着在命令行中输入命令 frps.exe -c ./frps.ini

再分享一下我的客户端配置文件内容:

frpc.ini

[common]
server_addr = 外网服务器的ip地址
server_port = 3001
token = 123456777

[ia-engin]
# http 的穿透,需要绑定域名才行。没有域名请选择 tcp
type = http
# 内网可以打开网站的ip
local_ip = 127.0.0.1
# 内网网站监听的端口,前面我http监听的端口号就是5000.
local_port = 5000
# 自定义的域名,将域名解析到外网服务器的ip地址,然后访问 ia.frp.jethro.fun:8080 就能打开 127.0.0.1:5000 这个网站了
custom_domains = ia.frp.jethro.fun

# 这个是 tcp 的演示。http 也是 tcp ,所以可以选择 tcp 类型来穿透。
[ia-tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
# 内网端口对应的外网端口。意思是可以通过 外网ip:3011 来访问内网的 127.0.0.1:5000
remote_port = 3011

到这里穿透就弄好了,但是还有个问题就是开机启动,我需要服务器重启后,能自动启动 frps 。

使穿透服务自启

可以开机启动的方式有好几种,都可以百度到,这里我选择比较简单的 supervisor。
我是 centOS,所以执行 sudo yum install supervisor -y 来安装 supervisor。
Ubuntu可以执行 sudo apt-get install supervisor -y 来安装。

安装后在 /etc 目录下有个 supervisord.conf 文件,打开它后,在最下面有两行配置

[include]
files = supervisord.d/*.ini

意思是把要管理的进程配置放到 /etc/supervisord.d/ 中。配置文件是 .ini 格式的。
执行 sudo vim /etc/supervisord.d/frps.ini 命令创建一个 frps.ini 文件,写入内容:

[program:frps]
autostart=True
command=/root/frp_0.33.0/frps -c /root/frp_0.33.0/frps.ini
directory=/root/frp_0.33.0/

这里对配置文件一行一行的解析:
program:frps: 进程名叫做 frps。
autostart=True: 启动 supervisord 时自动启动 frps 进程。
command=/root/frp_0.33.0/frps -c /root/frp_0.33.0/frps.ini: 启动 frps 要执行的进程,这里用绝对路径启动了 frps
directory=/root/frp_0.33.0/ 工作目录

保存后执行一个命令来使 supervisord 开机自启。
systemctl enable supervisord

这样在系统重启后 supervisor 就会自启,然后 supervisor 会启动 frps 服务。frpc 也可以这样做。但是 supervisor 仅支持 Linux 操作系统。

添加新评论