目录

概述:

CentOS 7安装frps端

    # su获取root
    # wget https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz
    # wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
    # wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
    # 解压:tar xf frp_0.26.0_linux_amd64.tar.gz
    # 改名:mv frp_0.26.0_linux_amd64 frp
    # 进入目录:cd frp
    # 删除没用的客户端文件:rm -f frpc*
    # 配置文件:vim frps.ini
    # 编辑ini文件 按ins进入编辑(精简)
    

《frps.ini》文档

[common]
bind_addr = xxx.xxx.xxx.xxx # frps内网服务器地址,如果有防火墙的话,设置下述端口映射
bind_port = xxxxx # frps服务端口
bind_udp_port = xxxx # udp服务端口
vhost_http_port = xxxxx # http服务端口
vhost_https_port = xxxxx # https服务端口
privilege_token = xxxxxxxx # 握手密钥
subdomain_host = xxxx.xxx # 填写顶级域名,意味着对应frpc的2级域名代理启用
dashboard_port = xxxx # 服务器面板端口
dashboard_user = xxxxx # 服务器面板用户
dashboard_pwd = xxxxxxx # 服务器面板密码
log_file = ./frpslog.log
log_level = info
log_max_days = 3

frps的调试

./frps -c ./frps.ini
nohup ./frps -c ./frps.ini &
ps -aux | grep frp
kill -9 PID

frps.service自启动文档

mkdir /etc/frps
cp /源目录/frps.ini /etc/frps/
cp /源目录/usr/etc/frps
/etc/systemd/system/
sudo vim /etc/systemd/system/frps.service 新建此文件,并写入以下内容

《frps.service》文档

[Unit]
Description=frps Dgn
After=network.target

[Service]
Type=simple
# User=root
ExecStart=/usr/etc/frps/frps -c /etc/frps_aker/frps.ini
# /usr/etc/frps 文件目录,注意service文件中要指向frps运行程序(这个没查到网上解释,以为只要放个空文档,其实要放入执行文件,搞了半天才运行成功!!!)
# /etc/frps/frps.ini 配置目录

[Install]
WantedBy=multi-user.target

frps.service自启动

    sudo systemctl start frps
    # (把start改为stop即终止frps)
    sudo systemctl enable frps
    systemctl status frps
    # 查看frps状态
    
    vi /etc/rc.local
    # 在最下面加一行/usr/sbin/frp/frps -c /usr/sbin/frp/frps.ini
    # 其中 /usr/sbin/frp是程序放置的目录,自己修改,重启ok
    

frps.service自启动进程查看

ps aux | grep frps
sudo systemctl status frps

frps服务下的防火墙端口开启

    firewall-cmd --permanent --add-port=xxxx/tcp # 开放bind_port(frps服务)# 必须
    firewall-cmd --permanent --add-port=xxxx/tcp # 开放dashboard_port(服务面板http)# 必须
    firewall-cmd --permanent --add-port=xxxx/tcp # 开放vhost_http_port(http端口)# 按需
    firewall-cmd --permanent --add-port=xxxx/tcp # 开放vhost_http_port(https端口)# 按需
    firewall-cmd --permanent --add-port=xxxx/tcp # 开放bind_udp_port端口(udp直连)# 按需
    firewall-cmd --permanent --add-port=xxxx/tcp # 开放kcp_bind_port端口(kcp端口)# 按需
    firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)
    firewall-cmd --list-all # 查看防火墙规则
    
    firewall-cmd --zone=public --add-port=10067/tcp --permanent
    firewall-cmd --reload
    

firewall常用命令

yum install firewalld firewalld-config
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=443/tcp --permanent
    firewall-cmd --zone=public --add-port=22/tcp --permanent
    firewall-cmd --zone=public --add-port=53/udp --permanent
    
    firewall-cmd --zone=public --remove-port=80/tcp --permanent
    firewall-cmd --zone=public --remove-port=443/tcp --permanent
    firewall-cmd --zone=public --remove-port=22/tcp --permanent
    firewall-cmd --zone=public --remove-port=53/udp --permanent
    
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.1" port protocol="tcp" port="80" accept"
    #添加源IP 192.168.100.1访问80端口
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.0/24" port protocol="tcp" port="80" accept"
    #添加IP段访问80端口
    firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.100.1" port protocol="tcp" port="80" accept"
    #删除源IP 192.168.100.1访问80端口
    
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.180.10.10" accept"
    firewall-cmd --reload
    
    firewall-cmd --zone=public --add-port=4400-4600/udp --permanent
    firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
    
    firewall-cmd --permanent --list-ports
    firewall-cmd --permanent --list-all
    firewall-cmd --permanent --list-rich-rules
    

NAS端安装FRPC

《frpc.ini》文档

[common]
server_addr = xxx.xxx.xxx.xxx
# 服务器地址
server_port = xxxx
# 服务器端口
privilege_token = xxxxxx
# token = xxxxxx 有些服务端版本采用这个字节,多数采用“privilege_token”字节,token理解为密码
protocol = tcp

