1,配置FRPS,反向代理服务器端

1.1配置frps首先需要购买一台阿里云服务器。

打开阿里云控制台,控制台中搜索ECS云服务器,99块钱一年你就可以得到一个2核2GIB的云端服务器,并且续费也是99一年,至少我写这篇文章的时候(2025年11月16日)是这样的政策。

根据阿里云的系统Alibaba Cloud Linux 3.2104 LTS 64位,在github上下载对应操作系统的frp压缩包。https://github.com/fatedier/frp/releases
 

1.2配置阿里云frps
 

使用mobaxterm的SSH功能登录阿里云服务器,创建一个专用的目录:
mkdir -p /usr/local/frp
cd /usr/local/frp

下载frp,在mobaxterm窗口中输入命令:
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz


# 解压

tar -zxvf frp_0.65.0_linux_amd64.tar.gz

# 进入解压后的目录

cd frp_0.65.0_linux_amd64

# 查看文件列表

ls -l

可以看到这样的文件:
frps*    frps.toml    frpc*    frpc.toml

我们打开frps:vi frps.toml,然后配置如下参数(密码和端口都可以自行修改webServer.addr设置为全0指的是可以从任何地方访问frp管理界面,这里可以不改):

bindPort = 7023
auth.token = "1234567890"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "qwer"
webServer.password = "qwer123"

transport.tcpMux = true

log.level = "info"
log.maxDays = 3
 

bindPort和auth.token和后面要配置的frps中要一致,而webServer相关的信息配置是为了可以在网页上看到FRP在干啥,如下图,该网页的登录方法为:http://阿里云公网IP:webServer.port

公网IP在这里找:

1.3启动frps
 

直接在当前目录下运行命令
./frps -c frps.toml

然后可以看到以下输出信息,显示启动成功了

frps uses config file: frps.toml

frps tcp listen on 0.0.0.0:7000

frps started successfully

dashboard listen on 0.0.0.0:7500

如果能在浏览器直接根据公网IP和webServer.port打开frp管理后台就代表成功了。

下面还得配置一个开启自启动,刚刚./frps -c frps.toml启动 frps 的。这种方式下,服务运行在前台,并且与当前终端窗口绑定。一旦关闭 SSH 连接或终端窗口,frps 进程就会随之终止,内网穿透服务就中断了!

在服务器上执行:sudo vi /etc/systemd/system/frps.service
粘贴如下内容:

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frp_0.65.0_linux_amd64/frps -c /usr/local/frp/frp_0.65.0_linux_amd64/frps.toml

[Install]
WantedBy=multi-user.target
保存并退出,依次执行如下命令:
# 重新加载 systemd 配置,使其识别新的 frps 服务

sudo systemctl daemon-reload

# 设置 frps 开机自启

sudo systemctl enable frps

# 启动 frps 服务

sudo systemctl start frps

# 检查 frps 服务状态,查看是否正常运行

sudo systemctl status frps

而后在阿里云服务器管理界面重启服务器

重启登录服务器之后,可以使用以下命令来管理 frps:

  • 启动服务sudo systemctl start frps

  • 停止服务sudo systemctl stop frps

  • 重启服务sudo systemctl restart frps

  • 查看状态sudo systemctl status frps

  • 查看日志sudo journalctl -u frps -f
    可以看到frps正在运行之中,至此frps配置完毕!


2、配置FRPC,反向代理客户端。

2.1开发板网络配置

首先要让开发板能够连接互联网,我的开发板是百问网开发板100ASK_IMX6ULL_PRO,使用网线直接连接eht1,而后执行命令udhcpc -i eht1,再ping www.baidu.com可以看到网络连接成功了。
 

[root@100ask:~]# udhcpc -i eth1
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending select for 192.168.1.8
udhcpc: lease of 192.168.1.8 obtained, lease time 86400
deleting routers
adding dns 192.168.1.1
[root@100ask:~]# ping www.baidu.com
PING www.baidu.com (183.2.172.177): 56 data bytes
64 bytes from 183.2.172.177: seq=0 ttl=53 time=10.520 ms
64 bytes from 183.2.172.177: seq=1 ttl=53 time=10.584 ms
64 bytes from 183.2.172.177: seq=2 ttl=53 time=10.749 ms
64 bytes from 183.2.172.177: seq=3 ttl=53 time=32.890 ms
64 bytes from 183.2.172.177: seq=4 ttl=53 time=10.557 ms
^C
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 10.520/15.060/32.890 ms
[root@100ask:~]#

2.2开发板下载frp并配置frpc.toml

[root@100ask:~]# uname -m
armv7l
开发板的版本是arm32位的,我们执行命令:
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_arm.tar.gz
然后,访问失败了!

[root@100ask:~]# wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_arm.tar.gz
--2025-11-24 15:38:18--  https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_arm.tar.gz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
ERROR: The certificate of 'github.com' is not trusted.
ERROR: The certificate of 'github.com' doesn't have a known issuer.

可能github是外网的缘故,具体原因我也懒得去找了,直接在windows上进入github下载!
https://github.com/fatedier/frp/releases

下载好以后,我们直接把压缩包拖到ubuntu中去,然后通过adb push发送给开发板。

进入开发板/root 目录下,解压得到开发板系统所需的frp压缩包以后,打开frpc.toml
vi frpc.toml,粘贴如下内容,并修改:
serverAddr = "47.113.123.123"#这里要填公网IP

