debian下的frpc超简单配置内网穿透神器

作者:chq315 时间:23-11-22 阅读数:82人阅读

首先frp是分S和C版本,S对应的就是服务器端,C对应的就是客户端。那么有公网的是安装frps,需要到公网的是需要安装frpc,我们今天先讲述下简单的安装和配置。

首先一张图我们看下简单的原理,这是内网穿透神器的工作原理。

frp.png

https://github.com/fatedier/frp/releases

以上是官方最新版本的地址

https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

下载到frp_*_linux_amd64的压缩文件,解压缩出目录得到一个名称为frp_*_linux_amd64的目录,我们要用到的是里面的frpsfrp*.toml文件,这两个文件分别是frps的可执行程序和配置文件,我习惯将自定义的可执行程序放到/usr/bin/,配置文件放置到/etc/对应的程序名文件夹下面,于是:

FRPS-服务器端配置

cd frp_0.23.0_linux_amd64
//赋予frps可执行权限
chmod +x frps
//将frps放到path目录下
cp frps /usr/bin/

//建立配置文件目录
mkdir /etc/frp/
//将配置文件复制到对应的配置文件目录
cp frps.toml /etc/frp/

然后就是配置开机启动了,因为Debian 12使用的是systemd,我们能很简单的就能控制frps的进程了:

vim /etc/systemd/system/frps.service

[Unit]
Description=FRP Server Daemon

[Service]
Type=simple
ExecStartPre=-/usr/sbin/setcap cap_net_bind_service=+ep /usr/bin/frps
ExecStart=/usr/bin/frps -c /etc/frp/frps.toml
Restart=always
RestartSec=20s
User=nobody
PermissionsStartOnly=true

[Install]
WantedBy=multi-user.target

因为我们要借助公网服务器进行穿透,所以,公网服务器和位于内网的FRPC对应的需要放行,因为考虑到除了跟内网通信的端口本身,我们还需要一些别的服务的端口,比如说启用一个SSH服务,这又需要一个另外的端口。我用的是腾讯云,打算分配50000-50100给FRPS使用。

FRPC-客户端配置

cd frp_0.23.0_linux_arm64
//赋予frps可执行权限
chmod +x frpc
//将frpc放到path目录下
cp frpc /usr/bin/

//建立配置文件目录
mkdir /etc/frp/
//将配置文件复制到对应的配置文件目录
cp frpc.toml /etc/frp/

vim /etc/systemd/system/frpc.service

[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.toml
Restart=always
RestartSec=20s
User=nobody

[Install]
WantedBy=multi-user.target

根据实际需求修改就好了。

到这一步就完成了FRPS和FRPC的基本配置,已经可以通过systemd相关命令进行启动停止了:

systemctl start frps #启动
systemctl stop frps #停止
systemctl restart frps #重启
systemctl status frps #查看状态
systemctl enable frps #开机启动frp

systemctl start frpc
systemctl stop frpc
systemctl restart frpc
systemctl status frpc
systemctl enable frpc

FRPS配置

默认的frps.toml只有一个绑定端口配置,出于安全考虑,我们最好还是加个密码,如果需要,也可以开启一下Dashboard,所以,目前我的frps.toml配置如下:

vi /etc/frp/frps.toml

[common]
bind_port = 3001

token = zocodev

dashboard_port = 3100
dashboard_user = zocodev
dashboard_pwd = zocodev

FRPC配置

上面说了,我使用FRP的目的就是想要使用公网的服务器进行内网穿透,所以,我需要配置FRPC将本地的SSH穿透到公网服务器上,完整配置如下:

vi /etc/frp/frpc.toml

[common]
server_addr = 111.231.1.1
server_port = 3001
token = zocodev

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 3022

上方的remote_port就是我们“连接”SSH使用的端口。

frp启用加密和压缩功能

每一个代理都可以选择是否启用加密和压缩的功能。加密算法采用 aes-128-cfb,压缩算法采用 snappy。

在每一个代理的配置文件 frpc.toml 中添加如下参数(关注最后两条配置参数)

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true

通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止传输内容被截取。如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。

发表评论