0x01 前言
搭建一个DNSLog平台需要准备以下:
- 购买一个合法域名
- 具有公网IP的服务器
我使用的是阿里云ECS服务器(Linux)、阿里云域名解析服务,其他平台类似。
我们都知道DNS就是将域名解析为ip,用户在浏览器上输入一个域名A.com,
就要靠DNS服务器将A.com解析到它的真实ip127.0.0.1,
这样就可以访问127.0.0.1服务器上的相应服务。
DNSlog就是存储在DNS服务器上的域名信息,
它记录着用户对域名 www.baidu.com 等的访问信息,类似日志文件。
0x02 域名解析配置
- 首先在域名解析中添加一条
A记录
,记录值为服务器公网IP:
- 创建
NS记录
,记录值为上一步创建的A记录:
- 在域名控制台设置
自定义DNS Host
,创建DNS服务器:
0x03 云服务器配置
- 下载DNSLog平台到服务器
GitHub地址: https://github.com/lanyi1998/DNSlog-GO.git
在服务器中输入
wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.2/DNSlog-GO-linux.zip
- 解压
unzip DNSlog-GO-linux.zip
- 进入目录后使用
screen
保证DNSLog平台可以在后台运行
# 没有安装screen可以通过包管理器安装,已安装则跳过
yum install screen #Centos
apt-get install screen #Ubuntu
- 创建新的
screen
,使用该命令后会自动进入该screen:
screen -S dnslog
- 修改配置文件
config.yaml
:
HTTP:
port: 8000
#{"token":"用户对应子域名"}
user: { "password": "dnslog" }
consoleDisable: false
Dns:
domain: q1jun.cn
- 启动DNSLog平台:
sudo chmod +x ./main
./main
- 在ECS服务器控制台->安全组,开放53(UDP)和8000(TCP)端口。
- 浏览器输入IP:8000进入DNSLog平台,根据提示输入设置的token
password
即可进入。
0x04 Nginx配置(可选)
由于本人不喜欢通过IP+端口
或者域名+端口
的方式访问页面,我一般通过Nginx的方向代理转发端口,这样做的好处是不需要在在ECS服务器控制台->安全组
开放8000
端口,在访问的时候不需要记住端口号,也不怕被人扫端口。
- Nginx配置:
server {
listen 80;
server_name dns.q1jun.cn; #新建的A记录
access_log /var/log/nginx/dnslog.access.log main;
root /usr/share/nginx/html;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000; #转发端口
# 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
client_max_body_size 20000m;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 在域名云解析DNS中添加一条
A记录
:dns.q1jun.cn
作为访问DNSLog平台的域名。 - 重启nginx
nginx -s reload
搭建成功: