1明刷、搭建DHCP服務(wù),為局域網(wǎng)內(nèi)用戶提供10.1.1.0/24網(wǎng)段的IP扔亥,且租約期默認(rèn)為48小時(shí)
dhcp的介紹
DHCP(Dynamic Host Configuration Protocol哲泊,動(dòng)態(tài)主機(jī)配置協(xié)議)是一個(gè)局域網(wǎng)的網(wǎng)絡(luò)協(xié)議堪侯,使用UDP協(xié)議工作埃碱, 主要有兩個(gè)用途:給內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動(dòng)分配IP地址猖辫,給用戶或者內(nèi)部網(wǎng)絡(luò)管理員作為對(duì)所有計(jì)算機(jī)作中央管理的手段,在RFC 2131中有詳細(xì)的描述砚殿。DHCP有3個(gè)端口啃憎,其中UDP67和UDP68為正常的DHCP服務(wù)端口,分別作為DHCP Server和DHCP Client的服務(wù)端口似炎;546號(hào)端口用于DHCPv6 Client辛萍,而不用于DHCPv4,是為DHCP failover服務(wù)羡藐,這是需要特別開(kāi)啟的服務(wù)贩毕,DHCP failover是用來(lái)做“雙機(jī)熱備”的。
DHCP(Dynamic Host Configuration Protocol传睹,動(dòng)態(tài)主機(jī)配置協(xié)議)通常被應(yīng)用在大型的局域網(wǎng)絡(luò)環(huán)境中耳幢,主要作用是集中的管理、分配IP地址欧啤,使網(wǎng)絡(luò)環(huán)境中的主機(jī)動(dòng)態(tài)的獲得IP地址、Gateway地址启上、DNS服務(wù)器地址等信息邢隧,并能夠提升地址的使用率。
DHCP租約過(guò)程
1冈在、租約過(guò)程:
1)客戶端發(fā)送DHCP discover廣播包倒慧,尋找DHCP服務(wù)器
客戶端源ip用的是0.0.0.0,源mac是自己本機(jī)的mac包券。
2)服務(wù)器回應(yīng)DHCP offer包
提供可用的ip纫谅,租約信息等
3)客戶端發(fā)送DHCP request
宣告自己所選擇的DHCP服務(wù)器
發(fā)送arp廣播確認(rèn)IP地址是否沒(méi)有被占用
4)服務(wù)器發(fā)送ACK確認(rèn)
這個(gè)ack包里包含了給客戶端分配的所有的網(wǎng)絡(luò)參數(shù)
一 搭建dhcp服務(wù)
步驟:
(1)安裝dhcpd服務(wù)
yum install dhcpd
(2)安裝完成后,需要對(duì)dhcpd進(jìn)行配置
配置文件位置:
/etc/dhcp/dhcpd.conf
subnet 10.1.1.0 netmask 255.255.255.0 {
? ? ? ? option routers? ? ? ? ? ? ? ? ? 10.1.1.1;?? #網(wǎng)關(guān)地址設(shè)定
? ? ? ? option subnet-mask? ? ? ? ? ? ? 255.255.255.0; #子網(wǎng)掩碼設(shè)定
? ? ? ? option domain-name? ? ? ? ? ? ? "localdomain"; #主機(jī)域名
? ? ? ? option domain-name-servers? ? ? 10.1.1.x; #設(shè)定DNS服務(wù)器地址
? ? ? ? range dynamic-bootp 10.1.1.2 10.1.1.254; #動(dòng)態(tài)分配的IP地址范圍
}
default-lease-time? ? ? ?? #默認(rèn)租約時(shí)間
max-lease-time? ? ? ? ? ?? #最大租約時(shí)間
2溅固、借助Ansible Playbook自動(dòng)化搭建LNMP環(huán)境(可借助yum)
3付秕、采用Ansible Role方式自動(dòng)化搭建LNMP
下面是安裝nginx的信息:
nginx_user:?www????????????????????????nginx用戶
nginx_port:?80?????????????????????????nginx監(jiān)聽(tīng)端口
nginx_web_dir:?/data/webroot/nginx?????nginx的目錄
nginx_version:?1.4.3???????????????????nginx的版本
pcre_version:?8.33?????????????????????pcre的版本
pretended_name:?Tengine????????????????為了安全起見(jiàn),把nginx名字改為tengine
pretended_version:?1.5.2???????????????隱藏版本侍郭,換個(gè)tengine的版本
下面是安裝php的信息:
php_user:?www????????????????????????????php?fpm模式的啟動(dòng)用戶
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????????????????????數(shù)據(jù)目錄
mysql_user:?mysql?????????????????????????????????????mysql用戶
mysql_database_user:?root?????????????????????????????數(shù)據(jù)庫(kù)用戶
mysql_passwd:?'E4yR3WnoluSFTCBAI'?????????????????????數(shù)據(jù)庫(kù)密碼
mysql_port:?3306??????????????????????????????????????mysql監(jiān)聽(tīng)端口
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僅能對(duì)centos或者redhat的6.x版本進(jìn)行安裝询吴。
下面是安裝lnmp的playbook結(jié)構(gòu)
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