实验环境
rhel6.4_x64 系统
在XEN 虚拟机中进行实验。
在XEN 虚拟机中进行实验。
IP 分配:
192.168.1.254 # 网关地址
192.168.1.222 # 虚拟机(DHCP、TFTP、FTP 服务器)
192.168.1.104 # 真机
192.168.1.210 - 192.168.1.216 # DHCP地址池
网络连接方式:桥接
原理图:
一、配置网卡为桥接状态
1、先配置真机网卡
[root@student-04 Desktop]# cd /etc/sysconfig/network-scripts/
[root@student-04 network-scripts]# cp ifcfg-eth0 ifcfg-br0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="6C:62:6D:A4:03:39"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="7af60f73-2517-40aa-b976-6d22dc51cb2b"
BRIDGE=br0
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Bridge"
IPADDR=192.168.1.104 # 注意 配置桥接之后 eth0 上不配IP 地址,而是在br0上做配置
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=202.96.128.166
DNS2=202.96.128.68
option domain-name "365linux.com"; # 设置域名
option domain-name-servers 192.168.1.222, 202.96.128.86; # 配置DNS 服务器
default-lease-time 600; # 设置租约时间
max-lease-time 7200; # 设置最大租约时间
log-facility local7; # 设置日志格式
subnet 192.168.1.0 netmask 255.255.255.0 { # 设置可用网段
range 192.168.1.210 192.168.1.216; # 设置地址池
option routers 192.168.1.254; # 指定网关地址
filename "linux-install/pxelinux.0"; # 指定pxelinux.0 所在位置
next-server 192.168.1.222; # 指定TFTP 服务器地址为192.168.1.222
}
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="6C:62:6D:A4:03:39"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="7af60f73-2517-40aa-b976-6d22dc51cb2b"
BRIDGE=br0
2、配置桥接网卡
[root@student-04 network-scripts]# vim ifcfg-br0
DEVICE="br0"
[root@student-04 network-scripts]# vim ifcfg-br0
BOOTPROTO="none"
ONBOOT="yes"
TYPE="Bridge"
IPADDR=192.168.1.104 # 注意 配置桥接之后 eth0 上不配IP 地址,而是在br0上做配置
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=202.96.128.166
DNS2=202.96.128.68
网卡配置完成后,需要关闭NetworkManager ,否则重启网络服务会报错
[root@student-04 network-scripts]# service NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
[root@student-04 network-scripts]# service network restart
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface br0: [ OK ]
3、配置虚拟机服务器网卡为桥接模式
[root@student-04 network-scripts]# service NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
[root@student-04 network-scripts]# service network restart
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface br0: [ OK ]
3、配置虚拟机服务器网卡为桥接模式
1、安装DHCP 服务
[root@vhost1 yum.repos.d]# yum install dhcp
2、配置DHCP服务
[root@vhost1 ~]# vim /etc/dhcp/dhcpd.conf
:r /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample # 在末行模式下执行,将文件读取到dhcpd.conf 中
[root@vhost1 ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "365linux.com"; # 设置域名
option domain-name-servers 192.168.1.222, 202.96.128.86; # 配置DNS 服务器
default-lease-time 600; # 设置租约时间
max-lease-time 7200; # 设置最大租约时间
log-facility local7; # 设置日志格式
subnet 192.168.1.0 netmask 255.255.255.0 { # 设置可用网段
range 192.168.1.210 192.168.1.216; # 设置地址池
option routers 192.168.1.254; # 指定网关地址
filename "linux-install/pxelinux.0"; # 指定pxelinux.0 所在位置
next-server 192.168.1.222; # 指定TFTP 服务器地址为192.168.1.222
}
三、安装配置TFTP
1、安装TFTP
[root@vhost1 ~]# yum install tftp-server
2、配置TFTP
TFTP 的配置相对比较简单,只需要开启即可
[root@vhost1 ~]# vim /etc/xinetd.d/tftp
[root@vhost1 ~]# vim /etc/xinetd.d/tftp
disable =
no
开启之后,需要将所需的文件拷贝到tftp 默认目录下,我创建的目录结构如下:
/var/lib/tftpboot/ --> linux-install --> pxelinux.0
--> pxelinux.cfg --> default
--> rhel6.4_x64 --> vmlinuz
--> initrd.img
--> boot.msg
--> splash.jpg
--> vesamenu.c32
以下是创建目录步骤
注:我已将rhel6.4 镜像解压放到192.168.1.254 上面,需要什么文件的时候,直接下载到本地。
[root@vhost1 ~]# cd /var/lib/tftpboot/
[root@vhost1 tftpboot]# mkdir linux-install
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/splash.jpg
[root@vhost1 rhel6.4_x64]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/initrd.img
default vesamenu.c32 # 默认使用图形菜单,注意这个文件的相对路径;
#prompt 1 # 不使用图形菜单,而是用 boot.msg 定义的菜单时,要启用该项;
label linux auto install
menu label ^Auto install linux system
kernel rhel6.4_x64/vmlinuz
append initrd=rhel6.4_x64/initrd.img xdriver=vesa nomodeset
label local
menu label Boot from ^local drive
menu default # 60 秒后默认加载的选项。
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
[root@vhost1 ~]# modprobe nf_conntrack_ftp
[root@vhost1 ~]# modprobe nf_nat_ftp
[root@vhost1 tftpboot]# mkdir linux-install
[root@vhost1 tftpboot]# cd linux-install
[root@vhost1 linux-install]# yum install syslinux
[root@vhost1 linux-install]# cp /usr/share/syslinux/pxelinux.0 .
[root@vhost1 linux-install]# yum install syslinux
[root@vhost1 linux-install]# cp /usr/share/syslinux/pxelinux.0 .
[root@vhost1 linux-install]# mkdir pxelinux.cfg
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/isolinux.cfg
[root@vhost1 linux-install]# mv isolinux.cfg pxelinux.cfg/default
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/boot.msg
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/isolinux.cfg
[root@vhost1 linux-install]# mv isolinux.cfg pxelinux.cfg/default
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/splash.jpg
[root@vhost1 linux-install]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/vesamenu.c32
[root@vhost1 linux-install]#rhel6.4_x64
[root@vhost1 rhel6.4_x64]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/vmlinuz
[root@vhost1 rhel6.4_x64]# wget http://192.168.1.254/source/rhel6.4_x64/isolinux/initrd.img
四、安装配置FTP
1、安装VSFTP
[root@vhost1 ~]# yum install vsftpd
2、将镜像挂载上去后,将镜像拷贝到FTP 目录下
[root@vhost1 pub]# mount /dev/cdrom /mnt/cdrom/
[root@vhost1 pub]# cp -a /mnt/cdrom/* /var/ftp/pub/
[root@vhost1 pub]# ls /var/ftp/pub/
EFI EULA_zh RELEASE-NOTES-bn-IN.html RELEASE-NOTES-ko-KR.html RELEASE-NOTES-zh-CN.html
EULA GPL RELEASE-NOTES-de-DE.html RELEASE-NOTES-ml-IN.html RELEASE-NOTES-zh-TW.html
EULA_de HighAvailability RELEASE-NOTES-en-US.html RELEASE-NOTES-mr-IN.html repodata
EULA_en p_w_picpaths RELEASE-NOTES-es-ES.html RELEASE-NOTES-or-IN.html ResilientStorage
EULA_es isolinux RELEASE-NOTES-fr-FR.html RELEASE-NOTES-pa-IN.html RPM-GPG-KEY-redhat-beta
EULA_fr LoadBalancer RELEASE-NOTES-gu-IN.html RELEASE-NOTES-pt-BR.html RPM-GPG-KEY-redhat-release
EULA_it media.repo RELEASE-NOTES-hi-IN.html RELEASE-NOTES-ru-RU.html ScalableFileSystem
EULA_ja Packages RELEASE-NOTES-it-IT.html RELEASE-NOTES-si-LK.html Server
EULA_ko README RELEASE-NOTES-ja-JP.html RELEASE-NOTES-ta-IN.html TRANS.TBL
[root@vhost1 pub]# mount /dev/cdrom /mnt/cdrom/
[root@vhost1 pub]# cp -a /mnt/cdrom/* /var/ftp/pub/
[root@vhost1 pub]# ls /var/ftp/pub/
EFI EULA_zh RELEASE-NOTES-bn-IN.html RELEASE-NOTES-ko-KR.html RELEASE-NOTES-zh-CN.html
EULA GPL RELEASE-NOTES-de-DE.html RELEASE-NOTES-ml-IN.html RELEASE-NOTES-zh-TW.html
EULA_de HighAvailability RELEASE-NOTES-en-US.html RELEASE-NOTES-mr-IN.html repodata
EULA_en p_w_picpaths RELEASE-NOTES-es-ES.html RELEASE-NOTES-or-IN.html ResilientStorage
EULA_es isolinux RELEASE-NOTES-fr-FR.html RELEASE-NOTES-pa-IN.html RPM-GPG-KEY-redhat-beta
EULA_fr LoadBalancer RELEASE-NOTES-gu-IN.html RELEASE-NOTES-pt-BR.html RPM-GPG-KEY-redhat-release
EULA_it media.repo RELEASE-NOTES-hi-IN.html RELEASE-NOTES-ru-RU.html ScalableFileSystem
EULA_ja Packages RELEASE-NOTES-it-IT.html RELEASE-NOTES-si-LK.html Server
EULA_ko README RELEASE-NOTES-ja-JP.html RELEASE-NOTES-ta-IN.html TRANS.TBL
EULA_pt RELEASE-NOTES-as-IN.html RELEASE-NOTES-kn-IN.html RELEASE-NOTES-te-IN.html
五、配置default 文件
[root@vhost1 linux-install]# vim pxelinux.cfg/default
[root@vhost1 linux-install]# vim pxelinux.cfg/default
#prompt 1 # 不使用图形菜单,而是用 boot.msg 定义的菜单时,要启用该项;
timeout 600 # 等待时间 60 秒
#display boot.msg
menu background splash.jpg
menu title Welcome to 365LINUX Installer! # 菜单标题
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux # 菜单选项,这里有3个,安装 RHEL6 、自动安装RHEL6(ks)和从本地启动。
menu label ^Install linux system
kernel rhel6.4_x64/vmlinuz
append initrd=rhel6.4_x64/initrd.img # 注意这里的路径都是相对于linux-install 目录而言的
#display boot.msg
menu background splash.jpg
menu title Welcome to 365LINUX Installer! # 菜单标题
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux # 菜单选项,这里有3个,安装 RHEL6 、自动安装RHEL6(ks)和从本地启动。
menu label ^Install linux system
kernel rhel6.4_x64/vmlinuz
append initrd=rhel6.4_x64/initrd.img # 注意这里的路径都是相对于linux-install 目录而言的
label linux auto install
menu label ^Auto install linux system
kernel rhel6.4_x64/vmlinuz
append initrd=rhel6.4_x64/initrd.img xdriver=vesa nomodeset
label local
menu label Boot from ^local drive
menu default # 60 秒后默认加载的选项。
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
六、启动服务,配置防火墙
[root@vhost1 ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@vhost1 ~]# service dhcpd start
Starting dhcpd: [ OK ]
[root@vhost1 ~]# service xinetd start
Starting xinetd: [ OK ]
Starting dhcpd: [ OK ]
[root@vhost1 ~]# service xinetd start
Starting xinetd: [ OK ]
防火墙配置
[root@vhost1 ~]# iptables -I INPUT 4 -m state --state NEW -p tcp --dport 21 -j ACCEPT
[root@vhost1 ~]# iptables -I INPUT 4 -m state --state NEW -p udp --dport 69 -j ACCEPT
[root@vhost1 ~]# iptables -I INPUT 4 -m state --state NEW -p udp --dport 67 -j ACCEPT
[root@vhost1 ~]# iptables -I INPUT 4 -m state --state NEW -p udp --dport 67 -j ACCEPT
[root@vhost1 ~]# modprobe nf_conntrack_ftp
[root@vhost1 ~]# modprobe nf_nat_ftp
[root@vhost1 ~]# vim /etc/sysconfig/iptables-config
到这一步就是选择安装介质的时候,需要选择URL
注意:介质可以是HTTP、FTP、NFS 等,需要写上对应的路径
设置FTP 路径
如果所设路径没问题,可以正常访问到,那么将来到以下安装界面,接下来的步骤便不再重复
注意,在设置路径的时候,例如我设置的是ftp ,那么先在本机上测试能否正常访问ftp 服务器,能否正常读取到FTP上的资源
检查的话,大概可以从以下几个方面入手:
1. 防火墙
2. selinux
3. 填写的路径是否正确
例如我设置前,就发现FTP 能访问到,但是却访问不到资源,所以在上面那一步填写FTP 地址按NEXT 的时候,总是提示unable to receive ...
检查了下,是selinux 的问题由于我是放在/var/ftp/pub 目录下,所以那些文件的上下文标签不符合ftp 所要求的,改一下即可
[root@vhost1 ~]# ll /var/ftp/pub -Z
dr-xr-xr-x. root root system_u:object_r:iso9660_t:s0 EFI
lrwxrwxrwx. root root system_u:object_r:iso9660_t:s0 EULA -> EULA_en
-r--r--r--. root root system_u:object_r:iso9660_t:s0 EULA_de
-r--r--r--. root root system_u:object_r:iso9660_t:s0 EULA_en
[root@vhost1 ~]# ll /var/ftp/pub -Z
dr-xr-xr-x. root root system_u:object_r:iso9660_t:s0 EFI
lrwxrwxrwx. root root system_u:object_r:iso9660_t:s0 EULA -> EULA_en
-r--r--r--. root root system_u:object_r:iso9660_t:s0 EULA_de
-r--r--r--. root root system_u:object_r:iso9660_t:s0 EULA_en
[root@vhost1 ~]# chcon -t public_content_t -R /var/ftp/pub/*
[root@vhost1 ~]# ll /var/ftp/pub -Z
dr-xr-xr-x. root root system_u:object_r:public_content_t:s0 EFI
lrwxrwxrwx. root root system_u:object_r:public_content_t:s0 EULA -> EULA_en
-r--r--r--. root root system_u:object_r:public_content_t:s0 EULA_de
[root@vhost1 ~]# ll /var/ftp/pub -Z
dr-xr-xr-x. root root system_u:object_r:public_content_t:s0 EFI
lrwxrwxrwx. root root system_u:object_r:public_content_t:s0 EULA -> EULA_en
-r--r--r--. root root system_u:object_r:public_content_t:s0 EULA_de