第十七周
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