分类 系统运维 下的文章

提问: 我想在我的Linux中安排一个计划任务,该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务?

cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。

(题图来自 eagleapex.com)

从命令行中添加cron任务

要添加cron任务,你可以使用称为crontab的命令行工具。

输入下面的命令会创建一个以当前用户运行的新cron任务。

$ crontab -e

如果你想要以其他用户运行cron任务,输入下面的命令。

$ sudo crontab -u <username> -e

你将会看见一个文本编辑窗口,这里你可以添加或者编辑cron任务。默认使用nono编辑器。

每个cron任务的格式如下。

<分钟> <小时> <日> <月> <星期> <命令>

前5个元素定义了任务的计划,最后一个元素是命令或者脚本的完整路径。

下面是一些cron任务示例。

  • * * * * * /home/dan/bin/script.sh: 每分钟运行。
  • 0 * * * * /home/dan/bin/script.sh: 每小时运行。
  • 0 0 * * * /home/dan/bin/script.sh: 每天零点运行。
  • 0 9,18 * * * /home/dan/bin/script.sh: 在每天的9AM和6PM运行。
  • 0 9-18 * * * /home/dan/bin/script.sh: 在9AM到6PM的每个小时运行。
  • 0 9-18 * * 1-5 /home/dan/bin/script.sh: 周一到周五的9AM到6PM每小时运行。
  • */10 * * * * /home/dan/bin/script.sh: 每10分钟运行。

一旦完成上面的设置步骤后,按下Ctrl+X来保存并退出编辑器。此时,新增的计划任务应该已经激活了。

要查看存在的计划任务,使用下面的命令:

$ crontab -l

从GUI添加计划任务

如果你在Linux桌面环境中,你可以使用crontab的更加友好的GUI前端来添加或者添加一个cron任务。

在Gnome桌面中,有一个Gnome Schedule(gnome-schedule包)。

在KDE桌面中,有一个Task Scheduler(kcron包)。


via: http://ask.xmodulo.com/add-cron-job-linux.html

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如:

要通过Salt来更新所有服务器,你只需运行以下命令即可

salt '*' pkg.upgrade

安装SaltStack到Linux上

如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从这里添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。

Salt采用服务器-客户端模式,服务器端称为领主,而客户端则称为下属。

安装并配置Salt领主

[root@salt-master~]# yum install salt-master

Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但我还是建议你将日志配置得更详细点,以方便日后排除故障。

[root@salt-master ~]# vim /etc/salt/master
# 默认是warning,修改如下
log_level: debug
log_level_logfile: debug

[root@salt-master ~]# systemctl start salt-master

安装并配置Salt下属

[root@salt-minion~]#yum install salt-minion

# 添加你的Salt领主的主机名
[root@salt-minion~]#vim /etc/salt/minion
master: salt-master.com
# 启动下属
[root@salt-minion~] systemctl start salt-minion

在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。

在Salt领主服务器上列出并接受密钥

# 列出所有密钥
[root@salt-master~] salt-key -L
Accepted Keys:
Unaccepted Keys:
minion.com
Rejected Keys:

# 使用id 'minion.com'命令接受密钥
[root@salt-master~]salt-key -a minion.com

[root@salt-master~] salt-key -L
Accepted Keys:
minion.com
Unaccepted Keys:
Rejected Keys:

在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。

Salt命令行实例

# 检查下属是否启动并运行
[root@salt-master~]  salt 'minion.com' test.ping
minion.com:
    True
# 在下属客户机上运行shell命令
 [root@salt-master~]#  salt 'minion.com' cmd.run 'ls -l'
minion.com:
    total 2988
    -rw-r--r--. 1 root root 1024 Jul 31 08:24 1g.img
    -rw-------. 1 root root     940 Jul 14 15:04 anaconda-ks.cfg
    -rw-r--r--. 1 root root 1024  Aug 14 17:21 test
# 安装/更新所有服务器上的软件
[root@salt-master ~]# salt '*' pkg.install git

salt命令需要一些组件来发送信息,其中之一是下属客户机的id,而另一个是下属客户机上要调用的函数。

在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。

‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。

颗粒实例

Salt使用一个名为颗粒(Grains)的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。

[root@vps4544 ~]# salt -G 'os:Centos' test.ping
minion:
    True

更多颗粒实例,请访问http://docs.saltstack.com/en/latest/topics/targeting/grains.html

通过状态文件系统进行包管理

为了使软件配置自动化,你需要使用状态系统,并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍,这将有助于你更好地理解它的配置。

VIM状态文件实例

[root@salt-master~]# vim /srv/salt/vim.sls
vim-enhanced:
  pkg.installed
/etc/vimrc:
  file.managed:
    - source: salt://vimrc
    - user: root
    - group: root
    - mode: 644

该文件的第一和第三行称为状态id,它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明,‘pkg’和‘file’是状态声明,而‘installed’和‘managed’是函数声明。函数接受参数,用户、组、模式和源都是函数‘managed’的参数。

要将该配置应用到下属客户端,请移动你的‘vimrc’文件到‘/src/salt’,然后运行以下命令。

[root@salt-master~]# salt 'minion.com' state.sls vim
minion.com:
----------
          ID: vim-enhanced
    Function: pkg.installed
      Result: True
     Comment: The following packages were installed/updated: vim-enhanced.
     Started: 09:36:23.438571
    Duration: 94045.954 ms
     Changes:
              ----------
              vim-enhanced:
                  ----------
                  new:
                      7.4.160-1.el7
                  old:


Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

你也可以添加依赖关系到你的配置中。

[root@salt-master~]# vim /srv/salt/ssh.sls
openssh-server:
  pkg.installed


/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://ssh/sshd_config

sshd:
  service.running:
    - require:
      - pkg: openssh-server

这里的‘require’声明是必须的,它在‘service’和‘pkg’状态之间创建依赖关系。该声明将首先检查包是否安装,然后运行服务。

但是,我更偏向于使用‘watch’声明,因为它也可以检查文件是否修改和重启服务。

[root@salt-master~]# vim /srv/salt/ssh.sls
openssh-server:
  pkg.installed


/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://sshd_config

sshd:
  service.running:
    - watch:
      - pkg: openssh-server
      - file: /etc/ssh/sshd_config

[root@vps4544 ssh]# salt 'minion.com' state.sls ssh
seven.leog.in:
     Changes:
----------
          ID: openssh-server
    Function: pkg.installed
      Result: True
     Comment: Package openssh-server is already installed.
     Started: 13:01:55.824367
    Duration: 1.156 ms
     Changes:
----------
          ID: /etc/ssh/sshd_config
    Function: file.managed
      Result: True
     Comment: File /etc/ssh/sshd_config updated
     Started: 13:01:55.825731
    Duration: 334.539 ms
     Changes:
              ----------
              diff:
                  ---
                  +++
                  @@ -14,7 +14,7 @@
                   # SELinux about this change.
                   # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
                   #
                  -Port 22
                  +Port 422
                   #AddressFamily any
                   #ListenAddress 0.0.0.0
                   #ListenAddress ::

----------
          ID: sshd
    Function: service.running
      Result: True
     Comment: Service restarted
     Started: 13:01:56.473121
    Duration: 407.214 ms
     Changes:
              ----------
              sshd:
                  True

Summary
------------
Succeeded: 4 (changed=2)
Failed:    0
------------
Total states run:     4

在单一目录中维护所有的配置文件是一项复杂的大工程,因此,你可以创建子目录并在其中添加配置文件init.sls文件。

[root@salt-master~]# mkdir /srv/salt/ssh
[root@salt-master~]# vim /srv/salt/ssh/init.sls
openssh-server:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 600
    - source: salt://ssh/sshd_config

sshd:
  service.running:
    - watch:
      - pkg: openssh-server
      - file: /etc/ssh/sshd_config

[root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/
[root@vps4544 ssh]# salt 'minion.com' state.sls ssh

Top文件和环境

top文件(top.sls)是用来定义你的环境的文件,它允许你映射下属客户机到包,默认环境是‘base’。你需要定义在基本环境下,哪个包会被安装到哪台服务器。

如果对于一台特定的下属客户机而言,有多个环境,并且有多于一个的定义,那么默认情况下,基本环境将取代其它环境。

要定义环境,你需要将它添加到领主配置文件的‘file\_roots’指针。

[root@salt-master ~]# vim /etc/salt/master
file_roots:
  base:
    - /srv/salt
  dev:
    - /srv/salt/dev

现在,添加一个top.sls文件到/src/salt。

[root@salt-master ~]# vim /srv/salt/top.sls
base:
  '*':
    - vim
  'minion.com':
     - ssh

应用top文件配置

[root@salt-master~]# salt '*' state.highstate
minion.com:
----------
          ID: vim-enhanced
    Function: pkg.installed
      Result: True
     Comment: Package vim-enhanced is already installed.
     Started: 13:10:55
    Duration: 1678.779 ms
     Changes:
----------
          ID: openssh-server
    Function: pkg.installed
      Result: True
     Comment: Package openssh-server is already installed.
     Started: 13:10:55.
    Duration: 2.156 ms

下属客户机将下载top文件并搜索用于它的配置,领主服务器也会将配置应用到所有下属客户机。


这仅仅是一个Salt的简明教程,如果你想要深入学习并理解,你可以访问下面的链接。如果你已经在使用Salt,那么请告诉我你的建议和意见吧。

更新: Foreman 已经通过插件支持salt。

阅读链接

颗粒

Salt和Puppet的充分比较

内建执行模块的完全列表


via: http://techarena51.com/index.php/getting-started-with-saltstack/

作者:Leo G 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

首先,Linux中国祝贺读者 2015羊年春节快乐,万事如意! 。下面开始这个新年版审计工具的介绍。

安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。

我们知道Linux系统上有一个叫 auditd 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。那么auditd 是什么?该如何使用呢?下面我们开始介绍。

什么是auditd?

auditd(或 auditd 守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。

安装 auditd

Ubuntu系统中,我们可以使用 wajig 工具或者 apt-get 工具 安装auditd。

按照下面的说明安装auditd,安装完毕后将自动安装以下auditd和相关的工具:

  • auditctl : 即时控制审计守护进程的行为的工具,比如如添加规则等等。
  • /etc/audit/audit.rules : 记录审计规则的文件。
  • aureport : 查看和生成审计报告的工具。
  • ausearch : 查找审计事件的工具
  • auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中。
  • autrace : 一个用于跟踪进程的命令。
  • /etc/audit/auditd.conf : auditd工具的配置文件。

首次安装 auditd 后, 审计规则是空的。

可以使用以下命令查看:

$ sudo auditctl -l

以下我们介绍如何给auditd添加审计规则。

如何使用auditd

Audit 文件和目录访问审计

我们使用审计工具的一个基本的需求是监控文件和目录的更改。使用auditd工具,我们可通过如下命令来配置(注意,以下命令需要root权限)。

文件审计

$ sudo auditctl -w /etc/passwd -p rwxa

选项 :

  • -w path : 指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd
  • -p : 指定触发审计的文件/目录的访问权限
  • rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)

目录审计

使用类似的命令来对目录进行审计,如下:

$ sudo auditctl -w /production/

以上命令将监控对 /production 目录 的所有访问。

现在,运行 auditctl -l 命令即可查看所有已配置的规则。

下面开始介绍审计日志。

查看审计日志

添加规则后,我们可以查看 auditd 的日志。使用 ausearch 工具可以查看auditd日志。

我们已经添加规则监控 /etc/passwd 文件。现在可以使用 ausearch 工具的以下命令来查看审计日志了。

$ sudo ausearch -f /etc/passwd
  • -f 设定ausearch 调出 /etc/passwd文件的审计内容

下面是输出 :

time->Mon Dec 22 09:39:16 2014

type=PATH msg=audit(1419215956.471:194): item=0 name="/etc/passwd" inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

type=CWD msg=audit(1419215956.471:194): cwd="/home/pungki"

type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 syscall=5 success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 auid=4294967295 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 comm="sudo" exe="/usr/bin/sudo" key=(null)

下面开始解读输出结果。

  • time : 审计时间。
  • name : 审计对象
  • cwd : 当前路径
  • syscall : 相关的系统调用
  • auid : 审计用户ID
  • uid 和 gid : 访问文件的用户ID和用户组ID
  • comm : 用户访问文件的命令
  • exe : 上面命令的可执行文件路径

以上审计日志显示文件未被改动。

以下我们将要添加一个用户,看看auditd如何记录文件 /etc/passwd的改动的。

time->Mon Dec 22 11:25:23 2014

type=PATH msg=audit(1419222323.628:510): item=1 name="/etc/passwd.lock" inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE

type=PATH msg=audit(1419222323.628:510): item=0 name="/etc/" inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT

type=CWD msg=audit(1419222323.628:510): cwd="/root"

type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 syscall=10 success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="chfn" exe="/usr/bin/chfn" key=(null)

我们可以看到,在指定的时间,/etc/passwd ** 被root用户(uid =0, gid=0)在/root目录下修改。/etc/passwd 文件是使用/usr/bin/chfn** 访问的。

键入 man chfn 可以查看有关chfn更多的信息。

下面我们看另外一个例子。

我们已经配置auditd去监控目录 /production/ 了。这是个新目录。所以我们用ausearch去查看日志的时候会发现什么都没有。

下一步,使用root账户的ls命令列出 /production/ 下的文件信息。再次使用ausearch后,将会显示一些信息。

time->Mon Dec 22 14:18:28 2014 type=PATH msg=audit(1419232708.344:527): item=0 name="/production/" inode=797104 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1419232708.344:527): cwd="/root" type=SYSCALL msg=audit(1419232708.344:527): arch=40000003 syscall=295 success=yes exit=3 a0=ffffff9c a1=95761e8 a2=98800 a3=0 items=1 ppid=3033 pid=3444 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="ls" exe="/bin/ls" key=(null)

和上一个一样,可以得出root账户使用ls命令访问了/production/目录,ls命令的文件目录是 /bin/ls

查看审计报告

一旦定义审计规则后,它会自动运行。过一段时间后,我们可以看看auditd是如何帮我们跟踪审计的。

Auditd提供了另一个工具叫 aureport 。从名字上可以猜到, aureport 是使用系统审计日志生成简要报告的工具。

我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后,audit.log 文件就创建出来了。

生成审计报告,我们可以使用aureport工具。不带参数运行的话,可以生成审计活动的概述。

$ sudo aureport

如上,报告包含了大多数重要区域的信息。

上图可以看出有 3 次授权失败。 使用aureport,我们可以深入查看这些信息。

使用以下命令查看授权失败的详细信息:

$ sudo aureport -au

从上图可以看出,由两个用户在特定的时间授权失败。

如果我们想看所有账户修改相关的事件,可以使用-m参数。

$ sudo aureport -m

Auditd 配置文件

我们已经添加如下规则:

  • $ sudo auditctl -w /etc/passwd -p rwxa
  • $ sudo auditctl -w /production/

现在,如果确信这些规则可以正常工作,我们可以将其添加到/etc/audit/audit.rules中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。

最后,别忘了重启auditd守护程序

# /etc/init.d/auditd restart

# service auditd restart

总结

Auditd是Linux上的一个审计工具。你可以阅读auidtd文档获取更多使用auditd和工具的细节。例如,输入 man auditd 去看auditd的详细说明,或者键入 man ausearch 去看有关 ausearch 工具的详细说明。

请谨慎创建规则。太多规则会使得日志文件急剧增大!


via: http://linoxide.com/how-tos/auditd-tool-security-auditing/

作者:Pungki Arianto 译者:shipsw 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本教程将指引你添加Ubuntu 14.10 Server, Ubuntu 14.04 ServerDebian 7 Wheezy发行版到RHEL/CentOS 7的PXE网络启动环境中。

Add Ubuntu and Debian to PXE Network

添加Ubuntu和Debian到PXE网络

虽然对于本教程,我只会演示怎样来添加64位网络安装镜像,但对于Ubuntu或者Debian的32位系统,或者其它架构的镜像,操作步骤也基本相同。同时,就我而言,我会解释添加Ubuntu 32位源的方法,但不会演示配置。

从PXE服务器安装 Ubuntu或者Debian要求你的客户机必须激活网络连接,最好是使用DHCP通过NAT来进行动态分配地址。以便安装器拉取所需的包并完成安装过程。

前置阅读

步骤 1: 添加Ubuntu 14.10和Ubuntu 14.04服务器到PXE菜单

1. 要将Ubuntu 14.10Ubuntu 14.04添加网络安装源到PXE菜单可以通过两种方式实现:其一是通过下载Ubuntu CD ISO镜像并挂载到PXE服务器机器上,以便可以读取Ubuntu网络启动文件,其二是通过直接下载Ubuntu网络启动归档包并将其解压缩到系统中。下面,我将进一步讨论这两种方法:

使用Ubuntu 14.10和Ubuntu 14.04 CD ISO镜像

为了能使用此方法,你的PXE服务器需要有一台可工作的CD/DVD驱动器(LCTT 译注:也可以不用,参考下面内容)。在一台专用的计算机上,转到Ubuntu 14.10下载Ubuntu 14.04 下载页,获取64位服务器安装镜像,将它烧录到CD,并将CD镜像放到PXE服务器DVD/CD驱动器,然后使用以下命令挂载到系统。

# mount /dev/cdrom  /mnt

如果你的PXE服务器没有CD/DVD驱动器,你可以使用wget命令下载Ubuntu 14.10Ubuntu 14.04的ISO镜像到本地,然后通过下面的命令(下载并挂载CD)挂载到服务器上上述相同位置。

在Ubuntu 14.10上

------------------ 32位 ------------------

# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-i386.iso
# mount -o loop /path/to/ubuntu-14.10-server-i386.iso /mnt

------------------ 64位 ------------------

# wget http://releases.ubuntu.com/14.10/ubuntu-14.10-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.10-server-amd64.iso /mnt

在Ubuntu 14.04上

------------------ 32位 ------------------

# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-i386.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-i386.iso /mnt

------------------ 64位 ------------------

# wget http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-amd64.iso
# mount -o loop /path/to/ubuntu-14.04.1-server-amd64.iso /mnt

使用Ubuntu 14.10和Ubuntu 14.04网络启动镜像

对于该方法,使用以下命令下载Ubuntu网络启动镜像到PXE服务器。

在Ubuntu 14.04上

------------------ 32位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-i386/current/images/netboot/netboot.tar.gz

------------------ 64位 ------------------

# cd
# http://archive.ubuntu.com/ubuntu/dists/utopic/main/installer-amd64/current/images/netboot/netboot.tar.gz

在Ubuntu 14.04上

------------------ 32位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-i386/current/images/netboot/netboot.tar.gz

------------------ 64位 ------------------

# cd
# wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz

对于其它处理器架构,请访问下面的Ubuntu 14.10和Ubuntu 14.04网络启动官方页面,选择你的架构类型并下载所需文件。

2. 在下载完ISO镜像网络启动安装器归档包后,通过执行以下命令拷贝整个ubuntu-installer文件夹到PXE tftp服务器位置。

A). 对于两种CD ISO镜像(32位64位),在挂载特定架构的CD到PXE服务器/mnt系统路径后,请使用以下命令。

# cp -fr /mnt/install/netboot/ubuntu-installer/ /var/lib/tftpboot/

B). 对于网络启动归档,根据特定的Ubuntu架构,请运行以下命令。

# cd
# tar xfz netboot.tar.gz
# cp -rf ubuntu-installer/ /var/lib/tftpboot/

如果你想要在PXE服务器上同时使用两种Ubuntu服务器架构,先请下载,然后根据不同的情况挂载或解压缩32位架构,然后拷贝ubuntu-installer目录到/var/lib/tftpboot,然后卸载CD或删除网络启动归档以及解压缩的文件和文件夹。对于64位架构,请重复上述步骤,以便让最终的tftp路径形成以下结构。

/var/lib/tftpboot/ubuntu-installer/amd64
/var/lib/tftpboot/ubuntu-installer/i386

