天天看点

linux下的dns代理

最近在给客户修改软件的时候涉及到了DNS重定向的问题,于是研究了一下broadcom方案DSL ROUTER的DNS,并在opensuSE实现了DNS处理. 一、介绍

1、 broadcom方案DSL ROUTER 是DNSmasq实现DNS代理的。DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务.

它可以提供如下几个实用的功能:

1 提供dns服务

2 优先使用本地自定义dns

3 提供dhcp服务(本DSL ROUTER没有使用到)

2、dns 代理原理:如以下网络拓扑图:

   2.1 给PC输入域名,如给PC浏览器输入域名,产生DNS请求。

   2.2 如果PC的DNS 服务器IP是ROUTER 的IP,并且ROUTER支持DNS 代理并开启,那么PC产生的DNS请求会发送给ROUTER.ROUTER的处理进程会该请求。

   2.3 ROUTER的处理进程首先查询自身的缓存/etc/hosts文件是否有该域名的IP,如果有则回复DNS。如果没有根据/etc/resolv.conf的配置把该DNS请求转发到上一级DNS SERVER ,由上一级DNS SERVER 处理。

linux下的dns代理
二、安装 1 、在vmware中的 opensue10.3 下安装

       下载: http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.52.tar.gz

       解压: tar -xzf  dnsmasq-2.52.tar.gz

       编译安装:cd  dnsmasq-2.52

                 make install

   2、

配置

    默认配置下,dnsmasq使用系统的/etc/resolv.conf并读取/etc/hosts,

    /etc/resolv.conf文件是用来配置上一级DNS

    /etc/hosts文件是用来存储dns代理缓存。

    dnsmasq可以用hosts文件来设置域名:

    例:test.sudone.com是不存在的域名,我在dnsmasq中指向到一个ip里:

    echo "64.233.189.99 test.sudone.com" > /etc/hosts 

    或者直接vi /etc/hosts来添加ip

改完要重启:

pkill -9 dnsmasp  &&

/usr/local/sbin/dnsmasq -h

    配置好网络,也就是确保opensue10.3与windows 能够ping通,在配置windows的DNS 服务器是填入opensue10.3的IP.

    3、实践

      在windows运行 命令行 cmd.exe,清除dns缓存:arp -d

      在浏览器输入域名:www.baidu.com

      通过wireshark抓数据包可以看到www.baidu.com 的dns请求返回的IP是64.233.189.99。

转载于:https://blog.51cto.com/huangxueqiang/674319

继续阅读