用frp给闲置电脑一个机会(水一波)

如果你恰好有一台闲置电脑,恰好有一台国内小鸡

1. 安装1Panel(非必须只需要软件frps和fail2ban,可以考虑其他安装方式)

官网地址:https://1panel.cn/docs/installation/online_installation/

根据服务器情况安装

安装过程略

2. 安装frps

进入1Panel的页面

选择应用商店搜索frps

选择安装

安装后进入安装目录修改配置文件 /opt/1panel/apps/frps/frps/data/frps.toml

根据官网(https://gofrp.org/zh-cn/docs/reference/server-configures/)的提示配置

这是我使用的配置,需要把汉字部分修改为自己需要的设置

bindAddr = "服务端监听地址,用于接收 frpc 的连接,默认监听 0.0.0.0。"
bindPort = 服务端监听端口,默认值为 7000。
enablePrometheus = true

[log]
to = "/path/to/frps.log"
level = "info"
maxDays = 30

[auth]
method = "token"
token = "在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。"

[webServer]
addr = "0.0.0.0"
port = webServer 监听端口。
user = "HTTP BasicAuth 用户名。"
password = "HTTP BasicAuth 密码。"

可能出现的问题

1. docker的时间和服务器时间不同

点击容器

选择frps容器更多,选择编辑

在挂载中增加时间配置

在环境变量增加配置

SET_CONTAINER_TIMEZONE=true
CONTAINER_TIMEZONE=Asia/Shanghai

image-20240518153419639

3. 安装fail2ban

官网提供了安装方式(https://1panel.cn/docs/user_manual/toolbox/fail2ban/)

添加frps规则

# cat /etc/fail2ban/filter.d/frps.conf
[Definition]
failregex = ^.*get a user connection \[<HOST>:[0-9]*\]
            ^.*get a new work connection: \[<HOST>:[0-9]*\]
ignoreregex =

校验规则

fail2ban-regex /opt/1panel/apps/frps/frps/log/frps.log /etc/fail2ban/filter.d/frps.conf

运行规则

在1Panel面板的工具箱中有Fail2ban的配置,点击全部配置修改,可以根据自由修改配置

frp:监控目标名称
port:封禁全部端口
filter:过滤规则,我们使用自定义的frps
action:捕捉到恶意IP后执行的操作,本文使用iptables对IP封禁所有端口
logpath:需要监控的日志文件
bantime:封禁时间,单位为秒
findtime:查找时间段,单位为秒
maxretry:允许的最大失败次数,这里我们配置10分钟内触发10次规则,那么就封禁掉

#DEFAULT-START
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 300
maxretry = 5
banaction = ufw
action = %(action_mwl)s
#DEFAULT-END

[sshd]
enabled = true
filter = sshd
port = 22
maxretry = 3
findtime = 300
bantime = 600000
banaction = ufw
action = %(action_mwl)s
logpath = /var/log/auth.log

[frp]
enabled = true
findtime = 600
maxretry = 5
bantime = -1
filter = frps
logpath = /opt/1panel/apps/frps/frps/log/frps.log 
protocol = all
chain = all
port = all

4. 安装frpc

在本地闲置电脑安装frpc,也用docker的方式

docker run -d --restart always --network host --name frpc -v /data/frpc/frpc.toml:/etc/frp/frpc.toml snowdreamtech/frpc

根据官网(https://gofrp.org/zh-cn/docs/reference/client-configures/)的提示配置

这是我使用的配置,需要把汉字部分修改为自己需要的设置

user = "LinuxDo"
serverAddr = "连接服务端的地址。"
serverPort = 连接服务端的端口,默认为 7000。
auth.method = "token"
auth.token = "在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。"
log.to = "console"
transport.tcpMux = true

[[proxies]]
name = "LinuxDo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 80

现在应该就能正常访问本地的服务了

5. frps添加https(纯IP地址申请TLS证书,避免国内小鸡需要备份的问题)

可以颁布的证书网站(Free SSL Certificates and SSL Tools - ZeroSSL

缺点:只有90天,需要手动创建,手机app使用时需要手动导入证书

下面只说明获得证书后,把ssl的三个文件放到/data/frpc/data文件夹下

增加frpc配置文件

[[proxies]]
name = "LinuxDo"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 81
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8080"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
crtPath = "/etc/frp/ssl/certificate.crt"
keyPath = "/etc/frp/ssl/private.key"

重新创建frpc

docker stop frpc && \
docker rm frpc && \
docker run -d --restart always --network host --name frpc -v /data/frpc/:/etc/frp/ snowdreamtech/frpc

尝试过直接用cf隧道指向国内小鸡,但是fail2ban拿到的ip是小鸡ip,所以就改用了这种方式

5 个赞

看完了,闲置电脑在哪领

2 个赞

咸鱼

3 个赞

太强了佬

1 个赞

如果服务器端不安装GUI呢?命令行安装frps要怎么设置?

docker run -d --name frps snowdreamtech/frps
docker cp frps:/etc/frp /data/frpc/
docker stop frps && docker rm frps
docker run -d --restart always --network host --name frps -v /data/frpc/:/etc/frp/ snowdreamtech/frps

感谢指点 :handshake: