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

#腳本編寫完畢

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。