3. 在接下来的步骤,通过执行以下命令添加Ubuntu 14.10Ubuntu 14.04菜单标签到PXE服务器默认配置文件中。

重要:我不可能同时演示两个Ubuntu版本的操作,出于演示的目的,我添加了Ubuntu 14.04菜单标签到PXE服务器,下述同样的操作也可应用到Ubuntu 14.10,只需对版本号稍作修改,仅仅只要根据你的Ubuntu版本修改版本号和到OS架构的路径。

在你最喜爱的文本编辑器的帮助下,打开PXE默认配置文件,而我偏好nano编辑器。

# nano /var/lib/tftpboot/pxelinux.cfg/default

接下来,添加以下配置到PXE菜单。

对于Ubuntu 14.04 32位

label 1
menu label ^1) Install Ubuntu 14.04 x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet

label 2
menu label ^2) Ubuntu 14.04 Rescue Mode x32
        kernel ubuntu-installer/i386/linux
        append vga=788 initrd=ubuntu-installer/i386/initrd.gz rescue/enable=true -- quiet

对于Ubuntu 14.04 64位

label 5
menu label ^5) Install Ubuntu 14.04 x64
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz -- quiet

label 5
menu label ^6) Ubuntu 14.04 Rescue Mode
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz rescue/enable=true -- quiet

Add Ubuntu to PXE Boot 添加Ubuntu到PXE启动

:如果你想要包含其它Ubuntu架构,请遵循以上相同的操作,并相应替换PXE默认菜单配置文件中的标签号和ubuntu-installer/$architecture\_name/目录。

4. 在配置完PXE菜单配置文件后,根据采用的方法清除源文件,并继续进行客户端PXE安装以测试配置是否正确。

---------------------- 对于CD/DVD方法 ----------------------

# umount /mnt 

---------------------- 对于网络启动方法 ----------------------

# cd && rm -rf ubuntu-installer/netboot.tar.gz pxelinux.* version.info  

下面是Ubuntu 14.04PXE客户端安装测试的截图。

Select Ubuntu from PXE Menu

从PXE菜单选择Ubuntu

Choose Ubuntu Installation Language

选择Ubuntu安装语言

Choose Ubuntu Rescue Mode

选择Ubuntu救援模式

Ubuntu Rescue Mode Shell

Ubuntu救援模式Shell

步骤 2: 添加Debian 7 Wheezy到PXE菜单

5. 添加Debian 7到PXE服务器,需要上述Ubuntu服务器版本相同的步骤。唯一不同点在于网络启动归档镜像下载链接和源目录的名称,现在改为debian-installer

要下载Debian Wheezy网络启动归档,请转到Debian网络安装下载页,从网络启动菜单选择你想要的系统架构,然后点击目录列表中的网络启动链接,并从文件名列表中下载netboot.tar.gz归档包。

因为Debian为众多系统架构如Armel,ia64,Mips,PowerPC,Sparc等等提供了网络安装源,所以在本指南中,我将只讨论64位架构。因为其它架构的配置过程和当前的几乎一样,唯一不同的是debian-installer/$directory\_architecture name

所以,要进一步深入,以root帐号登录到你的PXE服务器,并通过以下命令抓取Debian 7 64位网络启动归档包。

# wget  http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz

Download Debain 7 Netboot

下载Debian 7网络启动包

6.wget下载完成netboot.tar.gz文件后,请将其解压缩并运行以下命令拷贝debian-installer目录到tftp服务器默认路径。

# tar xfz netboot.tar.gz
# cp -rf debian-installer/ /var/lib/tftpboot/

Extract Debain 7 Netboot

解压缩Debian 7网络启动包

Copy Debain 7 Netboot to FTP

拷贝Debian 7网络启动文件到FTP

7. 要添加Debian Wheezy标签到PXE菜单,请用你最喜爱的文本编辑器打开PXE服务器默认配置文件并添加以下标签。

# nano /var/lib/tftpboot/pxelinux.cfg/default

Debian Wheezy 64位的PXE标签菜单。

label 7
menu label ^7) Install Debian 7 x64
        kernel debian-installer/amd64/linux
        append vga=788 initrd=debian-installer/amd64/initrd.gz -- quiet

label 8
menu label ^8) Install Debian 7 x64 Automated
       kernel debian-installer/amd64/linux
       append auto=true priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz -- quiet

Add Debian to PXE Boot

添加Debian到PXE启动

:如果你想要添加其它Debian架构,请重复上述步骤,并相应替换PXE默认菜单配置文件中的标签号和debian-installer/$architecture\_name/目录。

8. 在进行客户端测试配置之前,请执行以下命令来清除Debian源文件。

# cd && rm -rf debian-installer/  netboot.tar.gz  pxelinux.*  version.info 

9. 然后通过网络启动一台客户机,选择从PXE菜单安装Debian,并像正常安装一样进一步下去。

Select Install Debian from PXE

选择从PXE安装Debian

Select Debian Install Language

选择Debian安装语言

以上是要求添加并从RHEL/CentOS 7 PXE服务器安装UbuntuDebian到客户机上的全部步骤。在我的下一篇文章中,我将讨论一种更为复杂的方法,如何使用RHEL/CentOS 7 PXE网络启动服务器来安装Windows 7到客户机。


