在日常开发中,有这么一个需求:
大家在公司内网同一个网段下,一般情况上网会由网关(一般是路由器)的DHCP服务分配IP。公司内网里放了几台服务器,分别配置成静态IP,这些IP是DHCP配置时预留的。服务器上会放置一些文件共享,所以有个Samba服务器。也配置了一些wiki及git等服务。大家可以使用IP访问这些服务。但难记,IP偶尔也会变,总归不如域名方便。但要每个人都改 hosts 又很麻烦,而且变更起来就更麻烦了。
一直想在内网布置一个域名解析的服务器,但不知道怎么搞定。今天跟一位IT运维请教后,才恍然大悟。是自己一直想复杂了。
整个配置过程大概有这么几步:
这样就行了。
使用域名上网的过程是:
dnsmasq 在 ubuntu 上的配置
修改几个地方:
listen-address=127.0.0.1, 10.39.249.211
监听这两个IP上的收到DNS请求
cache-size=2048
设置缓存的大小。有了缓存,被缓存的域名会立即返回IP地址。这样可以加速访问。
address=/node0.cpv.org/192.168.1.230 address=/node1.cpv.org/192.168.1.231 address=/node2.cpv.org/192.168.1.232 address=/node3.cpv.org/192.168.1.233 address=/node4.cpv.org/192.168.1.234
设置局域网内的域名IP映射关系。
本机的 DNS 服务地址配成 127.0.0.1。/etc/network/interfaces
里加上这一句:
dns-nameservers 127.0.0.1
dnsmasq 默认会到 /etc/resolv.conf
里去找,但这个文件里放的也是本机的DNS服务地址。上面的修改,把本机所有dns请求从 127.0.0.1 转到了 dnsmasq 上。
另外,dnsmasq 会读 /var/run/dnsmasq/resolv.conf
这个文件的内容作为上一级DNS服务地址。这个文件是怎么生成的呢:resolvconf 启动时,会调用一个 hook 脚本:/etc/resolvconf/update.d/dnsmasq
,这个脚本生成 /var/run/dnsmasq/resolv.conf
文件。
我看了一下 /var/run/dnsmasq/resolv.conf
里面只有一句 nameserver 127.0.0.1
。可能是 resolvconf 这边的脚本没有被执行。
在 /etc/default/dnsmasq
里面设置 IGNORE_RESOLVCONF=yes
。这样 dnsmasq 就不会去找 /var/run/dnsmasq/resolv.conf
,而是直接去读 resolv-file
指定的文件。
在 /etc/dnsmasq.conf
设置 resolv-file=/etc/resolv.dnsmasq
最后创建 /etc/resolv.dnsmasq
文件,并在其中指定上一级 DNS 服务器地址。
后面这个文件是配置 dnsmasq 的上一级DNS服务器地址:
nameserver 10.39.249.254 nameserver 114.114.114.114
参考链接
原文链接:https://www.cnblogs.com/sammei/p/Linux-dnsmasq-fu-wu.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17140