目录

使用frp进行内网穿透

这篇文章介绍了使用frp进行内网穿透的方法

注意

注1、本期视频教程

注1、frp官网

1 frp下载

frp是非常知名的内网穿透工具。可以将我们内网的服务穿透到公网服务器上,很好的解决了服务器贵和没公网的问题。我们可以买一个最丐的服务器部署frp和反向代理,高性能的任务在家中运行由frp穿透到公网。

frp的下载地址为GitHub,我们直接下载最新版即可。或者到我的网盘下载0.60版,也是我用的版本。我们分别下载对应设备处理器的版本,下载后我们解压出来,可以看到frps、frpc和它们的配置文件。  

2 在内网设备进行部署

frp分为服务端frps,安装在服务器等有公网的设备上,和客户端frpc安装在无公网的内网设备上。本次我们采用STCP和XTCP穿透,需要在服务器部署frps和frpc,在内网部署frpc。所以我们首先在内网设备进行部署。

2.1 将frpc安装到设备上

首先我们在内网设备上任意位置创建frp文件夹并进入

mkdir frp && cd frp

将内网设备处理器对应的版本的frpcfrpc.toml传输到文件夹内。

编辑frpc.toml文件,加入如下内容

serverAddr = "服务器ip"
serverPort = 监听端口
auth.token = "frp密钥"


[[proxies]]
name = "halo"
type = "stcp"
secretKey = "halo密钥"
localIP = "172.17.0.1"
localPort = 8090

[[proxies]]
name = "alist1"
type = "xtcp"
secretKey = "alist1密钥"
localIP = "172.17.0.1"
localPort = 9030


# 我理解的有些问题,带回退的p2p穿透需要在内网也加一个stcp,大家对应修改一下就行了
[[proxies]]
name = "alist2c"
type = "stcp"
secretKey = "alist2c密钥"
localIP = "172.17.0.1"
localPort = 9050

[[proxies]]
name = "alist2"
type = "xtcp"
secretKey = "alist2密钥"
localIP = "172.17.0.1"
localPort = 9050

大家可以用这个密码生成器生成几个30位大小写数字符号的随机密码当作令牌,或是键盘上乱敲30位密码当作令牌,几个文件对应的令牌对应好了就行。

保存退出

2.2 配置systemd

编辑添加一个systemd配置文件

sudo nano /etc/systemd/system/frpc.service

放入如下内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /放置路径/frp/frpc -c /放置路径/frp/frpc.toml

[Install]
WantedBy = multi-user.target

保存退出

2.3 启动frpc

启动frpc

sudo systemctl start frpc

设置frpc开机自启动

sudo systemctl enable frpc

3 在公网服务器进行部署

3.1 将frps安装到公网服务器上

首先我们在设备上任意位置创建frp文件夹并进入

mkdir frp && cd frp

将公网设备处理器对应的版本的frpcfrpsfrps.tomlfrpc.toml传输到文件夹内。

编辑frps.toml文件,加入如下内容

bindPort = 监听端口
auth.token = "frp密钥"

保存退出

3.2 配置fprs的systemd

编辑添加一个systemd配置文件

sudo nano /etc/systemd/system/frps.service

放入如下内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /放置路径/frp/frps -c /放置路径/frp/frps.toml

[Install]
WantedBy = multi-user.target

保存退出

3.3 启动frps

sudo systemctl start frps

设置frps开机自启动

sudo systemctl enable frps

3.4 将frpc安装到公网服务器上

编辑frpc.toml文件,加入如下内容

serverAddr = "服务器ip"
serverPort = 监听端口
auth.token = "frp密钥"


[[visitors]]
name = "halos"
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "halo"
secretKey = "halo令牌"
# 绑定本地端口以访问 SSH 服务
bindAddr = "172.17.0.1"
bindPort = 8090

[[visitors]]
name = "alist1s"
type = "xtcp"
# 要访问的 P2P 代理的名称
serverName = "alist1"
secretKey = "alist1令牌"
bindAddr = "172.17.0.1"
bindPort = 9030


[[visitors]]
name = "alist2ss"
type = "stcp"
serverName = "alist2c"
secretKey = "alist2c令牌"
bindPort = -1

[[visitors]]
name = "alist2s"
type = "xtcp"
# 要访问的 P2P 代理的名称
serverName = "alist2"
secretKey = "alist2令牌"
bindAddr = "172.17.0.1"
bindPort = 9050
fallbackTo = "alist2ss"
fallbackTimeoutMs = 350

保存退出

3.2 配置fprc的systemd

编辑添加一个systemd配置文件

sudo nano /etc/systemd/system/frpc.service

放入如下内容

[Unit]
# 服务名称,可自定义
Description = frpc server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /放置路径/frp/frpc -c /放置路径/frp/frpc.toml

[Install]
WantedBy = multi-user.target

保存退出

3.3 启动frpc

sudo systemctl start frpc

设置frps开机自启动

sudo systemctl enable frpc

到此frp的内网穿透就配置好了,在服务器端进行反向代理就好了。

4 结语

1、建议做好端口的分配,在内网是那个端口,公网也穿透到那个端口不要变。尤其是alist一变就出问题

2、我们如果比较小白的话可以用caddy进行反向代理,全自动。进阶一点看服务器内存大小可以用nginxwebui,再进阶当然就是直接ACME.sh搭配nginx手动配置了。这只是我推荐啊,大家也可以用自己喜欢的。

3、另附几个systemctl命令

# 启动frps
sudo systemctl start frps
# 停止frps
sudo systemctl stop frps
# 重启frps
sudo systemctl restart frps
# 查看frps状态
sudo systemctl status frps
# 打开frps开机自启动
sudo systemctl enable frps
# 关闭frps开机自启动
sudo systemctl disable frpc

如果碰到配置出了问题,运行不起来,可以通过sudo systemctl status frps查看是否运行起来,也可以通过frps verify -c ./frps.toml校验配置文件是否正确,frpc同理将s改成c即可。