via: http://www.tecmint.com/add-ubuntu-to-pxe-network-boot/

作者:Matei Cezar 译者:GOLinux 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个?

Netfilter/IPtables 的问题

在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址:

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP 

如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到:

$ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP 

然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . . 

什么是IP集?

这时候就是IP集登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptables规则来匹配这个集合。

你马上就会看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有性能影响。

在Linux中安装IPset工具

为了创建和管理IP集,你需要使用称为ipset的用户空间工具。

要在Debian、Ubuntu或者Linux Mint上安装:

$ sudo apt-get install ipset

Fedora或者CentOS/RHEL 7上安装:

$ sudo yum install ipset 

使用IPset命令禁止IP

让我通过简单的示例告诉你该如何使用ipset命令。

首先,让我们创建一条新的IP集,名为banthis(名字任意):

$ sudo ipset create banthis hash:net

第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有多个类型。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址,你可以使用hash:ip类型。

一旦创建了一个IP集之后,你可以用下面的命令来检查:

$ sudo ipset list 

这显示了一个可用的IP集合列表,并有包含了集合成员的详细信息。默认上,每个IP集合可以包含65536个元素(这里是CIDR块)。你可以通过追加"maxelem N"选项来增加限制。

$ sudo ipset create banthis hash:net maxelem 1000000 

现在让我们来增加IP块到这个集合中:

$ sudo ipset add banthis 1.1.1.1/32
$ sudo ipset add banthis 1.1.2.0/24
$ sudo ipset add banthis 1.1.3.0/24
$ sudo ipset add banthis 1.1.4.10/24 

你会看到集合成员已经改变了。

$ sudo ipset list 

现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用"-m set --match-set "选项。

现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令:

$ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP 

如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原:

$ sudo ipset save banthis -f banthis.txt
$ sudo ipset destroy banthis
$ sudo ipset restore -f banthis.txt 

上面的命令中,我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。

自动IP地址禁用

现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单加到IP集中。

首先让我们从iblocklist.com得到免费的黑名单,这个网站有不同的免费和收费的名单。免费的版本是P2P格式。

接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。

首先,你需要安装了pip(参考这个指导来安装pip)。

使用的下面命令安装iblocklist2ipset。

$ sudo pip install iblocklist2ipset

在一些发行版如Fedora,你可能需要运行:

$ sudo python-pip install iblocklist2ipset 

现在到iblocklist.com,抓取任何一个P2P列表的URL(比如"level1"列表)。

粘帖URL到下面的命令中。

$ iblocklist2ipset generate \
--ipset banthis "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" \
> banthis.txt 

上面的命令运行之后,你会得到一个名为banthis.txt的文件。如果查看它的内容,你会看到像这些:

create banthis hash:net family inet hashsize 131072 maxelem 237302
add banthis 1.2.4.0/24
add banthis 1.2.8.0/24
add banthis 1.9.75.8/32
add banthis 1.9.96.105/32
add banthis 1.9.102.251/32
add banthis 1.9.189.65/32
add banthis 1.16.0.0/14

你可以用下面的ipset命令来加载这个文件:

$ sudo ipset restore -f banthis.txt

现在可以查看自动创建的IP集:

$ sudo ipset list banthis 

在写这篇文章时候,“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。

最后,创建一条iptables命令来屏蔽这些坏蛋!

总结

这篇文章中,我描述了你该如何用强大的ipset来屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset,这样你就可以流畅地维护你的IP屏蔽列表了。那些对ipset的性能提升好奇的人,下图显示了iptables在使用和不使用ipset的基准测试结果(注意时间坐标轴)。

告诉我你多么喜欢这个。:-)


via: http://xmodulo.com/block-unwanted-ip-addresses-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

PXE服务器——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它可以减轻你网络中多台机器同时安装Linux发行版的工作。

Setting PXE Network Boot in RHEL/CentOS 7

在RHEL/CentOS 7中设置PXE网络启动

前置阅读

本文将介绍如何在配置有本地镜像安装仓库的RHEL/CentOS 7 64位上安装并配置一台PXE服务器,仓库源由CentOS 7 DVD 的 ISO镜像提供,并由DNSMASQ服务器提供解析。

该机器提供了DNSDHCP服务,用于网络启动引导的Syslinux包,TFTP-Server——提供了可通过网络使用小文件传输协议下载的可启动镜像,以及提供本地挂载DVD镜像的VSFTPD服务器——它将扮演官方RHEL/CentOS 7镜像安装仓库的角色,安装器将从这里提取所需的包。

步骤1: 安装并配置DNSMASQ服务器

1. 不需要提醒你来确定你的网络接口卡吧,除非你的服务器上有多个网络接口卡,该网卡必须配置有静态IP地址,该IP地址必须处于你要提供PXE服务的网段中。

那么,在你配置好静态IP地址后,更新你的系统并进行其它初始设置。请使用以下命令来安装DNSMASQ进程。

# yum install dnsmasq

Install dnsmasq Package

安装dnsmasq包

