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 域名解析配置

  1. 首先在域名解析中添加一条A记录,记录值为服务器公网IP:

image-20220718185553960

  1. 创建NS记录,记录值为上一步创建的A记录:

image-20220718185748098

  1. 在域名控制台设置自定义DNS Host,创建DNS服务器:

image-20220718185954758

0x03 云服务器配置

  1. 下载DNSLog平台到服务器

GitHub地址: https://github.com/lanyi1998/DNSlog-GO.git

在服务器中输入

1
wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.2/DNSlog-GO-linux.zip
  1. 解压
1
unzip DNSlog-GO-linux.zip
  1. 进入目录后使用screen保证DNSLog平台可以在后台运行
1
2
3
# 没有安装screen可以通过包管理器安装,已安装则跳过
yum install screen #Centos
apt-get install screen #Ubuntu
  1. 创建新的screen,使用该命令后会自动进入该screen:
1
screen -S dnslog
  1. 修改配置文件config.yaml
1
2
3
4
5
6
7
HTTP:
port: 8000
#{"token":"用户对应子域名"}
user: { "password": "dnslog" }
consoleDisable: false
Dns:
domain: q1jun.cn
  1. 启动DNSLog平台:
1
2
sudo chmod +x ./main
./main
  1. 在ECS服务器控制台->安全组,开放53(UDP)和8000(TCP)端口。
  2. 浏览器输入IP:8000进入DNSLog平台,根据提示输入设置的tokenpassword即可进入。

0x04 Nginx配置(可选)

由于本人不喜欢通过IP+端口或者域名+端口的方式访问页面,我一般通过Nginx的方向代理转发端口,这样做的好处是不需要在在ECS服务器控制台->安全组开放8000端口,在访问的时候不需要记住端口号,也不怕被人扫端口。


  1. Nginx配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}
}
  1. 在域名云解析DNS中添加一条A记录:dns.q1jun.cn作为访问DNSLog平台的域名。

  2. 重启nginx

1
nginx -s reload

搭建成功:

image-20220718192506966