背景
公司内部的DNS服务是必备的,工程师不应该记住机器的IP,第一是因为IP是magic number,第二是IP会变,我们应该通过人类可读的屏蔽掉IP变化的域名来访问服务,因此,DNS服务是必备的。
和其他文章的差别
采用bind9在ubuntu上实现dns,已经有一些文章了,但实践发现,都不是最简洁的,有些弯路,因此,把自己实践可行且又简单的方案写下来
服务端
安装bind9
sudo apt install bind9
配置
cd /etc/bind
指定某个文件用于解析某个域名
我们公司的域名用imsightmed(一个医疗AI公司)
# vim named.conf.default-zones
# add following lines
zone "imsightmed.com" {
type master;
file "/etc/bind/db.imsightmed.com";
};
将子域名写入上面的文件中
借模板之力
sudo cp db.local db.imsightmed.com
# vim db.imsightmed.com
# add your subdomain map
gitlab IN A 192.168.1.174
nexus IN A 192.168.1.156
允许其他主机使用该DNS服务
# sudo vim named.conf.options
# add following lines in options{...}
listen-on port 53 { any; };
#options {
# directory "/var/cache/bind";
# listen-on port 53 { any; };
重启即可生效
sudo systemctl restart bind9.service
测试
ping gitlab.imsightmed.com
可以获取正确的IP
ping www.baidu.com
可以正常使用原来的功能
客户端
注意:直接编辑/etc/resolv.conf重启后会失效,临时测试倒是可以
解决方案:
sudo apt install resolvconf
cd /etc/resolvconf/resolv.conf.d
sudo echo "nameserver ${YOUR_DNS_SERVER_IP}" > head
sudo resolvconf -u
这样,就能永久生效。