[http]
type = http
# http协议orhttps协议,如果两个都要的话就单独复制一段[https]
local_ip = 192.168.x.xx
# 群晖的内网IP
local_port = xxxxx
# 你自己的web服务器端口
custom_domains = xxxxxxx.xxx
# 如果你有自己的域名,可以设置你自己的域名,先将自己的顶级域名解析到frp服务器域名(如二级域名的话用CNAME记录,不要用A记录)
#subdomain = nas 
# 全局下唯一的子域名,你的访问地址将会是http://subdomain.xxx.xxx,服务器端必须已绑定顶级域名,否则不要设置;
# 此外,顶级域名需要在域名系统上做好CNAME的泛解析,否则不可用。HOST:*.xxx.xxx;Value:xxx.xxx。

[ssh]
type = tcp
local_ip = 192.168.x.xxx
local_port = xxxxxx
# 需要转发到的端口,ssh端口默认是22
remote_port = xxxxxx
# frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口

#[DSM]
# type = tcp # tcp协议
# local_ip = 192.168.x.xxx
# 127.0.0.1指穿透本机,也可以填写群晖内网IP.
# local_port = xxxxxx
# 群晖内网HTTP端口,默认为5000.
# remote_port = xxxx
# 映射到外网端口,暴露给服务器,这个客户端必须唯一
# subdomain = nas
# 全局下唯一的子域名,你的访问地址将会是http://subdomain.xxx.xxx,服务器端必须已绑定顶级域名,否则不要设置;
# 此外,顶级域名需要在域名系统上做好CNAME的泛解析,否则不可用。HOST:*.xxx.xxx;Value:xxx.xxx。

FRPC配置文件frpc.ini详解

frpc 是一款轻量级的反向代理客户端,用于实现内网穿透功能。它需要与 frps 服务端配合使用。以下是 frpc 的配置文件格式和示例。

1. 配置文件格式

从 frp 0.52.0 版本开始,支持 TOML、YAML 和 JSON 配置文件格式,并逐渐弃用 INI 格式。以下以 TOML 格式 为例进行说明。

2. 配置文件示例

以下是 frpc 的基本配置文件示例,用于将本地的 SSH 服务(端口 22)映射到公网:

# frpc.toml 配置文件示例
# 服务端基本信息
serverAddr = "your_server_ip"   # frps 服务端的公网 IP 地址
serverPort = 7000               # frps 服务端监听的端口
auth.method = "token"           # 认证方式(默认为 token)
auth.token = "your_token"       # 与服务端一致的认证 token
# 是否启用 TLS 加密
transport.tls.enable = false
# 定义一个隧道
[[proxies]]
name = "ssh"                    # 隧道名称,可自定义
type = "tcp"                    # 隧道类型(tcp、http、https 等)
localIP = "127.0.0.1"           # 本地服务的 IP 地址
localPort = 22                  # 本地服务的端口
remotePort = 20022              # 远程映射的端口

3. 配置文件说明

- serverAddr 和 serverPort:指定 frps 服务端的地址和端口[^39^]。 - auth.token:用于与服务端进行身份验证,确保连接的安全性[^39^]。 - proxies:定义一个或多个隧道,每个隧道可以配置不同的服务类型和端口[^39^]。 - type:支持多种协议类型,如 tcp、http、https 等[^39^]。 - localIP 和 localPort:指定本地服务的 IP 和端口[^39^]。 - remotePort:指定远程映射的端口,用于从公网访问本地服务[^39^]。

4. 配置文件路径

通常,frpc 的配置文件(如 `frpc.toml`)放置在 `/usr/local/frpc` 目录下[^41^]。你可以通过以下命令创建目录并编辑配置文件:

mkdir -p /usr/local/frpc
cd /usr/local/frpc
vim frpc.toml

5. 启动 frpc

配置完成后,使用以下命令启动 frpc:

./frpc -c frpc.toml

或者使用 systemd 管理服务[^41^]:

# 创建 systemd 服务文件
vi /etc/systemd/system/frpc.service
# 添加以下内容
[Unit]
Description=frpc service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml
[Install]
WantedBy=multi-user.target
# 启动服务
systemctl start frpc
systemctl enable frpc

通过以上步骤,你可以在 CentOS 中完成 frpc 的配置,实现内网服务的外网访问[^41^]。

搭建手记

大鹿搭建frp反向代理服务的背景:

2025/3/7 复习群晖nas中的设置步骤

  1. 高级设置
    1. 使用高权限执行容器
    2. 容器名称 oldiy-frpc1
    3. CPU优先顺序 自动
    4. 内存限制 无限制
  2. 存储空间
    1. 添加frpc配置文件的路径
    2. 但是需要注意的是,装载路径:/frp/frp.ini # 这是docker的装载路径,不是nas的本地路径
  3. 网络
  4. 端口设置
  5. 链接
  6. 环境
    1. 可变 值:
      1. PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr……
      2. FRP_VERSION 0.26.0
    2. entrypoint:的执行命令
    3. /bin/sh -c /frpc -c /frp/frpc.ini

2025/02/18 frps服务器搬迁到阿里云ECS

FRPS使用0.53.2版本,FRPC依旧采用0.26.0

  1. 注意点:
    1. FRPS端使用toml文件,文字类加“““”符号;
    2. FRPC端重新配置,修改域名
    3. 注意域名要有泛解析:CNAME
    4. 注意如果保留原本frpc.ini的话,首先移出docker位置,启动成功后再保存回来,或者备份到别的地址,不要放两个*.ini在一个位置,哪怕名字不一样,什么原因不清楚。

2021/12/6 多http及ssh服务的问题解决

2021/12/1后记

关于nas也可以借助FRPS运用远程ssh进行完全管理