2. DNSMASQ的默认的主配置文件位于/etc目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。

首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你爱用的文本编辑器创建一个新的空配置文件,命令如下。

# mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf

3. 现在,复制并粘贴以下配置到dnsmasq.conf文件中,并确保根据如下说明进行相应修改,以适应你的网络设置。

interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0

pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot

Dnsmasq Configuration

Dnsmasq配置

你需要修改的声明有以下这些:

  • interface – 服务器需要监听并提供服务的网络接口。
  • bind-interfaces – 取消注释来绑定到该网络接口
  • domain – 替换为你的域名。
  • dhcp-range – 替换为你的网络掩码定义的网段。
  • dhcp-boot – 替换该IP地址为你的网络接口IP地址。
  • dhcp-option=3,192.168.1.1 – 替换该IP地址为你的网段的网关。
  • dhcp-option=6,92.168.1.1 – 替换该IP地址为你的DNS服务器IP——可以定义多个IP地址。
  • server=8.8.4.4 – 这里放置DNS转发服务器IP地址。
  • dhcp-option=28,10.0.0.255 – 替换该IP地址为网络广播地址——可选项。
  • dhcp-option=42,0.0.0.0 – 这里放置网络时钟服务器——可选项(0.0.0.0地址表示参考自身)。
  • pxe-prompt – 保持默认——按F8进入菜单,60秒等待时间。
  • pxe=service – 使用x86PC作为32为/64位架构,并在字符串引述中输入菜单描述提示。其它类型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI和X86-64EFI。
  • enable-tftp – 启用内建TFTP服务器。
  • tftp-root – 使用/var/lib/tftpboot——所有网络启动文件所在位置。

其它和配置文件相关的高级选项,请参阅dnsmasq手册

步骤2: 安装SYSLINUX启动加载器

4. 在编辑并保存DNSMASQ主配置文件后,我们将继续安装Syslinux PXE启动加载器,命令如下。

# yum install syslinux

Install Syslinux Bootloaders

安装Syslinux启动加载器

5. PXE启动加载器文件位于/usr/share/syslinux系统绝对路径下,你可以通过列出该路径下的内容来查看。该步骤不是必须的,但你可能需要知道该路径,因为在下一步中,我们将拷贝该路径下的所有内容到TFTP服务器路径下。

# ls /usr/share/syslinux

Syslinux Files

Syslinux文件

步骤3: 安装TFTP-Server并加入SYSLINUX加载启动器

6. 现在,让我们进入下一步,安装TFTP-Server。然后,拷贝上述位置中Syslinux包提供所有启动加载器文件到/var/lib/tftpboot路径中,命令如下。

# yum install tftp-server
# cp -r /usr/share/syslinux/* /var/lib/tftpboot

Install TFTP Server

安装TFTP服务器

步骤4: 设置PXE服务器配置文件

7. 通常,PXE服务器从位于pxelinux.cfg文件夹中一组指定的文件中读取配置(首先是GUID文件,接下来是MAC文件,最后是Default文件),该文件夹必须位于DNSMASQ主配置文件中tftp-root声明指定的目录中。

创建需要的目录pxelinux.cfg,然后添加default文件到该目录中,命令如下。

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

8. 现在,该来编辑PXE服务器配置文件了,为它添加合理的Linux发行版安装选项。请注意,该文件中使用的所有路径必须是相对于/var/lib/tftpboot目录的。

下面,你可以看到配置文件的样例,你可以使用该模板,但请修改安装镜像(kernel和initrd文件)、协议(FTP、HTTP、HTTPS、NFS)以及映射你网络安装源仓库和路径的IP地址等参数。

# nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下整个节录到文件中。

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

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

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount

label 2
menu label ^2) Install CentOS 7 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) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append  initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password

label 4
menu label ^4) Boot from local drive

Configure PXE Server

配置PXE服务器

正如你所见,CentOS 7启动镜像(kernel和initrd)位于名为centos7的目录,该目录是/var/lib/tftpboot目录的相对路径(其系统绝对路径为/var/lib/tftpboot/centos7),而安装器仓库位于可通过FTP协议访问的192.168.1.20/pub网络位置中——在本例中,这些仓库位于本地,因为IP地址和PXE服务器地址相同。

同时,菜单label 3指定客户端安装应该通过VNC从一个远程位置实现(这里替换VNC密码为一个健壮的密码),如果你在一台没有输入输出的客户端上安装,菜单label 2指定了作为安装源的一个CentOS 7官方互联网镜像(这种情况要求客户端通过DHCP和NAT连接到互联网)。

重要:正如你在上述配置中所看到的,我们使用了CentOS 7进行演示,但是你也可以定义一个 RHEL 7镜像。而下面的整个的说明和配置都只是基于CentOS 7的,所以在选发行版时要注意一下。

步骤5: 添加CentOS 7启动镜像到PXE服务器

9. 对于此步骤,需要用到CentOS的kernel和initrd文件。要获取这些文件,你需要CentOS 7 DVD ISO镜像。所以,去下载CentOS DVD镜像吧,然后把它(刻录成光盘)放入你的DVD驱动器并挂载镜像到/mnt路径,命令见下面。

