Linux下访问DNS服务

最近在看Linux高性能服务器编程,按照书上的讲解实践一下。
1、查询DNS服务器的IP地址

Linux下访问DNS服务,需要知道DNS服务器的IP地址,在Linux上,使用/etc/resolv.conf文件来存放DNS服务器的IP地址,可以通过cat命令来查询。

[root@master ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.182.2

2、域名解析

host是常用的域名解析的工具,可以用来测试域名系统工作是否正常,其通常用于将名称转换为IP地址。在使用的时候,提示host未找到命令,寻找原因后,发现是bind包版本太低,调用命令

yum install bind-utils

更新后,便可以使用host指令。接下来向首选DNS服务器查询机器www.baidu.com的IP地址:

[root@master ~]# host -t A www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 120.232.145.185
www.a.shifen.com has address 120.232.145.144

​ 输出告诉我们,机器名www.baidu.com是www.a.shifen.com的别名,并且该机器名对应两个IP地址。

3、使用tcpdump观察DNS通信过程

​ TCPDUMP是linux上最强大的网络数据采集分析工具,下面将运行host命令查询www.baidu.com对应的IP地址,并使用tcpdump抓取这一过程中的以太网帧,具体操作如下:

在一个命令行窗口输入以下指令,此时会进入监听状态:

sudo tcpdump -i any -nt -s 500 port domain
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 500 bytes

再新建一个命令行窗口,输入host指令,查询www.baidu.com的IP地址,则第一个窗口会输出以下内容:

IP 192.168.182.1.44775 > 192.168.182.2.domain: 662+ A? www.baidu.com. (31)
IP 192.168.182.2.domain > 192.168.182.1.44775: 662 3/5/9 CNAME www.a.shifen.com., A 120.232.145.144, A 120.232.145.185 (348)

​ 数据包开始的“IP”指出后面描述的内容是IP数据报。tcpdump以“IP地址.端口号”的形式来描述通信的一端;以“>“表示数据的传输方向,其前面是源端,后面是目的端。带.domain后缀的代表其使用了域名服务的端口。

​ 第一个数据包中的数值662是DNS查询报文的标识值,”+“表示启用递归查询标志,”A?“表示使用A类型的查询方式,”www.baidu.com"则是DNS查询问题中的查询名,括号中的数值31则是DNS查询报文的长度。

​ 第二个数据包中,'3/4/4’表示该报文包含3个应答资源记录、4个授权资源记录和4个额外信息记录。

“CNAME www.a.shifen.com., A 120.232.145.144, A 120.232.145.185”表示3个应答资源记录的内容,其中CNAME紧随其后记录的是机器的别名,A表示紧随其后的记录是IP地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值