如何让dig以非localhost源IP查询本地CoreDNS服务器?
如何让dig使用非localhost的源IP查询本地DNS服务器
当然可以实现这个需求!你只需要借助dig的源IP指定参数,再给本地网卡添加一个符合要求的别名IP,就能让CoreDNS识别到非172.0.0.0/8、非127.0.0.0/8的请求来源,从而返回8.8.8.8。具体操作步骤如下:
步骤1:给本地回环网卡添加别名IP
因为我们需要一个不在172.0.0.0/8或127.0.0.0/8网段的本地IP作为请求源,最简单的方式是给回环网卡(lo)添加一个临时别名IP。执行以下命令:
sudo ip addr add 192.168.1.100/32 dev lo
这里的
192.168.1.100可以换成任何未被占用且不在目标限制网段的IP。这个IP是临时生效的,系统重启后会自动消失;如果需要永久生效,可以修改对应系统的网卡配置文件(比如Ubuntu的netplan、CentOS的ifcfg-lo)。
步骤2:用dig指定源IP发起查询
dig提供了-b参数来指定请求的源IP地址,现在用这个参数结合刚才添加的IP发起查询:
dig example.org @localhost -p1053 -b 192.168.1.100 +short
执行这条命令后,CoreDNS收到的请求来源就是192.168.1.100,满足“非172/8、非127/8”的条件,会返回8.8.8.8。
可选:验证请求源IP
如果想确认请求的源IP是否正确,可以用tcpdump抓包验证:
sudo tcpdump -i lo port 1053
发起dig请求后,就能看到数据包的源IP是我们指定的192.168.1.100,目标IP是localhost(127.0.0.1)。
内容的提问来源于stack exchange,提问作者Palash Nigam
相关产品推荐
相关产品推荐

