dnsmasq部署pxe服务器脚本

dnsmasq部署pxe服务器脚本

原文 https://www.iyunv.com/thread-404666-1-1.html


收藏 2017-9-18 10:15:18

目标:dnsmasq部署pxe服务器脚本

网络环境:

kvm+vsftpd服务器:192.168.10.7

dnsmasq简介

  Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。

         

  DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。由于dnsmasq可以管理tftp-server服务。因此可以用来搭建PXE服务器。

#临时测试:

systemctl  stop  firewalld

systemctl  stop  libvirtd

setenforce  0

#准备本地yum源

mkdir  -pv  /dvd

mount  /dev/cdrom  /dvd

chmod  +x  /etc/rc.d/rc.local

grep  dvd  /etc/rc.d/rc.local || echo  'mount  /dev/cdrom  /dvd'  > /etc/rc.d/rc.local

source  /etc/rc.d/rc.local

cd  /etc/yum.repos.d

mkdir  -pv  bak/

mv  -v  *.repo  bak/

cat  > dvd.repo <<EOF

[centos73]

name=centos linux 7.3 local

baseurl=file:///dvd

enabled=1

gpgcheck=0

EOF

yum  clean  all

yum  repolist

yum install  -y  vsftpd

mkdir  -pv  /var/ftp/ks/

yum install  -y dnsmasq  curl  tftp-server  xinetd  syslinux  mlocate

mkdir  -v  /var/lib/tftpboot/pxelinux.cfg  /var/lib/tftpboot/centos7/  /var/ftp/dvd/

systemctl  restart  vsftpd

mount  /dev/cdrom  /var/ftp/dvd

updatedb

locate  pxelinux.0

cp  -v  /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

cp  -v  /usr/share/syslinux/menu.c32    /var/lib/tftpboot/

