有一个闲置的小米 mini路由器,查了一下配置还不错,CPU是MT7620,内存128M,ROM16M。可以刷openwrt。然后就学着自己编译了一下openwrt
编译过程只是跟着教程做https://www.moewah.com/archives/4003.html
结果成功了,但是我想要装的frpc太大了,编译安装后,虽然好像是装上了但用不了,估计还是因为体积的问题。查了一下就发现有xfrpc这个替代品。
服务器端
用了DOCKER镜像ppjoin/xfrps,配置和frps差不多,可以用DOCKER命令进到容器内修改配置文件,下面附上默认的配置
[common]
bind_addr = 0.0.0.0
# 监听端口
bind_port = 7000
# 这两个配置是分别给http和https 类型的tunnel用的
vhost_http_port = 7001
vhost_https_port = 7002
# 访问xfrps控制面板的端口
dashboard_port = 7003
# xfrps控制面板 登录用户名
dashboard_user = admin
# xfrps控制面板 用户密码
dashboard_pwd = 12345678
# 日志文件路径
log_file = /config/frps.log
# 日志级别,可选的值有 trace, debug, info, warn, error
log_level = info
# 日志保留天数
log_max_days = 7
# privilege 模式(当前唯一支持的模式)密码,客户端填写时需要与这个一样
privilege_token = 12345678
# 心跳超时设置,不建议修改默认值(默认是90)
# heartbeat_timeout = 90
# 允许客户端绑定的端口,如果留空,表示没有任何限制
privilege_allow_ports = 7004-7100
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 5
# authentication_timeout means the timeout interval (seconds) when the frpc connects frps
# if authentication_timeout is zero, the time is not verified, default is 900s
authentication_timeout = 900
# 配置http或https类型的tunnel时需要这个
# 假设这里填写的是 ppjoin.com , 客户端那边的subdomain值是test,
# 那么最终访问的域名是: test.ppjoin.com
subdomain_host = ppjoin.com
# 是否开启tcp_mux, 注意客户端这个项的值要与这里一致
tcp_mux = false
客户端
xfrpc是有WEB管理界面的,但是好像得自己下载,我编译的时候没找到,就没装。xfrpc的配置在“/etc/config/“目录的xfrpc文件内如下
config xfrp 'init'
option disabled 0
option loglevel 7
config xfrpc 'common'
option server_addr 127.0.0.1
option server_port 7000
option privilege_token abcdef
option auth_token abcdef
config xfrpc 'ssh01'
option type tcp
option local_ip 192.168.1.1
option local_port 80
option remote_port 7100
#config xfrpc 'ftp01'
# option type ftp
# option local_ip 127.0.01
# option local_port 21
# option remote_port 8021
# option remote_data_port 8022
#config xfrpc 'web01'
# option type http
# option local_ip 127.0.0.1
# option local_port 8080
#config xfrpc 'web02'
# option type https
# option local_ip 127.0.0.1
# option local_port 8443
这里的配置和frpc有点区别,其实是一样的,frpc的服务起动时会根据上面的内容在“/var/etc/”目录下面生成一个名为xfrpc.ini的配置文件。xfrpc的服务脚本如下
#!/bin/sh /etc/rc.common
# Copyright (C) 2022 Dengfeng Liu <liu_df@qq.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
#
START=99
USE_PROCD=1
NAME=xfrpc
PROG=/usr/bin/$NAME
handle_xfrpc() {
local name="$1"
local config="$2"
echo "[$name]" >> "$config"
handle_type() {
uci_validate_section xfrpc xfrpc "$name" \
'type:or("tcp", "udp", "ftp", "http", "https")' \
'local_ip:ipaddr:127.0.0.1' \
'local_port:uinteger'
echo "type = $type" >> "$config"
echo "local_ip = $local_ip" >> "$config"
echo "local_port = $local_port" >> "$config"
case "$type" in
"tcp"|"udp")
config_get remote_port "$name" remote_port
echo "remote_port = $remote_port" >> "$config"
;;
"ftp")
config_get remote_port "$name" remote_port
config_get remote_data_port "$name" remote_data_port
echo "remote_port = $remote_port" >> "$config"
echo "remote_data_port = $remote_data_port" >> "$config"
;;
esac
}
if [ "$name" = "common" ]; then
uci_validate_section xfrpc xfrpc "$name" \
'server_addr:ipaddr' \
'server_port:uinteger' \
'privilege_token:string'
[ -z "$privilege_token" ] && {
echo "no privilege_token"
exit
}
echo "server_addr = $server_addr" >> "$config"
echo "server_port = $server_port" >> "$config"
echo "privilege_token = $privilege_token" >> "$config"
else
handle_type
fi
}
service_triggers() {
procd_add_reload_trigger "$NAME"
}
start_service() {
local conf_file="/var/etc/$NAME.ini"
> "$conf_file"
config_load "$NAME"
uci_validate_section xfrpc xfrpc init \
'disabled:bool:1' \
'loglevel:uinteger:0'
if [ $disabled = 1 ]; then
echo "xfrpc service disabled"
return
fi
config_foreach handle_xfrpc xfrpc "$conf_file"
procd_open_instance
procd_set_param command "$PROG" -c "$conf_file" -f -d $loglevel
procd_set_param file "$conf_file"
procd_set_param respawn
procd_close_instance
}
reload_service() {
stop
start
}
这期间出现一个问题,我用的这个服务器需要客户端提供“privilege_token”,而我装的客户端里用的身份验证字段是“auth_token”,于是我把客户端的配置文件和服务文件内的auth_token全替换成了privilege_token。可以看到上面的代码是已经替换过的。
然后就可以正常使用了,非常的小,16M的ROM装还能剩下7M左右空闲。
转载请注明:HANLEI'BLOG » 给openwrt配置xfrpc