debian下的frpc超简单配置内网穿透神器
首先frp是分S和C版本,S对应的就是服务器端,C对应的就是客户端。那么有公网的是安装frps,需要到公网的是需要安装frpc,我们今天先讲述下简单的安装和配置。
首先一张图我们看下简单的原理,这是内网穿透神器的工作原理。
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的目录,我们要用到的是里面的frps和frp*.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 资源。