cp  -v  /dvd/isolinux/*  /var/lib/tftpboot/centos7/

touch  /var/lib/tftpboot/pxelinux.cfg/default

#创建pxe启动菜单default文件

cat  > /var/lib/tftpboot/pxelinux.cfg/default <<EOF

default menu.c32

prompt 0

timeout 300

ONTIMEOUT local

menu title ##########      PXE Boot Menu ##########

label 1

menu label ^1)InstallCentOS7  x64 withLocalRepo

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=ftp://192.168.10.7/dvd  devfs=nomount

#ks=ftp://192.168.10.7/ks/7text.ks

label 2

menu label ^2)InstallCentOS7 x64 with http://mirror.centos.org Repo

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=http://mirror.centos.org/centos/7/os/x86_64/  devfs=nomount  ip=dhcp

label 3

menu label ^3)InstallCentOS7 x64 withLocalRepousing VNC

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=ftp://192.168.10.7/pub devfs=nomount inst.vnc  inst.vncpassword=password

label 4

menu label ^4)Bootfromlocal      drive

EOF

cat  /var/lib/tftpboot/pxelinux.cfg/default

测试dnsmasq手动启动(已测OK):

netstat  -atunlp|grep  dnsmasq

systemctl  stop  libvirtd

systemctl  stop  dnsmasq

pkill  -9  dnsmasq

dnsmasq  --interface=ens33  --dhcp-range=192.168.10.100,192.168.10.150  --dhcp-boot=pxelinux.0  --enable-tftp  --tftp-root=/var/lib/tftpboot/

dnsmasq  -i  ens33  -F 192.168.10.100,192.168.10.150  -M  pxelinux.0  --enable-tftp  --tftp-root=/var/lib/tftpboot/

#以上的临时测试完毕(已测OK)

-----------------------------------------------------------------------

#正式编写dnsmasq自动部署pxe服务器的脚本

vi  dnsmasq.sh  脚本代码如下

#!/bin/bash

setenforce  0

getenforce

sed  -i    '/^SELINUX=/c\SELINUX=disable'  /etc/selinux/config

grep  ^SELINUX    /etc/selinux/config

systemctl  stop  firewalld

systemctl  disable  firewalld

systemctl  stop  libvirtd

systemctl  disable  libvirtd

read  -p    'selinux和firewalld已关闭,按回车键继续配置本地yum源...'

#准备本地yum源

mkdir  -pv  /dvd

mount  /dev/cdrom  /dvd

chmod  +x  /etc/rc.d/rc.local

grep  dvd  /etc/rc.d/rc.local || echo  'mount  /dev/cdrom  /dvd'  > /etc/rc.d/rc.local

source  /etc/rc.d/rc.local

cd  /etc/yum.repos.d

mkdir  -pv  bak/

mv  -v  *.repo  bak/

cat  > dvd.repo <<EOF

[centos73]

name=centos linux 7.3 local

baseurl=file:///dvd

enabled=1

gpgcheck=0

EOF

yum  clean  all

yum  repolist

mkdir  -pv  /var/ftp/ks/

yum install  -y dnsmasq  vsftpd  curl  tftp-server  xinetd

cp  -v  /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

grep -Ev '^#|^$' /etc/dnsmasq.conf

cat  >/etc/dnsmasq.d/dhcp.conf <<EOF

#接口设置,在94行

interface=ens33,lo

#监听IP地址,在99行

#listen-address=192.168.10.7

#绑定接口,在112行

#bind-interfaces

#域名,#在132行

domain=sky.com

# DHCP range-leases,dhcp租约信息,在145行

dhcp-range= ens33,192.168.10.100,192.168.10.200,255.255.255.0,1h

#ip和mac地址绑定

#dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50

# PXE启动文件和tftp服务器ip地址,在418行

dhcp-boot=pxelinux.0,pxeserver,192.168.10.7   

# Gateway网关,在312行

dhcp-option=3,192.168.10.1

# DNS服务器IP地址

dhcp-option=6,114.114.114.114,8.8.8.8

server=8.8.4.4

# Broadcast Address广播地址

dhcp-option=28,192.168.10.255

# NTP Server网络时间服务器IP地址,

dhcp-option=42,0.0.0.0

#pxe启动时的命令提示,在448行

pxe-prompt="Press F8  for menu.", 5

#pxe服务,在458行

pxe-service=x86PC,"Install CentOS 7 from network server 192.168.10.7", pxelinux

#启用tftp服务,在473行

enable-tftp

#tftp文件共享的根目录,在476行

tftp-root=/var/lib/tftpboot

EOF

grep -Ev '^#|^$' /etc/dnsmasq.d/dhcp.conf

yum install  -y syslinux  mlocate

yum install  -y  tftp-server  xinetd

ls /usr/share/syslinux

updatedb

locate  pxelinux.0

cp  -v  /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

mkdir      /var/lib/tftpboot/pxelinux.cfg

touch      /var/lib/tftpboot/pxelinux.cfg/default

cat  > /var/lib/tftpboot/pxelinux.cfg/default <<EOF

default menu.c32

prompt 0

timeout 15

ONTIMEOUT local

menu title ##########      PXE Boot Menu ##########

label 1

menu label ^1)InstallCentOS7  x64 withLocalRepo

menu  default

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=ftp://192.168.10.7/dvd  devfs=nomount

#ks=ftp://192.168.10.7/ks/7text.ks

label 2

menu label ^2)InstallCentOS7 x64 with http://mirror.centos.org Repo

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=http://mirror.centos.org/centos/7/os/x86_64/  devfs=nomount  ip=dhcp

label 3

menu label ^3)InstallCentOS7 x64 withLocalRepousing VNC

kernel      centos7/vmlinuz

append initrd=centos7/initrd.img  method=ftp://192.168.10.7/dvd  devfs=nomount inst.vnc  inst.vncpassword=password

label 4

menu label ^4)Bootfromlocal      drive

EOF

cat  /var/lib/tftpboot/pxelinux.cfg/default

mkdir  -v  /var/lib/tftpboot/centos7/

cp  -v  /dvd/isolinux/*  /var/lib/tftpboot/centos7/

pkill  -9  dnsmasq

systemctl restart dnsmasq

systemctl restart vsftpd

systemctl status dnsmasq

systemctl status vsftpd

systemctl enable dnsmasq

systemctl enable vsftpd

netstat  -atunlp|grep  dnsmasq

#脚本编写完毕

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259