rpm 包下载:链接: https://pan.baidu.com/s/1m3CRYY59-Un8Tnrcsnru5w 提取码: du5v
rpm安装:
rpm -ivh nettle-2.7.1-8.el7.x86_64.rpm
rpm -ivh dnsmasq-2.76-16.el7_9.1.x86_64.rpm
yum 安装
yum install -y dnsmasq
1 vim /etc/dnsmasq.conf
修改以下内容
resolv-file=/etc/resolv.dnsmasq.conf //dnsmasq 会从这个文件中寻找上游dns服务器
strict-order //去掉前面的#,表示resolv-file 对应的文件中dns 会安装顺序找上游dns
addn-hosts=/etc/dnsmasq.hosts //在这个目里面添加 ip 域名 记录
//监听地址 去掉就是任意服务器都能访问 此dns, 如果写这个 192.168.1.123 表示只有这个网段才能访问此dns
//listen-address=127.0.0.1,192.168.1.123 保持注释掉
2、修改/etc/resolv.conf
echo 'nameserver 127.0.0.1' > /etc/resolv.conf
3、创建resolv.dnsmasq.conf文件并添加上游dns服务器的地址
touch /etc/resolv.dnsmasq.conf
添加上游的DNS服务器,也就是公网DNS,这里添加阿里云的,或者114 ,如果是内网就用你们自己的dns
echo 'nameserver 223.5.5.5' >> /etc/resolv.dnsmasq.conf
echo 'nameserver 223.6.6.6' >> /etc/resolv.dnsmasq.conf
echo 'nameserver 114.114.114.114' >> /etc/resolv.dnsmasq.conf
echo 'nameserver 114.114.115.115' >> /etc/resolv.dnsmasq.conf
4、创建dnsmasq.hosts文件
添加记录
cp /etc/hosts /etc/dnsmasq.hosts
echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf
[root@ N# cat /etc/dnsmasq.hosts
127.0.0.1 localhost localhost localdomain localhost localhost. localdomain4
:1
[root@ N# cat /etc/dnsmasq.hosts
127.0.0.1 localhost localhost localdomain localhost localhost. localdomain4
:1
localhostlocalhost localdomain localhost localhost. localdomain6
## 以下添加了多个 域名以这种形式: ip 域名
192.199.3.25 milo1.com
192.189.3.206 menlo2.com
192.108.3.287 mInlo3.com
192.108.3.57 mInlo4.com
192.168.21.184 menlo5.com
192.168.21.195 milo6.com
192.168.21.146 mInlo7.com
192.168.21.19 mnlo8.com
5启动
systemctl start dnsmasq
systemctl status dnsmasq
systemctl stop dnsmasq
6 客户端使用
去其他虚拟机上dns 换成搭建好的 dnsmasq 那个主机上例如
192.168.21.184 menlo5.com
去 192.168.21.184 上修改 vim /etc
[root@n] cat /etc/resolv. conf
nameserver 192.108.3.287
注意:192.108.3.287 就是安装了dnsmasq 的那个主机
后续改端口
如果你不想用53 端口,改用其他端口怎么办?
肯定要用nginx 转发,因为所有的dns客户端发出的UDP请求都目的端口都是53,这需要一个nginx 监听53 端口,然后转发到真正 的dnsmasq,服务器上
1 修改 vim /etc/dnsmasq.conf 中 #port 的配置打开例如配置15353端口
2 vim /etc/resov.conf
nameserver ip##此ip应该配置成 nginx
注意如下修改无意义,这是masq他自己的上游服务器地址。
vim /etc/resov.dnsmasq.conf
nameserver ip##此ip应该配置成 没有就写127.0.0.1
systemctl stop dnsmasq
systemctl start dnsmasq
整个过程:
ping xxx.com ---->nginx---->dnsmasq:15353
这里有个机制:
当我们dnsmasq 以53端口启动时候,这是 ping xxx.com, 操作系统会去看下53 是否有程序,如果有程序占用那就默认是dns服务器,所以使用53程序的 客户端发送dns请求,这时dns上游配置文件使用的是 dnsmasq.conf中配置的,/etc/resolv.dnamasq.conf,
如果 不是53端口启动,这时 ping xxx.com,操作系统发现没有程序占用53 端口,则会用操作系统默认的dns客户端发送 dns请求,则此时上游dns 服务器配置文件是: /etc/resolv.conf, 所以nginx代理后,要修改此文件!!!
nginx 文件
如果是docker 挂载路径: -v xxx/xxx/nginx.conf:/etc/nginx/nginx.conf
# Load balance UDP-based DNS traffic across two servers nginx 里就只配置下面的东西足够了
events {
worker_connections 4096;
}
stream {
upstream dns_upstreams {
server 192.168.xxx.111:15353;
}
server {
listen 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
}
}
参考 https://blog.csdn.net/yanghua1012/article/details/80555487
https://blog.51cto.com/longlei/2065967
赠人玫瑰,手有余香,你的点赞,我的动力!
如果你能看到这里了,不如点赞关注一下,我会认真分享每一篇博文。大家共同成长。
我的公众号:茄子的笔记
更多分享可见:
在这里插入图片描述