我们平时在windows或者linux上访问网页都是通过网址,也就是域名来访问的,但是数据包的传送是通过IP进行传输的,那么为什么我们能通过网址访问到某个网页呢?
这是因为在访问过程中DNS服务器通过域名解析,把网址解析成IP,我们才会访问到想要访问的网页
下面我们来学习DNS服务器的搭建
[root@server Desktop]# ping 183.232.231.173 # ping百度的ip可以ping通
[root@server Desktop]# ping www.baidu.com # 但是百度的域名ping 不通,是因为没有作域名解析
# DNS(提供域名解析功能)就派上用场了
[root@server Desktop]# vim /etc/hosts # 本地解析文件,不用重启服务,即改即生效
6 183.232.231.173 www.baidu.com
[root@server Desktop]# ping www.baidu.com # 此时就可以通过ping域名来ping通baidu
# 但是,每个网址的域名都需要自己告诉系统,这样太麻烦了,我们可以通过编写/etc/resolv.conf来通过搭建DNS服务器,让DNS服务器为我们实现域名解析
[root@server Desktop]# vim /etc/resolv.conf # 指定dns做网络解析
2 nameserver 114.114.114.114 # 114.114.114.114是电信的域名地址
[root@server Desktop]# ping www.taobao.com #我们没有做本地解析,直接ping淘宝的域名就可以ping通
# 那么问题来了,/etc/hosts 和 /etc/resolv.conf这两个文件的优先级,哪一个更高呢?
默认/etc/hosts的优先级高,但是这个优先级可以更改
[root@server Desktop]# vim /etc/hosts
6 172.25.254.254 www.baidu.com # 自定义一个解析
[root@server Desktop]# ping www.baidu.com # 读取的是/etc/hosts文件里的解析
[root@server Desktop]# vim /etc/nsswitch.conf # 本地解析文件和dns读取的优先级调整
39 hosts: dns files # 修改优先级,files代表本地解析文件,dns代表dns服务器,哪个在前面哪个优先
[root@server Desktop]# ping www.baidu.com # 这时先读取的就是/etc/resolv.conf文件
# 如何设定使/etc/resolv.conf文件的解析不会随着ip的改变而更改
[root@server network-scripts]# vim ifcfg-eth0 # 把ip改为动态
1 DEVICE=eth0
2 BOOTPROTO=dhcp
3 ONBOOT=yes
4 IPADDR0=192.168.0.242
5 NETMASK=255.255.255.0
6 GATEWAY0=192.168.0.142
[root@server network-scripts]# systemctl restart network
[root@server network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManagerdomain example.comsearch example.com
nameserver 172.25.254.254 # 之前文件中做的解析就会被替换
[root@server network-scripts]# vim ifcfg-eth0 # 即使在文件中给定DNS也不会生效
1 DEVICE=eth0
2 BOOTPROTO=dhcp
3 ONBOOT=yes
4 IPADDR0=192.168.0.242
5 NETMASK=255.255.255.0
6 GATEWAY0=192.168.0.142
7 DNS1=114.114.114.114
[root@server network-scripts]# systemctl restart network
[root@server network-scripts]# cat /etc/resolv.conf # 有两个解析,第一个是动态获取到的,先生效
#那么如何解决这个问题呢?
[root@server network-scripts]# vim ifcfg-eth0
1 DEVICE=eth0
2 BOOTPROTO=dhcp
3 ONBOOT=yes
4 IPADDR0=192.168.0.242
5 NETMASK=255.255.255.0
6 GATEWAY0=192.168.0.142
7 PEERDNS=no
[root@server network-scripts]# systemctl restart network
[root@server network-scripts]# cat /etc/resolv.conf # 不会消失,也不会被替换