Linux下监听53号端口捕获DNS查询报文

本文介绍如何在Linux环境下监听53号端口,以捕获DNS查询报文。通过停止系统服务,修改配置,并编写监听程序,实现DNS解析器功能。在捕获查询报文后,程序可以在本地缓存或远程DNS服务器查找IP地址,并通过UDP进行通信。
摘要由CSDN通过智能技术生成

Linux下监听53号端口捕获DNS查询报文

计算机网络课设要求写一个能正常工作的DNS resolver,这就要求写出来的解析器能监听应用程序发出的查询报文。
即当应用程序需要查询某个网址对应的IP地址时,它会先往DNS resolver发送一条查询报文。这个解析器会解析这条报文,然后先在本地高速缓存中寻找有无对应的IP地址,若没有则去其他它知道的DNS服务器进行查找。获取结果后,将报文返回。

在这其中,53号端口就是解析器和服务器监听的端口。

使用sudo netstat -aptn | grep 53命令可以查看53号端口的占用情况

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      826/systemd-resolve 
tcp        0      0 10.122.223.96:53708     54.209.117.64:443       ESTABLISHED 7107/firefox        
tcp        0      0 10.122.223.96:58050     10.3.9.4:53             TIME_WAIT   -                   
tcp        0      0 10.122.223.96:53710     54.209.117.64:443       TIME_WAIT   - 

如上,已经被systemd-resolve的系统服务占用

强行运行监听程序,会发生如下错误:

Address already in use

为此,应当先停止systemd-resolve服务
使用systemctl stop systemd-resolved命令停止该服务

之后,修改/etc/resolv.conf里面的内容

nameserver 127.0.0.1
# nameserver 127.0.0.53
# options edns0 trust-ad

这个文件是由systemd-resolve服务自动生成的

监听程序的一个小DEMO:

#include <sys/socket.h>
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值