# DNSLog 平台部署指南
本文档介绍如何将 DNSLog 平台部署到公网服务器。
## 部署架构
推荐使用 **前后端分离构建,统一服务** 的模式:
1. 构建前端 Vue 项目,生成静态文件 (`dist` 目录)。
2. 构建后端 Go 项目,生成可执行文件。
3. 后端程序同时提供 API 服务和静态文件服务。
## 部署步骤
### 1. 准备工作
确保服务器已安装:
– Go 1.18+
– Node.js 16+ (用于构建前端)
– Git
### 2. 构建前端
在 `frontend` 目录下执行:
“`bash
cd frontend
npm install
npm run build
“`
构建完成后,会在 `frontend/dist` 目录生成静态文件。
### 3. 准备后端环境
将 `frontend/dist` 目录复制到项目根目录下的 `dist` 文件夹:
“`bash
# 在项目根目录执行
mkdir -p dist
cp -r frontend/dist/* dist/
“`
### 4. 构建后端
在项目根目录执行:
“`bash
# Windows
go build -o dnslog.exe main.go
# Linux
go build -o dnslog main.go
“`
### 5. 配置
修改 `config/config.yaml`:
“`yaml
server:
web_port: 80 # 建议修改为 80
dns_port: 53 # DNS服务必须使用 53 端口
domain: log.example.com # 您的公网域名
domains:
– log.example.com
– other.example.com
dns_response_ip: 127.0.0.1 # 建议设置为 127.0.0.1 或其他无关 IP,避免泄露服务器真实 IP
“`
### 6. 运行
“`bash
# Linux (需要 root 权限以监听 53 端口)
sudo ./dnslog
# Windows (管理员权限)
dnslog.exe
“`
### 7. DNS 解析配置
在您的域名服务商处(如阿里云、腾讯云、GoDaddy):
1. 添加 A 记录:`ns1.log.example.com` -> 指向您的服务器 IP。
2. 添加 NS 记录:`log.example.com` -> 指向 `ns1.log.example.com`。
这样,所有 `*.log.example.com` 的 DNS 查询都会发送到您的服务器。
## 隐私与安全建议
### 隐藏真实 IP
`dns_response_ip` 配置项决定了当有人查询您的域名时,DNS 服务器返回的 A 记录 IP 地址。
– **不要**将其设置为您的服务器真实 IP,否则扫描器可以通过 DNS 响应获取您的 IP。
– **建议**设置为 `127.0.0.1`。这不仅隐藏了您的 IP,在 SSRF 测试中还经常用于探测目标内网。
### 隐藏 Web 管理端
虽然 DNS 服务 (UDP 53) 必须暴露公网 IP(除非使用端口转发中转),但 Web 管理端 (TCP 80/443) 可以隐藏:
1. 使用 **Cloudflare** 等 CDN 代理 Web 流量。
2. 配置 Nginx 反向代理,只允许特定 IP 访问 Web 端口。
3. 修改 `config.yaml` 中的 `web_port` 为非标准端口。
### 端口被占用
如果 53 端口被 `systemd-resolved` 占用(Ubuntu 常见):
“`bash
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
# 修改 /etc/resolv.conf 设置默认 DNS (如 8.8.8.8)
“`
## 访问与验证
### 1. 配置云服务器防火墙 (安全组)
在您的云服务商控制台(如阿里云 ECS 安全组、腾讯云 CVM 安全组),**必须**开放以下端口:
| 端口 | 协议 | 用途 | 说明 |
| :— | :— | :— | :— |
| **53** | **UDP** | DNS 服务 | **必须开放**,否则无法接收 DNS 请求 |
| **80** | **TCP** | Web 管理 | 用于访问网页版控制台 |
| **80** | **UDP** | Web 管理 | (可选) 如果使用 HTTP/3 |
### 2. 访问 Web 控制台
部署并运行后,在浏览器访问:
`http://您的公网IP` (如果您配置的是 80 端口)
或
`http://您的公网IP:8081` (如果您配置的是其他端口)
### 3. 验证 DNS 服务
在本地电脑打开终端 (cmd 或 terminal),执行:
“`bash
nslookup test.log.example.com 您的公网IP
“`
如果返回了您配置的 `dns_response_ip` (如 127.0.0.1),说明 DNS 服务运行正常。
### 后台运行
建议使用 `systemd` 或 `supervisor` 管理进程。
示例 `systemd` 配置 (`/etc/systemd/system/dnslog.service`):
“`ini
[Unit]
Description=DNSLog Platform
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/dnslog
ExecStart=/path/to/dnslog/dnslog
Restart=always
[Install]
WantedBy=multi-user.target






请登录后查看回复内容