linux实战案例-2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux实战案例-2相关的知识,希望对你有一定的参考价值。

   1、描述centos6系统开机启动流程;

    POST --> Bootsequence(Bios) --> bootloader(MBR)--> kernel(ramdisk) -->  rootfs(只读) --> /sbin/init --> (/etc/inittab) --> 设置默认运行级别 (id:3:initdefault:) --> 运行系统初始化脚本、完成系统初始化(si::sysinit:/etc/rc.d/rc.sysinit) --> 关闭和启动对应级别写需要关闭的服务(l#:#:wait:/etc/rc.d/rc #) --> 设置登录终端(tty1:2345:respawn:/usr/sbin/mingetty tty1)

    该部分已总结:http://armolee.blog.51cto.com/6288560/1737958

   2、描述/etc/rc.d/sysinit脚本功能;

    (1) 设置主机名

    (2) 设置欢迎信息

    (3) 激活udev和selinux

    (4) 挂载/etc/fstab文件中定义的文件系统

    (5) 检测根文件系统,并以读写方式重新挂载根文件系统(内核挂载为只读模式,此处需重新挂载)

    (6) 设置系统时钟

    (7) 激活swap设备

    (8) 根据/etc/sysctl.conf文件设置内核参数

    (9) 激活lvm及software raid设备

    (10) 加载额外设备的驱动程序

    (11) 清理操作

   3、总结文本处理工具sed及awk的用法;(必须附带示例)

    sed:http://armolee.blog.51cto.com/6288560/1740641

    awk:http://armolee.blog.51cto.com/6288560/1740942    

   4、写一个脚本,生成10个随机数,并按从小到大进行排序(要求至少使用2中方法);

  (1)

    #! /bin/bash
        for ((i=1;i<=10;i++))
        do
    echo "$RANDOM"
    done | sort -n

   (2) 

 #!/bin/bash
    declare -i i
    for (( i=0 ; i<10 ; i++ ))
    do
    armo[i]=$RANDOM
    done
    for (( i=0 ; i<${#armo[@]} ; i++ ))
    do
      for (( j=${#armo[@]} - 1 ; j>i ; j-- ))
      do
        #echo $j
        if  [[ ${armo[j]} -lt ${armo[j-1]} ]]
        then
           t=${armo[j]}
           armo[j]=${armo[j-1]}
           armo[j-1]=$t
        fi
      done
    done
    for (( i=0 ; i<10 ; i++ ))
    do
            echo ${armo[i]}
    done

   5、在每周二的凌晨1点5分执行脚本/data/get_username.sh,并将脚本的输出至/tmp/get_username.log日志文件中;  

 5 1 ? * 2 ./data/get_username.sh  > /tmp/get_username.log

   6、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;  

 #!/bin/sh
    echo "please input a dir"
    read armo
    if [ -d $armo ]
    then
        echo "this dir is exist"
    else
        mkdir $armo
        echo "the $armo is created"
    fi

   7、写一个脚本,打印9X9乘法表; 

 #! /bin/bash
    declare-i i=1
    #! /bin/bash
    #
    #
    declare -i j=1    
    until [ $j -gt 9 ]; do
        until [ $i -gt $j ]; do
        echo -n -e "${i}X${j}=$[$i*$j]\t"
        let i++
        done
    echo
    let i=1
    let j++
    done

    8、描述dns的工作流程,以及完整搭建一套dns主从服务器,相关域名和ip可自行设定。

    技术分享

1、切换至root用户

2、两台服务器分布安装bind  

yum install bind

3、对比两台服务器bind版本


4、修改主配置文件信息,建议将主配置文件备份后在进行修改。

cp /etc/named.conf /etc/named.conf.bak
vi /etc/named.conf
options {
	listen-on port 53 { 127.0.0.1; };  //只监听本机53端口
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { localhost; }; //只允许本机递归查询
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};

    默认只监听本机的53端口,若要提供服务,最少应增加一个外网地址53端口的监听,并允许所有用户进行递归查询。并且注释所有的dnssec。

vi /etc/named.conf
options {
	listen-on port 53 { 192.168.0.15;  127.0.0.1; };   //增加监听地址,此处添加本机外网地址即可
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };        //允许所有
	recursion yes;

//	dnssec-enable yes;
//	dnssec-validation yes;
//	dnssec-lookaside auto;

	/* Path to ISC DLV key */
//	bindkeys-file "/etc/named.iscdlv.key";
//
//	managed-keys-directory "/var/named/dynamic";
};

5、查看本服务器53端口的监听情况

[[email protected] ~]# ss -tunlp | grep :53
udp    UNCONN     0      0           192.168.0.15:53                    *:*      users:(("named",4387,513))
udp    UNCONN     0      0              127.0.0.1:53                    *:*      users:(("named",4387,512))
udp    UNCONN     0      0                    ::1:53                   :::*      users:(("named",4387,514))
tcp    LISTEN     0      3                    ::1:53                   :::*      users:(("named",4387,22))
tcp    LISTEN     0      3           192.168.0.15:53                    *:*      users:(("named",4387,21))
tcp    LISTEN     0      3              127.0.0.1:53                    *:*      users:(("named",4387,20))

以上操作针对主从两台服务器配置相同。

6、主DNS服务器配置:

    定义区域:

[[email protected] ~]# cat /etc/named.rfc1912.zones 

zone "armo.com" IN {
	type master;
	file "armo.com.zone";
};                                        //正向区域

zone "0.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.0.zone";
};                                        //反向区域

    定义区域解析库文件:

[[email protected] ~]# cat /var/named/armo.com.zone 
$TTL 1d
@	IN	SOA	ns1.armo.com.	admin.armo.com(
			2016020301
			1H
			5M
			7D
			1D)
	IN	NS	ns1.armo.com.
	IN	NS	ns2.armo.com.
	IN	MX	10	mx1.armo.com.
	IN	MX	20	mx2.armo.com.
ns1	IN	A	192.168.0.1
ns2	IN	A	192.168.0.17
mx1	IN	A	192.168.0.4
mx2	IN	A	192.168.0.1
www	IN	A	192.168.0.17                          //正向解析库文件

[[email protected] ~]# cat /var/named/192.168.0.zone 
$TTL 1d
$ORIGIN 0.168.192.in-addr.arpa.
@	IN	SOA	ns1.armo.com.	admin.armo.com.(
			2016020301
			1H
			5M
			7D
			1D)
	IN	NS	ns1.armo.com.
	IN	NS	ns2.armo.com.
1	IN	PTR	ns1.armo.com.
17	IN	PTR	www.armo.com.
4	IN	PTR	mx1.armo.com.
1	IN	PTR	mx2.armo.com.
17	IN	PTR	ns2.armo.com.	                    //反向解析库文件

    检查是否有语法错误

name-checkconf          //检查主配置文件是否有语法错误
named-checkzone "armo.com" /var/named/armo.com.zone     //检查区域配置文件

    更改文件权限及属组

[[email protected] named]# chmod 640 armo.com.zone 
[[email protected] named]# chown :named armo.com.zone    //正向

[[email protected] named]# chmod 640  192.168.0.zone
[[email protected] named]# chown :named  192.168.0.zone    //反向

    测试主DNS服务器解析:

[[email protected] ~]# dig -t A www.armo.com @192.168.0.15

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6 <<>> -t A www.armo.com @192.168.0.15
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52591
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.armo.com.			IN	A

;; ANSWER SECTION:
www.armo.com.		86400	IN	A	192.168.0.17

;; AUTHORITY SECTION:
armo.com.		86400	IN	NS	ns2.armo.com.
armo.com.		86400	IN	NS	ns1.armo.com.

;; ADDITIONAL SECTION:
ns1.armo.com.		86400	IN	A	192.168.0.1
ns2.armo.com.		86400	IN	A	192.168.0.17

;; Query time: 2 msec
;; SERVER: 192.168.0.15#53(192.168.0.15)
;; WHEN: Wed Feb  3 06:01:38 2016
;; MSG SIZE  rcvd: 114                        //正向

[[email protected] ~]# dig -x 192.168.0.4 @192.168.216.231

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6 <<>> -x 192.168.0.4 @192.168.216.231
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63940
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;4.0.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
4.0.168.192.in-addr.arpa. 86400	IN	PTR	localhost.

;; Query time: 29 msec
;; SERVER: 192.168.216.231#53(192.168.216.231)
;; WHEN: Wed Feb  3 06:03:42 2016
;; MSG SIZE  rcvd: 65                        //反向

7、从DNS服务器配置

    测试与主DNS服务器的区域传送

[[email protected] ~]# dig -t axfr armo.com @192.168.0.15

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6 <<>> -t axfr armo.com @192.168.0.15
;; global options: +cmd
armo.com.		86400	IN	SOA	ns1.armo.com. admin.armo.com.armo.com. 2016020301 3600 300 604800 86400
armo.com.		86400	IN	NS	ns1.armo.com.
armo.com.		86400	IN	NS	ns2.armo.com.
armo.com.		86400	IN	MX	10 mx1.armo.com.
armo.com.		86400	IN	MX	20 mx2.armo.com.
mx1.armo.com.		86400	IN	A	192.168.0.4
mx2.armo.com.		86400	IN	A	192.168.0.1
ns1.armo.com.		86400	IN	A	192.168.0.1
ns2.armo.com.		86400	IN	A	192.168.0.17
www.armo.com.		86400	IN	A	192.168.0.17
armo.com.		86400	IN	SOA	ns1.armo.com. admin.armo.com.armo.com. 2016020301 3600 300 604800 86400
;; Query time: 21 msec
;; SERVER: 192.168.0.15#53(192.168.0.15)
;; WHEN: Wed Feb  3 06:04:40 2016
;; XFR size: 11 records (messages 1, bytes 273)

    定义区域

[[email protected] ~]# cat /etc/named.rfc1912.zones 
zone "armo.com" IN {
        type slave;
        masters {192.168.0.15;};
        file "slave/armo.com.zone";
}

    启动服务

service named start

    查看同步信息

[[email protected] ~]# tail /var/log/messages 
Feb  3 06:20:42 localhost named[15085]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Feb  3 06:20:42 localhost named[15085]: zone localhost.localdomain/IN: loaded serial 0
Feb  3 06:20:42 localhost named[15085]: zone localhost/IN: loaded serial 0
Feb  3 06:20:42 localhost named[15085]: managed-keys-zone ./IN: loaded serial 2
Feb  3 06:20:42 localhost named[15085]: running
Feb  3 06:20:42 localhost named[15085]: zone armo.com/IN: Transfer started.
Feb  3 06:20:42 localhost named[15085]: transfer of ‘armo.com/IN‘ from 192.168.0.15#53: connected using 192.168.0.17#43758
Feb  3 06:20:42 localhost named[15085]: zone armo.com/IN: transferred serial 2016020301
Feb  3 06:20:42 localhost named[15085]: transfer of ‘armo.com/IN‘ from 192.168.0.15#53: Transfer completed: 1 messages, 11 records, 273 bytes, 0.001 secs (273000 bytes/sec)
Feb  3 06:20:42 localhost named[15085]: zone armo.com/IN: sending notifies (serial 2016020301)


[[email protected] ~]# cat /var/named/slaves/armo.com.zone 
$ORIGIN .
$TTL 86400	; 1 day
armo.com		IN SOA	ns1.armo.com. admin.armo.com.armo.com. (
				2016020301 ; serial
				3600       ; refresh (1 hour)
				300        ; retry (5 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS	ns1.armo.com.
			NS	ns2.armo.com.
			MX	10 mx1.armo.com.
			MX	20 mx2.armo.com.
$ORIGIN armo.com.
mx1			A	192.168.0.4
mx2			A	192.168.0.1
ns1			A	192.168.0.1
ns2			A	192.168.0.17
www			A	192.168.0.17
[[email protected] ~]#

至此DNS主从服务器建设完毕。


本文出自 “机智少年普朗克” 博客,谢绝转载!

以上是关于linux实战案例-2的主要内容,如果未能解决你的问题,请参考以下文章

linux运维实战练习案例-2016年2月3日(第二次)

Linux文本处理神器awk实战案例

linux实战应用案例: 777 权限表示什么,各数字又是什么含义?

linux实战应用案例: 777 权限表示什么,各数字又是什么含义?

Linux实战案例(10)Linux上 ps 命令的用法

偏重实战案例的Linux命令图书