配置 HTTP/FTP/TFTP 服务器

我们可以根据自己的情况使用HTTP或者 FTP。

这里,我们将介绍所有2个服务器的配置,以便我们可以选择其中之一。

HTTP服务器

# vi /etc/httpd/conf/httpd.conf
## 在文件的最后面添加下面内容
<VirtualHost 192.168.1.6:80>
    ServerAdmin root@test.example.com
    DocumentRoot /var/lib/tftpboot/images
    ServerName test.example.com
    ErrorLog logs/test.example.com-error_log
    CustomLog logs/test.example.com-access_log common
</VirtualHost>
<Directory /var/lib/tftpboot/images>
AllowOverride None
Options Indexes FollowSymlinks
Order allow,deny
Allow from all
</Directory>

重启httpd服务

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

使用浏览器打开服务器ip (http://192.168.1.6/centos/6/i386/) 并验证是否可以看到所有文件。

FTP服务器

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_root=/var/lib/tftpboot/images

使用浏览器打开 (ftp://192.168.1.6/centos/6/i386/) 并验证是否可以看到所有文件。

重启服务

# /etc/init.d/vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

配置 TFTP 服务器

安装这些软件包后,将以下文件从指定目录复制到 /var/lib/tftpboot

# cp /usr/share/syslinux/pxelinux.0     /var/lib/tftpboot/
# cp /usr/share/syslinux/chain.c32     /var/lib/tftpboot/
# cp /usr/share/syslinux/menu.c32     /var/lib/tftpboot/
# cp /usr/share/syslinux/memdisk     /var/lib/tftpboot/
# cp /usr/share/syslinux/mboot.c32     /var/lib/tftpboot/

接下来我们将创建tftp服务器所需的配置文件

# mkdir /var/lib/tftpboot/pxelinux.cfg

在“/var/lib/tftpboot/pxelinux.cfg”下创建一个新文件“default”并添加以下条目

如果是 HTTP 服务器:

# vi /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
TIMEOUT 100
ONTIMEOUT Local
MENU TITLE PXE Menu
MENU seperator
LABEL CentOS 6.2
KERNEL images/centos/6/i386/images/pxeboot/vmlinuz
APPEND initrd=images/centos/6/i386/images/pxeboot/initrd.img method=http://192.168.1.6/centos/6/i386 devfs=nomount
MENU seperator
LABEL Local
LOCALBOOT 0

这里需要更改的两件事 KERNEL 定义了 PXELINUX 引导加载程序将从其中加载的位置
APPEND 定义要加载的 PXE initrd 镜像文件的位置

如果是 FTP 服务器:

ftp 服务器没有太大变化,只需替换上面文件中的以下行

APPEND initrd=images/centos/6/i386/images/pxeboot/initrd.img method=ftp://192.168.1.6/centos/6/i386 devfs=nomount

在 xinetd 中启用 tftp 服务

# vi /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

重启相关服务

# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

确保 tftp 服务器正常工作

登录到我们计划执行 PXE 安装的同一子网中的任何目标节点

安装tftp客户端

# yum install tftp

或者我们也可以使用 rpm 安装,如下所示

# rpm -Uvh /tmp/tftp-5.2-13.el7.x86_64.rpm
warning: /tmp/tftp-5.2-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
Updating/installing...
   1:tftp-5.2-13.el7                  ################################# [100%]

连接到 TFTP 服务器

# tftp
(to) 192.168.1.6

如我们所见,它已正确连接

tftp> status
Connected to 192.168.1.6.
Mode: netascii Verbose: off Tracing: off Literal: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

接下来尝试从服务器下载一个 tftp 文件

tftp> get linux-install/rhel7_64/vmlinuz
tftp> quit

如果文件存在,现在检查当前路径

# ls vmlinuz
vmlinuz

我们的 tftp 工作正常

配置 DHCP 服务器

# vi /etc/dhcp/dhcpd.conf
option domain-name "example.com";
option domain-name-servers test.example.com;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.1.20 192.168.1.25;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
  allow booting;
        allow bootp;
        next-server 192.168.1.6;
        filename "pxelinux.0";
}

重要的提示:

在 dhcp 服务器中,确保添加这些行

next-server 192.168.1.6;
filename "pxelinux.0";

因为这些定义了 tftp 服务器的地址和从 dhcp 服务器获取 IP 地址后要查找的文件

重启相关服务

# service dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]

确保服务在重启后启动

# chkconfig httpd on
# chkconfig xinetd on
# chkconfig dhcpd on

iptables 规则

对于 DHCP 服务器

# iptables -I INPUT -m state --state NEW -p udp --dport 69 -j ACCEPT

对于 HTTP 服务器

# iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

对于 FTP 服务器

# iptables -I INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

我们已准备好测试 PXE 服务器。
启动一台机器,然后从 Bios 中选择网络启动选项。
你应该看到下面的屏幕

重要的提示:

检查 selinux 策略,因为它可能会阻止 TFTP 和 DHCP 服务。
在我的服务器中,我已经把它禁用。

# getenforceDisabled

在 PXE 服务器上准备安装介质

接下来,我们需要将所有文件从安装媒体(CD/DVD、ISO)复制到我们的 PXE 服务器。

我们还可以在 PXE 服务器上挂载媒体文件,以防我们不想复制所有文件,但使用这种方式我们将只能为一个操作系统配置 PXE 服务器。
要配置多个操作系统,我们必须将操作系统文件复制到不同操作系统的单独目录中。

假设我们想 配置一个 PXE 服务器来安装 CentOS 6.2

让我们创建单独的目录来保存所有安装文件

# mkdir -p /var/lib/tftpboot/images/centos/6/i386/
# mkdir -p /var/lib/tftpboot/images/centos/6/x86_64/

接下来从安装媒体复制安装文件。
如果我们有操作系统的 iso 镜像,我们可以使用 WinSCP(在 Windows 上)复制所有文件。
如果镜像安装在 Linux 机器上,那么我们可以使用 scp 命令进行复制。

为了跳过冗长的过程,我们现在只需将 DVD 安装到相关目的地。

# mount /dev/sr0 /var/lib/tftpboot/images/centos/6/i386/
mount: block device /dev/sr0 is write-protected, mounting read-only

注意:我的 cdrom 安装在 /dev/sr0 上,你的系统可能有所不同。使用df -h查看

准备工作

我们将在Red Hat Linux 6(32 位)上实现PXE服务器。
服务器IP:192.168.1.6

  • dhcp
  • tftp服务器
  • syslinux
  • http/ftp(任何一个)

使用 yum 安装所需的包

# yum -y install dhcp tftp-server syslinux http ftp vsftpd
如何在 CentOS/Red Hat 6 Linux 中配置 PXE 引导服务器

PXE 是 Preboot eXecution Environment 的缩写,它描述了一个客户端服务器标准化环境,用于从网络引导客户端上的软件组件。
其主要用于通过使用网络接口存储在 PXE 服务器上的安装介质来引导客户端计算机。

在本文中,将介绍使用 http 和 ftp 配置 PXE 引导服务器的步骤。

日期:2020-06-02 22:18:27 来源:oir作者:oir