使用frp进行内网穿透
这篇文章介绍了使用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
将内网设备处理器对应的版本的frpc
和frpc.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
将公网设备处理器对应的版本的frpc
、frps
、frps.toml
、frpc.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即可。