使用DVD,而不是最小化CD镜像的原因在于,在后面我们将使用该DVD的内容为FTP源创建本地安装器仓库。

# mount -o loop /dev/cdrom  /mnt
# ls /mnt

Mount CentOS DVD

挂载CentOS DVD

如果你的机器没有DVD驱动器,你也可以使用wgetcurl工具从CentOS镜像站下载CentOS 7 DVD ISO到本地并挂载。

# wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
# mount -o loop /path/to/centos-dvd.iso  /mnt

10. 在DVD内容可供使用后,创建centos7目录并将CentOS 7 的可启动的 kernel和initrd映像文件从DVD挂载位置拷贝到centos7文件夹。

# mkdir /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/vmlinuz  /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/centos7

Copy CentOS Bootable Files

拷贝CentOS可启动文件

使用该方法的原因在于,今后你可能会在/var/lib/tftpboot路径中创建新的独立的目录,并添加其它Linux发行版到PXE菜单中,你就不会将整个目录结构弄得一团糟了。

步骤6: 创建CentOS 7本地镜像安装源

11. 虽然你可以通过多种协议设置安装源镜像,如HTTP、HTTPS或NFS,但对于本指南,我选择了使用FTP协议。因为通过vsftpd,你可以很便捷地配置,而且它也很稳定。

接下里,安装vsftpd进程,然后复制所有DVD挂载目录中的内容到vsftpd默认服务器路径下(/var/ftp/pub)——这会花费一些时间,这取决于你的系统资源。然后为该路径设置可读权限,命令如下。

# yum install vsftpd
# cp -r /mnt/*  /var/ftp/pub/ 
# chmod -R 755 /var/ftp/pub

Install Vsftpd Server

安装Vsftpd服务器

Copy Files to FTP Path

拷贝Files到FTP路径

Set Permissions on FTP Path

设置FTP路径的权限

步骤7: 在系统范围内启动并启用进程

12. 既然PXE服务器配置已经完成,那么就来启动DNSMASQVSFTPD服务器吧。验证它们的状况并在系统上启用,以便让这些服务在每次系统重启后都能随系统启动,命令如下。

# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd

Start Dnsmasq Service

启动Dnsmasq服务

Start Vsftpd Service

启动Vsftpd服务

步骤8: 打开防火墙并测试FTP安装源

13. 要获取需要在防火墙打开的端口列表,以便让客户机可访问并从PXE服务器启动,请运行netstat命令并根据dnsmasq和vsftpd监听列表添加CentOS 7防火墙规则。

# netstat -tulpn
# firewall-cmd --add-service=ftp --permanent    ## Port 21
# firewall-cmd --add-service=dns --permanent    ## Port 53
# firewall-cmd --add-service=dhcp --permanent   ## Port 67
# firewall-cmd --add-port=69/udp --permanent    ## Port for TFTP
# firewall-cmd --add-port=4011/udp --permanent  ## Port for ProxyDHCP
# firewall-cmd --reload  ## Apply rules

Check Listening Ports

检查监听端口

Open Ports in Firewall

在防火墙上开启端口

14. 要测试FTP安装源网络路径,请在本地或另外一台计算机上打开浏览器(lynx就可以做此事),然后输入你架设有FTP服务的PXE服务器的IP地址,并在填入的URL后面加上/pub网络位置,结果应该和截图中看到的一样。

ftp://192.168.1.20/pub

Access FTP Files via Browser

通过浏览器访问FTP文件

15. 要解决PXE服务器最终的配置或其它信息产生的问题,请在live模式下诊断,命令如下:

# tailf /var/log/messages

Check PXE Logs for Errors

检查PXE日志错误

16. 最后,最终所需的步骤就是卸载CentOS 7 DVD,并移除物理介质。

# umount /mnt

步骤9: 配置客户端从网络启动

17. 现在,你的客户端可以通过它们的系统BIOS或在BIOS开机自检时按指定键来配置网络启动作为首选启动设备,具体方法见主板说明手册。

为了选择网络启动,在第一次PXE提示符出现时,请按下F8键进入到PXE安装界面,然后敲回车键继续进入PXE菜单。

PXE Network Boot

PXE网络启动

PXE Network OS Boot

PXE网络OS启动

18. 一旦你进入PXE菜单,请选择你的CentOS 7安装类型,敲回车键继续安装过程,就像你使用本地启动介质安装一样。

请记住这一点,使用菜单中的变体2需要激活目标客户端上的互联网连接。在下面的屏幕截图中,你可以通过VNC看到远程安装的实例。

PXE Menu

PXE菜单

Remote Linux Installation via VNC

通过VNC远程安装Linux

Remote Installation of CentOS

远程安装CentOS

以上是CentOS 7上配置最小化PXE服务器的所有内容。在我的本系列下一篇文章中,我将讨论其它PXE服务器配置过程中的其它问题,如怎样使用Kickstart文件来配置自动化安装CentOS 7,以及添加其它Linux发行版到PXE菜单——Ubuntu ServerDebian 7


via: http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/

作者:Matei Cezar 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出