一、知识整理
1、最初只有七个一级域名:Top Level Domain:tld:com、edu、mil、gov、net、org、int;
一级域名分三类:组织域、国家域、反向域。最多127级域名;全球有13个根节点服务器。
2、一次完整的查询请求经过的流程:client—hosts文件—DNS Service Local Cache—DNS SERVER(recursion)—-Server Cache—iteration(迭代)—根—顶级域名DNS—二级域名DNS….
3、区域解析库:资源记录RR(resource record)组成;常用的记录类型有:
A:internet address;作用FQDN—>IP
AAAA:ipv6的记录:FQDN—>IPv6
PTR:poinTER:ip—>FQDN
SOA:起始授权记录;一个区域解析库有且只能有一个,必须位于第一条记录;
NS:name server,专用于标明当前区域的DNS服务器;
CNAME:别名记录;
MX:邮件服务器记录。
语法:name [TTL] IN RR_TYPE VALUE
@可用于引用当前区域名字;同一个名字可以通过多条记录定义多个不同的值;MX类型有优先级;SOA记录的value有地址、邮箱、其他相关定义等。
4、资源记录格式:SOA格式:
ZONE NAME TTL IN SOA FQDN(主地址) ADMINISTRATOR_MAILBOX (
serial number:序列号
refresh:刷新时间
retry :重试时间
expire:过期时间
na ttl:否定答案的ttl)
当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;当前区域管理员的邮箱地址,但邮箱地址中不能使用@符号,用点替换;主从服务区域传输相关定义以及否定的答案的统一TTL。
NS记录:value为当前区域的某DNS服务器名字;一个区域可以有多个NS记录;相邻的两个资源记录的name相同时,后续的可省略;对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录。
MX记录:value为当前区域的邮件服务器的主机名;一个区域内,MX可以有多个,但每个记录的value之前应该有优先级,数字越小优先级越高;每个MX记录后面的服务器名字都应该在后续有一个A记录。
A记录:name:某主机的FQDN;value值为IP;为避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址。如:*.magedu.com. IN A 1.1.1.1
PTR记录:name:有特定格式,将IP反过来写并且加特定后缀in-addr.arpa.例如:4.3.2.1.in-addr.arpa.;配置文件中定义了网络地址及反向解析,网络地址及后缀可省。
CNAME:name:别名的FQDN;value:真正名字的FQDN。
5、DNSSEC安全:domain name system security extensions,是由IETF提供的一系列DNS安全认证的机制,它提供了一种来源鉴定和数据完整性的扩展,但不去保障可用性、加密性和证实域名不存在,是为了解决欺骗和缓存污染设计的一种安全机制。dnssec-enable是否支持DNSSEC开关,默认为开;dnssec-validation是否进行dnssec确认开关,默认为开;
二、命令详解及事例
1、sudo:sudo能够授权指定用户在指定主机上运行某些命令。它可以提供日志,记录每个用户使用sudo操作。sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机;配置文件为/etc/sudoers和/etc/sudoers.d/,通过visudo命令编辑配置文件,有语法检查功能。
时间戳文件:/var/db/sudo;日志文件:/var/log/secure
配置文件支持使用通配符:
? 前面的字符或词可出现一次或者不出现;
* 前面的字符或词出现零次或者多次;
[wxc] 匹配其中一个字符;
[^wxc] 除了这三个字符的其它字符;
[[alpha]] 字母;没有中间的双冒号;
授权规则格式:
用户或%组 登入主机=(代表用户) 命令
例如:ge 10.1.100.100=(xm) /bin/mount
运行者身份:可以是%组,#UID,配置文件中注释#开头行使用##;
通过哪些主机:可以是IP或hostname或network/netmask或别名;
以哪个用户的身份运行;
运行哪些命令:虽然在配置文件中定义了path,但是保证安全性尽量写绝对路径;可以使用!/PATH/COMMAND禁止使用命令;在命令之前添加标签NOPASSWD: 则使用此命令不需要输入密码。
%wheel ALL=(ALL) NOPASSWD: ALL
定义别名:别名必须全部而且只能使用大写字符组合;
配置文件中定义了别名的四种类型:User_Alias;Runas_Alias;Host_Alias;Cmnd_Alias;
[root@centos68 etc]# cd /etc/sudoers.d/ [root@centos68 sudoers.d]# cat common User_Alias COMMONUSER=user1,gejingyi Runas_Alias COMMONRUN=root Host_Alias COMMONHOST=10.1.252.134 Cmnd_Alias CONTROL=/bin/mount,/usr/sbin/useradd,/bin/vi /etc/fstab,/usr/bin/sudoedit COMMONUSER COMMONHOST=(COMMONRUN) CONTROL [root@centos68 sudoers.d]# su - gejingyi [gejingyi@centos68 ~]$ sudo useradd ge [sudo] password for gejingyi: [gejingyi@centos68 ~]$ sudo sudoedit /etc/sudoers sudoedit: /etc/sudoers unchanged
输入密码后,五分钟内可以不再输入,在配置文件中定义。也可使用命令强制重输。
配置文件定义中:root ALL=(ALL)
ALL的作用:若将另一个用户UID改为0,将root改为2000;root用户仍然可以通过使用sudo -u wang COMMON的方式执行各种命令。
用户使用命令的日志:/var/log/secure,其权限是600
sudo命令:sudo [-u USER] COMMAND 被sudo授权的命令只能使用sudo进行使用;
-V 显示版本及配置信息;
-u USER 默认为root
-l 列出用户在主机上可用和被禁止的命令
Matching Defaults entries for gejingyi on this host:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User gejingyi may run the following commands on this host:
(root) /bin/mount, /usr/sbin/useradd, /bin/vi /etc/fstab, /usr/bin/sudoedit
-v 再延长密码有效期限五分钟,更新时间戳;
-k 清除时间戳,下次需要重新输入密码
-K 删除时间戳文件,并下次需要重新输入密码;
-b 在后台执行指令;
-p 改变询问密码的提示符
[gejingyi@centos68 ~]$ sudo -p "password on %h for user %p" /bin/mount /dev/sdb2 /mnt/usb/ password on centos68 for user gejingyi
2、bind安装配置:服务脚本和名称:/etc/rc.d/init.d/named,unbound.service
主配置文件:/etc/named.conf./etc/named.rfc1912.zones,/etc/rndc.key,/etc/named/unbound.conf
解析库文件:/var/named/ZONE_NAME.zone
注意:一台物理服务器可同时为多个区域提供解析;必须要有根区域文件name.ca;应该有两个(如果包括ipv6则更多)实现localhost和本地回环地址的解析库。
注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上。
配置主DNS服务器:在主配置文件中定义区域:
zone “ZONE_NAME” IN {
type {master|slave|hint|forward};
file “ZONE_NAME.zone”
};
定义区域解析库文件;
主配置文件语法检查:named-checkconf
解析库文件语法检查:named-checkzone “magedu.com” /var/named/magedu.com.zone
重读服务:rndc status|reload;service named reload
3、rndc:remote name domain controller;默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程。提供辅助性的管理功能,使用953/tcp端口。
rndc命令:用法:rndc COMMAND
rndc reload:重载主配置文件和区域解析库文件;
reload zone:重载区域解析库文件
retransfer zone:手动启动区域传送过程,而不管序列号是否增加;
notify zone :重新对区域传送发通知;
reconfig:重载主配置文件;
querylog:开启或关闭查询日志文件/var/log/message
trace:递增debug一个级别;
trace LEVEL:指定使用的级别;
notrace:将调试级别设置为0
flush:清空DNS服务器的所有缓存记录。
4、测试命令:dig
用法:dig [-t type] name [@SERVER] [query options]
dig只用于测试dns系统,不会查询hosts文件进行解析;
选项:+[no]trace 跟踪解析过程
+[no]recurse 进行递归解析
测试反向解析:dig -x IP @SERVER
模拟区域传送(查看文件所有内容):dig -t axfr ZONE_NAME @SERVER
例如:dig -t axfr magedu.com @10.1.54.250
5、测试命令:host
用法:host [-t type] name IP
6、nslookup命令:直接输入进入交互式模式;可以正向和反向查询。
7、bind视图:一个bind服务器可以定义多个view,每个view中可定义一个或多个zone;每个view用来匹配一组客户端;多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件。格式如下:
view VIEW_NAME {
match-clients {};
zone
};
注意:一旦启用了view,所有的zone都只能定义在view中;仅在允许递归请求的客户端所在view中定义根区域;客户端请求到达时,是自上而下检查每个view所服务的客户端列表。
详细步骤见课后练习。
三、课后练习
1、配置主从DNS服务器(操作关闭防火墙):
步骤一:写主配置文件(若配置根服务器,更改配置和原本的根文件):
options {
// listen-on port 53 { 127.0.0.1; }; 监听本地回环IP的53端口,注释之后变为监听本机所有IP地址的所有端口,也可以改成本机IP(多个IP分号隔开)或其他端口。
allow-query { any; }; 改为any,允许有所有人查询(单条记录查询),默认只有本机可以查询;
allow-transfer { 10.1.252.134; }; 不写默认为none,允许单个IP查询所有DNS信息(可以理解为允许使用dig -t axfr命令),改为none是禁止所有IP查询所有DNS信息。在此添加从DNS的IP,可以使从DNS服务器自动同步,若不允许则只能在主DNS服务器有更新的时候通知从服务器(只能推,不能拉)。
dnssec-enable no;
dnssec-validation no;
以上两行为DNS安全扩展(详情见知识整理),改为no。在配置缓存服务器及转发服务器时,需要关闭。
注意:系统中三个相关文件:/etc/host.conf(配置文件,multi on表示允许主机拥有多个IP)、etc/hosts和/etc/resolv.conf;其中hosts文件有DNS的对应关系,其优先级高,若在此文件有记录,则DNS解析以此文件为先;resolv.conf文件记录域名服务器,nameserver一行表示dns解析时默认先使用此ip对应的主机进行解析(默认为网关),若添加则使用命令时可以不使用@IP。
步骤二:写区域辅助配置文件和DNS资源记录:
/etc/named.rfc1912.zones:区域辅助配置文件;除了根域之外,其他所有区域配置建议写在此文件中,方便管理。(注意格式)主DNS服务器:
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
从DNS服务器的区域配置(文件名自拟):
zone "magedu.com" IN {
type slave;
masters { 10.1.54.250; };
file "magedu.com.zone";
};
/var/named/* 包含资源记录(DNS的IP使用本机IP,其它随意):自带有localhost和loopback配置,将需要配置的域.zone文件写在此处,在named.rfc1912.zones中配置文件名。主DNS服务器资源记录,需要将从服务器的记录也写入,以在主服务器更新后通知从服务器:
[root@localhost ~]# cat /var/named/magedu.com.zone $TTL 600 @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016092301 1H 5M 1W 1D) @ IN NS ns1.magedu.com. IN NS ns2.magedu.com. ns1.magedu.com. IN A 10.1.54.250 ns2.magedu.com. IN A 10.1.252.28 magedu.com. IN MX 10 mail.magedu.com. mail.magedu.com. IN A 10.1.4.1 www.magedu.com. IN A 10.1.4.2
从服务器的资源记录,写入主服务器的地址以按时进行同步:
[root@localhost ~]# cat /var/named/magedu.com.zone $TTL 600 magedu.com. IN SOA ns2.magedu.com. admin.magedu.com. (201609152 1H 5M 1W 1D) magedu.com. IN NS ns2.magedu.com. magedu.com. IN NS ns1.magedu.com. ns2.magedu.com. IN A 10.1.252.28 ns1.magedu.com. IN A 10.1.54.250
更改解析库文件权限:将所属组改为named,将权限更改为640:
[root@localhost ~]# chmod 640 /var/named/magedu.com.zone [root@localhost ~]# chgrp named /var/named/magedu.com.zone [root@localhost ~]# ll /var/named/magedu.com.zone -rw-r-----. 1 root named 328 9月 24 10:48 /var/named/magedu.com.zone
步骤三:检测文件和重启服务:
检测文件格式的命令:配置文件:
[root@localhost ~]# named-checkconf /etc/named.rfc1912.zones [root@localhost ~]# named-checkconf /etc/named.conf
资源记录(解析库)文件语法检查:
[root@localhost ~]# named-checkzone "magedu.com" /var/named/magedu.com.zone zone magedu.com/IN: loaded serial 201609152 OK
重启服务或使用重读配置命令:centos6中:
[root@localhost ~]# service named restart [root@localhost ~]# rndc reload server reload successful [root@localhost ~]# service named reload Reloading named: [ OK ] centos7中: [root@localhost ~]# systemctl restart named.service [root@localhost ~]# rndc reload server reload successful [root@localhost ~]# systemctl reload named.service
步骤四:检测DNS解析(使用同网段第三台主机):使用命令(host、dig、nslookup):
[root@centos68 named]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script search magedu.com nameserver 10.1.54.250
使用hsot命令:(格式:IP前没@符号)
[root@centos68 ~]# host www.magedu.com www.magedu.com.magedu.com has address 10.1.4.2 [root@centos68 ~]# host -t A www.magedu.com www.magedu.com.magedu.com has address 10.1.4.2 [root@centos68 ~]# host -t A www.magedu.com 10.1.54.250 Using domain server: Name: 10.1.54.250 Address: 10.1.54.250#53 Aliases: www.magedu.com.magedu.com has address 10.1.4.2
使用dig命令查看:
[root@centos68 ~]# dig -t A www.magedu.com @10.1.54.250 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @10.1.54.250 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41168 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 600 IN A 10.1.4.2 ;; AUTHORITY SECTION: magedu.com. 600 IN NS ns2.magedu.com. magedu.com. 600 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 600 IN A 10.1.54.250 ns2.magedu.com. 600 IN A 10.1.252.28 ;; Query time: 2 msec ;; SERVER: 10.1.54.250#53(10.1.54.250) ;; WHEN: Sat Sep 24 20:34:14 2016 ;; MSG SIZE rcvd: 116
使用nslookup命令查看:(正反向解析都可以查看)
[root@centos68 ~]# nslookup > www.magedu.com Server: 10.1.54.250 Address: 10.1.54.250#53 Name: www.magedu.com Address: 10.1.4.2
原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/51657