如果在安装过程中遇到问题,请参考本指南。
go: github.com/google/gopacket@v1.2.3: reading github.com/google/gopacket/go.mod at revision v1.2.3: unknown revision v1.2.3
已修复 go.mod 文件。请执行以下步骤:
cd /path/to/dhcp-dns-manager
sudo ./install.sh
# 1. 进入项目目录
cd /path/to/dhcp-dns-manager
# 2. 删除旧的 go.sum(如果有)
rm -f go.sum
# 3. 清理模块缓存
go clean -modcache
# 4. 重新下载依赖
go mod download
# 5. 整理依赖
go mod tidy
# 6. 编译
go build -o dhcp-dns-manager ./cmd
error: gcc failed: command not found
需要安装 GCC 编译器:
Debian/Ubuntu:
sudo apt update
sudo apt install build-essential
RHEL/CentOS:
sudo yum install gcc make
然后重新编译:
go build -o dhcp-dns-manager ./cmd
sqlite3.h: No such file or directory
需要安装 SQLite 开发库:
Debian/Ubuntu:
sudo apt install libsqlite3-dev
RHEL/CentOS:
sudo yum install sqlite-devel
然后重新编译:
CGO_ENABLED=1 go build -o dhcp-dns-manager ./cmd
go: module requires Go 1.21
安装最新版 Go:
# 1. 下载
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
# 2. 解压
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
# 3. 添加到 PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# 4. 验证
go version
如果自动安装脚本失败,可以手动安装:
# Debian/Ubuntu
sudo apt update
sudo apt install -y git build-essential libsqlite3-dev
# RHEL/CentOS
sudo yum install -y git gcc make sqlite-devel
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
cd /path/to/dhcp-dns-manager
# 下载依赖
go mod download
go mod tidy
# 编译
CGO_ENABLED=1 go build -o dhcp-dns-manager ./cmd
sudo nano /etc/systemd/system/dhcp-dns-manager.service
内容:
[Unit]
Description=DHCP & DNS Manager Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/dhcp-dns-manager
ExecStart=/path/to/dhcp-dns-manager/dhcp-dns-manager -config /path/to/dhcp-dns-manager/configs/config.json
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable dhcp-dns-manager
sudo systemctl start dhcp-dns-manager
sudo systemctl status dhcp-dns-manager
# UFW
sudo ufw allow 53/udp
sudo ufw allow 67/udp
sudo ufw allow 8080/tcp
# Firewalld
sudo firewall-cmd --permanent --add-port=53/udp
sudo firewall-cmd --permanent --add-port=67/udp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
systemctl status dhcp-dns-manager
sudo netstat -ulpn | grep -E ':(53|67|8080)'
http://your-server-ip:8080
| 错误 | 原因 | 解决方案 |
|---|---|---|
go: not found |
Go 未安装 | 安装 Go 1.21+ |
gcc: command not found |
缺少编译器 | 安装 build-essential |
sqlite3.h: No such file |
缺少 SQLite 头文件 | 安装 libsqlite3-dev |
permission denied |
权限不足 | 使用 sudo |
port already in use |
端口被占用 | 修改 config.json 端口 |
module not found |
依赖未下载 | 运行 go mod download |
如果以上方法都无法解决问题:
查看详细日志:
journalctl -u dhcp-dns-manager -f
检查 Go 环境:
go version
go env
提交 Issue 时请提供:
最后更新: 2026-04-23