第十六周作业

1、搭建DHCP服务,为局域网内用户提供10.1.1.0/24网段的IP,且租约期默认为48小时

dhcp的介绍

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

DHCP租约过程

1、租约过程:

1)客户端发送DHCP discover广播包,寻找DHCP服务器

客户端源ip用的是0.0.0.0,源mac是自己本机的mac。

2)服务器回应DHCP offer包

提供可用的ip,租约信息等

3)客户端发送DHCP request

宣告自己所选择的DHCP服务器

发送arp广播确认IP地址是否没有被占用

4)服务器发送ACK确认

这个ack包里包含了给客户端分配的所有的网络参数

一 搭建dhcp服务

步骤:

(1)安装dhcpd服务

yum install dhcpd

(2)安装完成后,需要对dhcpd进行配置

配置文件位置:

/etc/dhcp/dhcpd.conf

subnet 10.1.1.0 netmask 255.255.255.0 {

        option routers                  10.1.1.1;   #网关地址设定

        option subnet-mask              255.255.255.0; #子网掩码设定

        option domain-name              "localdomain"; #主机域名

        option domain-name-servers      10.1.1.x; #设定DNS服务器地址

        range dynamic-bootp 10.1.1.2 10.1.1.254; #动态分配的IP地址范围

}

default-lease-time         #默认租约时间

max-lease-time             #最大租约时间

2、借助Ansible Playbook自动化搭建LNMP环境(可借助yum)

3、采用Ansible Role方式自动化搭建LNMP

下面是安装nginx的信息:

nginx_user: www                        nginx用户

nginx_port: 80                         nginx监听端口

nginx_web_dir: /data/webroot/nginx     nginx的目录

nginx_version: 1.4.3                   nginx的版本

pcre_version: 8.33                     pcre的版本

pretended_name: Tengine                为了安全起见,把nginx名字改为tengine

pretended_version: 1.5.2               隐藏版本,换个tengine的版本

下面是安装php的信息:

php_user: www                            php fpm模式的启动用户

php_port: 9000                           php fpm使用tcp的端口

php_dir: /usr/local                      php的安装目录

php_version: 5.3.10                      php的版本

mysql_basedir: /data/mysql/basedir       mysql的目录

下面是安装mysql的信息:

mysql_basedir: /data/mysql/basedir                    源码目录

mysql_datadir: /data/mysql/datadir                    数据目录

mysql_user: mysql                                     mysql用户

mysql_database_user: root                             数据库用户

mysql_passwd: 'E4yR3WnoluSFTCBAI'                     数据库密码

mysql_port: 3306                                      mysql监听端口

mysql_sock: /data/mysql/datadir/mysql.sock            mysql的sock

mysql_charset: utf8                                   mysql字符集

mysql_collation: utf8_general_ci                      mysql排序方式

mysql_version: Percona-Server-5.5.21-rel25.1.tar.gz   mysql版本

备注:此playbook仅能对centos或者redhat的6.x版本进行安装。

下面是安装lnmp的playbook结构

09:28:50 # tree nginx* mysql* php*

nginx_delete

├── files

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── delete.yml

│   └── main.yml

├── templates

└── vars

    └── main.yml

nginx_install

├── files

│   └── nginx-1.4.3.tar.gz

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── copy.yml

│   ├── delete.yml

│   ├── install.yml

│   └── main.yml

├── templates

│   ├── index.html

│   ├── index.php

│   ├── install_nginx.sh

│   ├── nginx

│   ├── nginx.conf

│   └── vhost.conf

└── vars

    └── main.yml

mysql_delete

├── files

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── delete.yml

│   └── main.yml

├── templates

└── vars

    └── main.yml

mysql_install

├── files

│   └── mysql.tar.gz

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── copy.yml

│   ├── delete.yml

│   ├── install.yml

│   └── main.yml

├── templates

│   ├── install_mysql.sh

│   ├── my.cnf

│   ├── mysqld

│   └── mysql_security.sh

└── vars

    └── main.yml

php_delete

├── files

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── delete.yml

│   └── main.yml

├── templates

│   └── delete_php.sh

└── vars

    └── main.yml

php_install

├── files

│   └── php.tar.gz

├── handlers

├── meta

│   └── main.yml

├── tasks

│   ├── copy.yml

│   ├── delete.yml

│   ├── install.yml

│   └── main.yml

├── templates

│   ├── install_php.sh

│   ├── php-fpm

│   └── php-fpm.conf

└── vars

    └── main.yml

36 directories, 47 files

playbook的lnmp安装是

09:29:59 # cat lnmp_install.yml 

---

- hosts: "`host`"

  remote_user: "`user`"

  gather_facts: True

  roles:

    - common

    - pcre_install

    - nginx_install

    - mysql_install

    - php_install

playbook的lnmp删除是

09:30:33 # cat lnmp_delete.yml 

---

- hosts: "`host`"

  remote_user: "`user`"

  gather_facts: True

  roles:

    - pcre_delete

    - php_delete

    - nginx_delete

    - mysql_delete

你可能感兴趣的:(第十六周作业)