serverPort = 7023#这里和frps.toml的bindPort一致

auth.token = "1234567890"#与frps中一致

# SSH服务穿透

[[proxies]]

name = "imx6ull-ssh"

type = "tcp"

localIP = "127.0.0.1"

localPort = 22

remotePort = 2222#这里是通过这个端口暴露在公网上,后面从远程登录开发板要使用

2.3配置阿里云入口规则

阿里云的云服务器ECS安全组中配置入口规则,点击管理规则

自定义TCP,选择任意来源,端口填frpc.toml的remotePort:


2.4启动frpc

开发板上执行命令来启动frpc,
chmod +x frpc
./frpc -c frpc.toml

如果开发板没有密码那么还需要在开发板上使用passwd命令来设置一个登录密码,提高安全性。


2.5远程登录开发板

使用mobaxterm,打开一个SSH窗口,输入公网IP,暴露的端口就可以直接进入开发板系统了!到这里就已经实现远程开发板登录了!!!后面还需要配置,开启自启动frpc和自动联网,。

2.6配置IMX6ULL开发板启动时自联网

在中 /etc/network/interfaces添加配置如下命令开机自联网
# 配置eth1(网线接口)自动获取IP

auto eth1

iface eth1 inet dhcp

pre-up /sbin/ifconfig eth1 up

reboot开发板。重启以后,ping www.baidu.com查看是否自动连接了互联网。
 

2.7配置开机自运行frpc

frpc运行的前提是要连接frps服务器,所以在运行frpc之前要确保开发板是已经能够联通网络了才行!列出启动脚本,可以看到network为S40

[root@100ask:~]# ls /etc/init.d/
S01syslogd  S02sysctl   S100lvgl  S10udev     S30dbus     S44modem-manager    S49ntp        S50pulseaudio  S50telnet   S98swupdate  bluetooth  rcS
S02klogd    S09modload  S101frpc  S20urandom  S40network  S45network-manager  S50mosquitto  S50sshd        S80dnsmasq  S99adbd      rcK

所以我新建一个启动脚本:vi /etc/init.d/S101frpc,S101在S40之后启动,但是
问题不是启动顺序
,而是网络就绪检测。即使S101在网络服务之后启动,但:

  1. S40network启动​ ≠ 网络立即就绪

  2. 网络服务启动后还需要时间获取IP、建立路由

  3. frpc在S101启动时,网络可能还未完全就绪
     

所以我们需要在启动脚本中注意对网络的监测,网络成功后再启动fprc,S101frpc内容(智能守护进程)如下:

#!/bin/sh
# FRP客户端启动脚本

DAEMON="/root/frp_0.65.0_linux_arm/frpc"
CONFIG="/root/frp_0.65.0_linux_arm/frpc.toml"
LOG_FILE="/var/log/frpc.log"
PID_FILE="/var/run/frpc.pid"

# 启动函数
start_frpc() {
    echo "启动FRP客户端..."
    
    # 检查是否已运行
    if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2>/dev/null; then
        echo "FRP客户端已在运行"
        return 0
    fi
    
    # 清理旧PID文件
    rm -f $PID_FILE
    
    # 后台启动网络检测和FRP
    {
        # 等待网络就绪(最多30秒)
        counter=0
        while [ $counter -lt 30 ]; do
            # 检查网络连通性
            if ping -c 1 -W 1 8.8.8.8 >/dev/null 2>&1; then
                echo "网络就绪,启动FRPC"
                break
            fi
            sleep 1
            counter=$((counter + 1))
        done
        
        # 启动FRPC
        cd /root/frp_0.65.0_linux_arm
        ./frpc -c frpc.toml >> $LOG_FILE 2>&1 &
        echo $! > $PID_FILE
        echo "FRPC启动完成 (PID: $"
    } &
    
    echo "FRP启动进程已提交到后台"
}

# 停止函数
stop_frpc() {
    echo "停止FRP客户端..."
    if [ -f $PID_FILE ]; then
        kill $(cat $PID_FILE) 2>/dev/null
        rm -f $PID_FILE
    fi
    pkill -f "frpc.*toml"
    echo "FRP客户端已停止"
}

# 状态检查
status_frpc() {
    if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2>/dev/null; then
        echo "FRP客户端正在运行 (PID: $(cat $PID_FILE))"
        # 检查连接状态
        if tail -n 5 $LOG_FILE 2>/dev/null | grep -q "login to server success"; then
            echo "连接状态: 已连接到服务器"
        else
            echo "连接状态: 连接中或连接失败"
        fi
    else
        echo "FRP客户端未运行"
        rm -f $PID_FILE
    fi
}

case "$1" in
    start)
        start_frpc
        ;;
    stop)
        stop_frpc
        ;;
    restart)
        stop_frpc
        sleep 2
        start_frpc
        ;;
    status)
        status_frpc
        ;;
    log)
        tail -f $LOG_FILE
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status|log}"
        exit 1
        ;;
esac

配置好后再次reboot,打印提示创建成功frpc,ps看看frpc是否在运行,然后就可以再次使用mobaxterm远程登录开发板了!


为了防止暴露的fprc被暴力破解密码,需要加固安全配置,包括不要使用rootadmin作为用户名,SSH密码至少12位,包含大小写字母+数字+符号,建议用ssh-keygen生成密钥对登录。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