This commit is contained in:
2026-05-14 13:18:57 +08:00
parent b12b0f0356
commit 58fe23e5ef
7 changed files with 168 additions and 12 deletions

Binary file not shown.

35
config.yml Normal file
View File

@@ -0,0 +1,35 @@
# BIRD 核心配置
# BIRD 控制套接字路径。OpenWrt 默认通常在 /var/run/bird.ctl 或 /var/run/bird/bird.ctl
bird_socket: "/var/run/bird.ctl"
# 是否限制 BIRD 命令。开启后只允许 "show protocols" 和 "show route",增强安全性。
bird_restrict_cmds: true
# 代理服务监听配置
# 格式为 "IP:端口""0.0.0.0:8000" 表示监听所有网卡的 8000 端口
listen: "0.0.0.0:8000"
# 访问控制 (白名单)
# 允许访问此代理的 IP 或网段,用逗号分隔。
# 如果不设置,则任何 IP 都能访问该 Proxy。
# 建议只填写 Frontend (前端网页端) 所在的服务器 IP。
allowed_ips: "10.188.0.0/16"
# Traceroute 工具配置
# 自动寻找系统中的 traceroute 命令路径
traceroute_bin: "/etc/birdlg/nexttrace/traceroute"
# Traceroute 运行参数 (例如使用 ICMP 而非 UDP或者指定探测次数)
# 如果不确定,可以保持为空 ""
traceroute_flags: "-q 1 -w 2"
# 是否显示原始输出
# 设置为 false 则会经过格式化,更美观
traceroute_raw: false
# 最大并发 traceroute 请求数,防止路由器 CPU 被瞬间撑爆
traceroute_max_concurrent: 5
# VRF 配置 (仅限 Linux)
# 如果你的 BIRD 运行在特定的 VRF 实例中,请填写 VRF 接口名
# vrf: "mgmt"

View File

@@ -1,20 +1,77 @@
#!/bin/bash #!/bin/bash
# 克隆仓库 # --- 1. 环境准备 ---
# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then
echo "请以 root 权限运行此脚本"
exit 1
fi
# 提示用户选择系统类型
echo "请选择服务引导类型:"
echo "1) Systemd (Ubuntu, Debian, CentOS, etc.)"
echo "2) OpenWrt / iStoreOS (Procd)"
echo "3) Alpine Linux (OpenRC)"
read -p "请输入选项 [1-3]: " TYPE
# --- 2. 源码下载与基础安装 ---
echo "正在克隆仓库并准备目录..."
# 如果目录已存在,先删除(可选)或跳过
rm -rf birdlgp
git clone https://git.nia.ink/unet/birdlgp git clone https://git.nia.ink/unet/birdlgp
# 创建目录 mkdir -p /etc/birdlg
sudo mkdir -p /etc/birdlg
# 移动文件 # 移动程序和配置
sudo mv birdlgp/bird-lgproxy-go /etc/birdlg/bird-lgproxy-go if [ -f "birdlgp/bird-lgproxy-go" ]; then
sudo mv birdlgp/birdlgp.service /etc/systemd/system/birdlgp.service mv birdlgp/bird-lgproxy-go /etc/birdlg/bird-lgproxy-go
mv birdlgp/config.yml /etc/birdlg/config.yml
else
echo "错误:仓库中未找到 bird-lgproxy-go请检查仓库内容。"
exit 1
fi
# 赋予权限 # 赋予合理权限 (程序 755, 配置 644)
sudo chmod 777 /etc/birdlg/* chmod 755 /etc/birdlg/bird-lgproxy-go
chmod 644 /etc/birdlg/config.yml
# 启动服务并设置开机自启 # --- 3. 根据类型配置引导 ---
sudo systemctl start birdlgp.service case $TYPE in
sudo systemctl enable birdlgp.service 1)
echo "配置 Systemd 服务..."
mv birdlgp/service/birdlgp.service /etc/systemd/system/birdlgp.service
systemctl daemon-reload
systemctl enable birdlgp.service
systemctl start birdlgp.service
;;
2)
echo "配置 OpenWrt 服务..."
mv birdlgp/service/bird-lgp-openwrt /etc/init.d/bird-lg-proxy
chmod +x /etc/init.d/bird-lg-proxy
/etc/init.d/bird-lg-proxy enable
/etc/init.d/bird-lg-proxy start
;;
3)
echo "配置 Alpine 服务..."
mv birdlgp/service/bird-lgp-alpine /etc/init.d/bird-lg-proxy
chmod +x /etc/init.d/bird-lg-proxy
rc-update add bird-lg-proxy default
rc-service bird-lg-proxy start
;;
*)
echo "无效选项,脚本退出。"
exit 1
;;
esac
echo "Birdlgp服务已成功安装并启动。" # --- 4. 善后 ---
rm install.sh
rm -rf birdlgp
echo "------------------------------------------------"
echo "Birdlgp 服务已成功安装并启动!"
echo "配置文件路径: /etc/birdlg/config.yml"
echo "程序路径: /etc/birdlg/bird-lgproxy-go"
echo "------------------------------------------------"

BIN
nexttrace/nexttrace Normal file

Binary file not shown.

30
service/bird-lgp-alpine Normal file
View File

@@ -0,0 +1,30 @@
#!/sbin/openrc-run
# 服务名称
name="bird-lgproxy"
description="Bird Looking Glass Proxy (Go)"
# 程序路径和参数
command="/etc/birdlg/bird-lgproxy-go"
command_args="-config /etc/birdlg/config.yml"
pidfile="/run/${RC_SVCNAME}.pid"
command_background="yes"
# 自动重启配置(如果程序崩溃)
respawn_delay=5
respawn_max=10
depend() {
# 确保在网络和 bird 启动后再启动
need net
after bird
}
start_pre() {
# 启动前的检查:确保配置文件存在
if [ ! -f "/etc/bird-lg/bird-lgproxy.yaml" ]; then
eerror "Configuration file /etc/bird-lg/bird-lgproxy.yaml not found!"
return 1
fi
}

34
service/bird-lgp-openwrt Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/sh /etc/rc.common
# 启动优先级,通常在网络启动后
START=99
USE_PROCD=1
# 程序路径和配置文件路径(根据你的实际情况修改)
PROG="/etc/birdlg/bird-lgproxy-go"
CONF="/etc/birdlg/config.yml"
start_service() {
# 检查程序是否存在
[ -f "$PROG" ] || return 1
procd_open_instance "bird-lgproxy"
# 执行程序命令,-c 指定配置文件(请根据 bird-lg-go 的实际参数调整)
# 如果 bird-lgproxy-go 默认在当前目录找 config.yml可以用 procd_set_param chdir
procd_set_param command "$PROG" -config "$CONF"
# 自动重启设置如果程序崩溃5秒后重启
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
# 错误日志和标准输出重定向到系统日志
procd_set_param stderr 1
procd_set_param stdout 1
procd_close_instance
}
stop_service() {
# 停止时的操作procd 会自动处理信号
return 0
}