Linux网络管理

2024-08-13

Linux网络管理(精选十篇)

Linux网络管理 篇1

目前, 高等职业院校中Linux教学多采用课堂教师讲授为主, 学生上机实现讲授的知识点方式。这样教学模式下培养学生具体分析问题和解决问题的能力差, 面对一个实际的Linux项目, 往往不知如何做, 造成学生动手能力差。我们课程组根据海南软件职业技术学网络中心Linux服务器实际运维, 对现有的Linux课程教学提出改革。

1 教学现状

1.1 教学内容与实际应用脱节

Linux操作系统发展比较快, 核心的版本大概1-2年就更新版本, 但是Linux教材特别是在服务方面比较滞后技术发展不能凸显Linux最近技术应用, 这样就造成教学内容不能跟上Linux运维企业的工作需求, 从而与现实脱节, 构成了课程教学实用性较差, 学生学起来不错, 但是到了企业就是不能配置和管理服务器。

1.2 填鸭式的教学

教学中, 教师把实验内容安排给学生, 学生按照实验设计要求, 自己完成服务器的配置与调试。学生几乎没有独立设计性, 所有的学生只能按照教师设计好的工作过程, 一步一步完成设置, 如果配置过程有问题就发问, 没有就顺序执行, 学生在学习中缺少独立思考。

1.3 教学方法落后

Linux操作系统教学比较落后, 大多教师已然采用传统的讲授法为主, 不能充分展示Linux课程的特色, 教学互动少, 不能比学生接受。特别是教学中缺少Linux的真实工作环境、现实的应用, 造成教学枯燥, 学生学习兴趣不高, 难以真正的将所学融会贯通, 应用于实际的工作中。

2 教学方法改革

2.1 任务型教学法

任务教学法主要是围绕一个实际问题, 设计工作场景, 让学生积极主动参与教学活动, 学生讨论教学任务, 承担不同的角色。从信息的收集、方案的设计、方案的实施、方案的验证, 到学习结果的评价, 都督促学生相互之间保持良好的协作关系, 进而携手合作, 共同解决问题。学生通过学习, 获地表现的机会, 增强学生内心的体验, 激发学习的动力。

2.2 项目教学法

项目教学的教学过程重点在于师生协同努力完成一个具有实际意义的项目的实施。因此在实施项目教学法时, 首先, 应该确立切实可行的项目, 确立项目时要考虑到教学内容在实际工作中所起的作用, 根据其在实际工作中所起的作用来确立该内容的单元级项目, 然后将单元项目划分为若干个模块项目, 每个模块项目又划分为一系列的实验项目 (即由基本知识、基本操作构成的项目) 。需要强调的是在项目的开发过程中要注重学生通用能力 (方法能力、自主探索能力、合作学习能力、社会能力等) 的培养。

项目实施是项目教学法的主体, 是教学的主要部分。项目实施分为项目导入、项目实施、项目测试三个步骤。项目导入:主要是为项目教学的开展做好准备。首先, 教师应向学生演示并讲解项目的基本需求, 让学生在项目实施前先对项目有一个总体的印象, 对课程要求有一个基本的了解。其次, 教师应向学生交代项目活动的组织安排, 如分组安排、评价安排等, 让学生在以后的项目活动中能够有序、顺利进行。项目实施:项目教学的主要过程就是项目的实施过程, 项目的实施过程应保证更多的体现实用性、现实性, 这样可以让学生切身感受到工作的环境。在目实施时, 教师应事先准备一些与知识相对应的小案例或小任务, 以案例或任务来引领知识, 可以让学生在接受知识时, 就能了解这些知识的基本应用, 以便能够将这些知识更好地应用到项目上。学生接受了关联知识后, 开始分组完成项目, 在这个过程中, 教师是主导者, 学生是主体, 教师要引导学生去分析问题、思考问题、探索问题, 让学生们自行去解决问题;要有意识地培养学生的职业技能和综合能力。项目测试。项目实施完成后, 需要将项目进行测试。在这个过程中, 教师只需要说明测试方法, 具体测试过程让学生们自己完成。教师应根据各小组的项目完成情况, 给以不同的引导, 对于项目完成得好的小组, 应鼓励他们拓展功能, 激发他们的创造性;对于项目完成得不好的小组, 应建议他们根据其他组对项目的讲解汇报情况来完善自己的项目, 让他们对原来不够熟悉的任务重新实践一遍。

3 结束语

总之, 用任务型教学法驱动Linux网络管理教学开展、用项目教学法具体实施在教学中, 并把课程教学内容模块化, 使复杂的操作系统原理更易理解, 充分锻炼学生主动探索知识、学习技能的能力, 使学习由被动变为主动。通过教学改革实施, 培养学生分析问题与解决问题的能力, 激发了学生学习积极性与兴趣, 促进学生的学习自觉性, 极大的改变了Linux课程教学现状, 取得良好的教学效果。

参考文献

[1]董春游, 王国权, 侯久阳, 等, 论教学服务型高校计算机专业应用型人才培养模式, 计算机教育, 2010.12

[2]谢蓝清, 关于高职专业基础课程项目式教材的开发, 职教论坛, 2010.02

Linux网络管理 篇2

安装Linux系统后,登陆进去,修改一下文件:

代码如下复制代码

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=”eth0″

BOOTPROTO=”none”

HWADDR=”00:50:56:BE:7A:D8″

IPADDR=192.168.2.108                          #IP地址,必须设置

GATEWAY=192.168.2.21                        #网关地址,这个很重要,如果不设置这个就智能是局域网无法和外部网络互联了

NBOOT=”yes”                                         #开机启动设置为yes

UUID=”fe45f058-9ce7-42a4-823c-abe472aad9f2″

IPV6INIT=no

NETMASK=255.255.255.0                #子网掩码

设置好之后,编辑域名服务器设置文件

代码如下复制代码

# cat /etc/resolv.conf

nameserver 192.168.2.01              #域名服务器的地址,如果不设置这个,则无法以域名的方式访问网站

search hostname                                #这个相当于你本机的域名

设置好了之后重启network服务

代码如下复制代码

# /etc/init.d/network restart

这样执行以下ifconfig命令就能看到你本机已经联网了,可以使用ping 命令去测试是否联网,

友情提示:

直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig/network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重新变成空值。

怎么办呢?下面有两种解决方法:

1、通过ifcfg-eth0也可以设置DNS服务器地址,并自动修改或生成resolv.conf文件.

2、在ifcfg-eth0中可以通过PEERDNS参数决定是否修改resolv.conf文件,设置PEERDNS=yes(这也是系统的默认配置)则启用该网络设备时,会修改或生成resolv.conf文件,设置PEERDNS=no,则不对resolv.conf做任何变动.

补充的部分:

当有应用需要进行域名解析时(如:ping www.111cn.net),会首先读取resolv.conf文件获取dns服务器地址,然后再向该dns服务器发送域名解析请求,若resolv.conf设置的不对或者没有resolv.conf都会导致域名解析失败.

若ifcfg-eth0被配置为DHCP模式,则系统默认PEERDNS=no,也就是会用DHCP获取的DNS地址修改或生成resolv.conf文件.

我觉得没有特殊情况,不用在resolv.conf中设置DNS,应在ifcfg-eth0中设定DNS服务器地址方便些,即符合正常思维也更便于维护和管理.

Linux上的计划任务管理利器! 篇3

在Linux平台上,计划任务分为反复执行的任务和一次性执行的任务,这两类任务的创建与管理分别通过crontab命令和at命令来完成,而计划任务的执行是由称为crond的守护进程来完成的。虽然crontab和at命令功能很强大,但对于普通用户而言,操作起来仍很不方便。

那么在Linux平台上有没有像Windows的“任务计划”那样的程序呢?答案是肯定的,那就是GnomeSchedule(GNOME任务计划)。Gnome Schedule是基于Python语言并使用pygt,(库开发的用于计划任务管理的图形界面程序,使用它,Linux用户可以轻松地完成两类计划任务的创建、编辑、删除等工作。这里我们就以Linux发行版Ubuntu desktop 8.04(集成桌面环境为GNOME)为例,介绍一下该功能。

安装gnome-schedule

Ubuntu系统默认没有安装GnomeSchedule,我们可以直接在线从软件源中下载并安装该软件。在GNOME集成桌面环境中,打开一个X-Window终端窗口,输入以下命令来进行安装:

sudo apt-get install gnome-schedule

Gnome Schedule的当前版本为2.0.2。有时软件源中的软件包不是最新的,为了获取最新的软件包,我们也可以从站点http://gnome-schedule.sourceforge.net下载tar.gz格式的安装文件,安装时首先使用tar命令解压缩安装包:

tar-ZXVf gnome-schedule-2.0.2.tar.gz

命令执行后,将在当前目录下生成gnome-schedule-2.0.2子目录,进到该目录中,执行./configure命令进行系统环境检查,然后输入命令make进行编译,编译成功后,输入命令makeinstall进行安装。安装好后,在菜单“系统”/“首选项”下可以找到“Scheduledtasks”(计划任务)项。

创建计划任务实战

在Linux系统中,与使用命令行工具创建和管理计划任务相比,使用GnomeSchedule图形界面程序执行类似操作更加直观、方便。需要指出的是,当以普通用户身份运行Gnome Schedule时,通过程序创建的计划任务属于该用户,而不同的登录用户均可以使用GnomeSchedule创建属于自己的计划任务。

1创建反复执行的任务

反复执行的任务也称周期性任务或重复性任务,为了确认用Gnome Schedule创建的计划任务确实是反复执行的,我们让创建的任务每分钟执行一次,每执行一次则在用户本户目录下(/home/lbs)生成一个文本文件,文件名格式为“年月日时分秒.txt”,其中年份为四位年份,文件扩展名为“.txt”,使用touch命令创建这样的文件。我们将命令放到脚本文件mysh.sh中,脚本文件内容如下:

#/bin/sh

touch /home/1bs/'date+%Y%m%d%H%M%S'.txt

脚本文件创建好后,放置在用户本户目录下。使用命令:chmod U+Xmysh.sh使脚本文件成为可执行文件。可执行脚本文件mysh.sh也就是我们需要反复执行的命令。现在我们使用GnomeSchedule创建一个计划任务,用来执行该文件。在菜单“系统”/“首选项”下找到“Scheduledtasks”(计划任务)项,点击该项则运行程序。我们也可以直接在X-Window终端窗口中输入命令:gnome-schedule来运行该程序。

点击Gnome Schedule程序主界面工具栏上的“新建”按钮,出现计划任务类型选择对话框(见图1),在该对话框中列出了创建计划任务的三种方式:创建反复执行的任务,创建一次性执行的任务及从预定义模板中创建任务。因是新建反复执行的计划任务,因而我们点击对话框的第一个命令按钮“A taskthat launches recurrently”(反复执行任务),接着出现反复执行计划任务创建窗口(见图2)。

反复执行计划任务窗口大致分为三个部分:命令、日期时间设定及操作命令按钮区。在“命令”区的“description”(任务描述)栏填入任务的描述信息,如“test”,在“command”栏输入命令的完全路径,这里我们输入可执行脚本文件的完全路径,如“/home/1bs/mysh.sh”,在“command”栏下方有一复选框,勾选上则表示如果命令在控制台有输出信息时则强制其不显示,否则正常显示出来。用户可根据需要决定是否勾选该项。计划任务的“命令”设定好后,接下来是设定在什么时间执行该项任务,日期时间设置分为基本设置与高级设置。“基本”为默认项,基本设置以下拉列表框的形式列出是每分钟、每小时、每天、每月、每周还是在系统重启时执行该计划任务。而如果要精确设置计划任务的执行时间,则点选“高级”项,通过点击分、时、天、月、周日之后的编辑按钮可以对每一项进行更详细的设定。针对创建的反复执行任务,我们选择“高级”项,在“Minute”(分钟)栏填上“1”,其余栏为“*’。值得指出的是,无论是基本设定还是高级设定,设定后的时间均可在预览区显示出来,非常直观方便。

任务创建完毕后,点击窗口下方的“Add as template”(添加为模板)按钮,我们可以将该任务添加到计划任务模板中,供下次创建计划任务时调用。点击“应用”按钮,则创建计划任务并显示在Gnome Schedule程序主窗口的计划任务列表中。选中列表中的该项任务后,点击工具栏上的“Run task”(运行任务)按钮,则无需等到设定的时间,就可以运行该任务了。当然,我们也可以让系统的crond守护进程为我们自动执行该项任务。

2创建一次性任务

有时,我们会碰到一些只需执行一次的管理任务,如执行完某个操作后关机等。利用GnomeSchedule,我们可以很容易地创建这种一次性计划任务。下面我们就来创建这样的任务,任务内容为获取当前系统的内存使用情况,并转存到用户本户目录下的文件mem.txt中。

点击程序工具栏上的“新建”按钮,在计划任务类型选择窗口,点击第二个命令按钮“A task that launchcs onetime”(一次性任务),则出现创建一

次性计划任务窗口(见图3)。在“TaskDescription”(任务描述)栏输入计划任务的描述信息。如“testmem”,然后是设定命令的执行日期和时间。设定日期时,我们既可以手动输入日期,也可以通过微调按钮设定日期或通过点击“Calendar”(日历)按钮,从弹出的日历中选择日期。日期时间设定好后,接着是设定一次性任务所要执行的命令(也可以是可执行脚本文件),这里我们在“Task”框内输入命令“free-m>/home/1bs/mem.txt”。与创建反复执行的任务一样,我们也可以点击窗口下方的“Add as template”(添加为模板)按钮来将该一次性任务添加到计划任务模板中,供下次创建一次性计划任务时调用。点击“应用”按钮,则创建一次性计划任务并显示在GnomeSchedule程序主窗口的计划任务列表中。选中该项任务后,点击工具栏上的“Runtask”(运行任务)按钮,则无需等到设定的时间,就可以运行一次性任务了。

3通过命令行查看或编辑创建的计划任务

通过Gnome Schedule创建了周期性任务和一次性执行任务后,我们可以通过命令行工具来查看或编辑甚至删除已创建的任务。在X-Window终端窗口中,输入命令:crontab-1,则在控制台输出当前用户的周期性任务列表,如果需要查看系统中所有用户的周期性任务列表,则需要以root用户身份执行该命令。输入命令:crontab-e则进入计划任务的编辑界面,默认的编辑器为nano,我们可以在编辑界面中对周期性计划任务进行编辑或删除它。对于有GnomeSchedule创建的一次性任务,我们可以在X-Window终端窗口中输入命令:at-1或atq来查看当前用户创建的一次性任务。也可以输入命令:at-d或atrn2来删除它。

4Gnome sCheduoe的任务模板功能

Gnome Schedule让计划任务的创建与管理变得简单,其提供的任务模板功能不仅能保存计划任务的历史副本,也使得Linux用户在创建复杂计划任务时变得异常方便、快捷。除了在创建计划任务时可添加到任务模板中,Gnome Schedule提供了单独的创建任务模板的功能,用户可根据需要事先创建许多计划任务的模板。

Linux网络管理 篇4

关键词:Linux,PXE远程引导,initrd,远程自动部署

0、引言

网络安装Linux并不新鲜, 其过程也并不轻松。为了让客户机能够通过网络来自动安装Linux, 用户事先需要做大量的配置工作。用户需要选择一台服务器, 然后在这台机器上配置DHCP, TFTP, NFS/Http/Ftp, pxelinux.0, kickstart文件等等, 才能实现Linux的网络自动部署。这个过程中客户机需要通过网络从服务器取得安装文件, 所以网络部署依赖于一个前提, 网卡能够正常工作, 也就是我们所部署的Linux版本必须能够正确识别并驱动客户机的网卡。如果网卡无法驱动, 客户机将无法获得安装源, 网络安装将无从谈起。

我们通过研究Linux启动过程, 分析PXE网络引导技术, 将网卡驱动加入initrd.img, 使Linux在启动的过程中即能正确识别并加载网卡驱动, 从而使网络安装得以顺利进行。

1、技术背景

1.1 Linux启动过程[3]

计算机启动后, 首先被执行的是BIOS代码, 其功能主要为:初始化各组件、检测硬件、分配资源, 之后BIOS将加载操作系统的主控权转交给主引导扇区 (Master Boot Record, MBR) 。

系统初始化的第一步是BIOS将MBR加载到内存来执行, 再开始运作。这部分数据包含一个不大于512字节的程序, 它可能为一个分区管理程序, 引导程序或者仅仅是操作系统核心的一部分, 例如LILO、GRUB、SYSLINUX。BIOS执行完毕后, 引导程序会接管并执行后续的启动代码, 包括选择启动菜单, 获取内核参数等。

引导程序接下来将载入操作系统内核, 启动linux所需的组件, 包括内核镜像及initrd文件。成功载入内核后, 启动程序将跳转到内核的入口, 并开始子系统初始化, 这些子系统包括内存管理、网络、缓存、I/O控制器等, 紧接着内核会载入根分区中的文件系统, 载入initrd.img。initrd的主要功能是在操作系统启动之前载入一些必要可执行程序和系统文件。这包括一些附加的设备驱动。然后将挂载文件系统, 建立设备文件所需文件系统, 建立设备文件, 加载相关模块, 然后切入实体操作系统的init。初始化系统所需参数, 启动与检查大部分的系统功能与服务, 并显示登录界面。至此, 整个Linux系统启动完毕。

1.2 PXE远程引导技术

PXE (Pre-boot Execution Environment) 是由Intel公司提出的标准并迅速推广, 它可以使计算机通过网络启动。协议分为客户端和服务器两端, PXE客户端在网卡的ROM中, 当计算机引导时, BIOS把PXE客户端调入内存执行, 并显示出命令菜单, 经用户选择后, PXE客户端将放置在远端的操作系统通过网络下载到本地运行。目前的市场上的网卡大多都支持PXE,

因而利用PXE远程引导技术来部署操作系统也具有其硬件基础。简要而言, PXE协议运作[1]如下。客户端通过广播一个带有PXE标志的DHCPDISCOVER请求而发起协议。假设实现这种扩展协议的DHCP服务器或者代理DHCP服务器可用, 经过几次交互后, 服务器发送给客户机一个启动服务器的列表。客户机接着发现选中类型的一个启动服务器, 然后得到所选启动服务器上的可执行引导文件的名字。客户机通过TFTP协议从启动服务器上下载可执行引导文件。客户机执行下载的引导文件, 请求并下载系统内核文件和initrd文件。最终, 客户机执行下载的内核文件并启动。这时, 客户机必须满足特定条件以提供镜像文件的执行环境。这种环境的重要条件包括客户机内存的特定区域可用和基本网络I/O服务可用。通过initrd文件加载网卡驱动等, 进而基于kickstart配置文件, 获得安装源文件, 完成网络自动安装, 最终进入实体操作系统, 登录系统。其流程如图1所示。

2、方案设计

2.1 存在问题

由上述Linux启动和PXE远程引导过程得知, Linux版本能否驱动客户机网卡将关系到网络安装能否顺利进行。然而在现实中由于实际需要, 我们可能无法选择Linux版本, 例如:在硬件产品的早期研发阶段, 不存在能够驱动客户机网卡的Linux版本;或者对于某些特殊硬件, 我们只有基于某个Linux发行版的驱动;或者大量应用程序已经在客户机某个Linux版本上成熟应用, 更新Linux版本会带来应用程序移植的问题, 这些都需要我们自己动手改造Linux, 以满足现实需要。

2.2 方案思路

由Linux的启动过程及驱动程序原理得知, 要解决本文的问题, 一种方案[5]是将网卡编译进内核 (静态链接进内核) , 另一种方案可以将网卡驱动做成模块, 然后想办法在Linux启动的时候让内核找到并挂载该驱动。后一种方法具有良好的可行性和扩展性。因为首先有些网卡驱动本身就不能被静态链接进入内核, 而只能被编译成一个模块, 例如我们要应用的e1000e网卡驱动;其次, 驱动做成模块的方式, 可以适应不同的内核版本。应用前一方案, 更换内核版本就需要重新编译内核, 相比编译内核, 方案二更简单, 可操作性更强。

实现方案二就是定制initrd.img, 更新网卡驱动。initrd[4]全名是initial ramdisk, 顾名思义就是激活系统所需要加载的文件系统, 当GRUB加载内核时, 内核会先在内存中建立一个rootfs作为临时的空间供系统使用, 接下来, 内核便会将initrd当作是一个系统将其加载到rootfs上激活, 然后再按照其中的init脚本顺序依次执行。当initrd被加载后, 必须为用户与文件系统牵线, 这需要有该文件系统的模块 (即驱动程序) , 另外, 还包含额外所有必须预先加载的模块, 例如这里的网卡驱动以支持系统特殊功能。最后进入实际的文件系统供用户使用, 由内核到initrd的流程如图2所示。

2.3 方案实现

由上述流程看出, initrd.img事实上是一个小型的根文件系统, 在Linux内核尚未挂载硬盘上的根分区的时候, initrd.img在内存中展开执行。由initrd.img解压后内容及init脚本可以看出, ini-trd.img中包含必要的可执行程序和驱动模块等。

网络安装Linux使用的initrd.img, 一般位于安装光盘的images/pxeboot目录下。网络安装时, Linux并未挂载硬盘上的根分区, 所以此时的initrd.img需要包含大量的驱动模块, 以识别各种硬件并挂载其驱动。由initrd.img解压后内容看出此时的initrd.img已经包含了网卡的驱动, 那么将支持PXE启动的initrd.img中的网卡驱动更新, 无疑是最简捷的方法。

获取位于安装光盘的images/pxeboot目录下的initrd.img后, 即可对其进行定制。我们这里以Redhat5u3中initrd文件更新网卡驱动e1000e为例。

1、获取网卡设备ID

首先要找到需要更新网卡驱动的硬件设备ID, 这可以通过Redhat中的lspci命令。lspci-v将列出客户机上网卡设备信息, 根据网卡设备所在总线和索引, 即可在lspci-n的输出中找到对应的网卡设备的供应商ID和设备ID (详情参考lspci命令帮助) 。

2、编译生成驱动模块

检查得到的网卡驱动包, 解压开后, 检查pci.updates, 查找网卡设备ID, 即可找出支持对应该设备的驱动模块。然后在与所需部署操作系统同一内核版本的系统上编译这个模块, 即得到initrd文件所需驱动模块。

3、解压initrd.img

initrd.img是一个gzipped cpio存档文件, 可以用以下的命令解压,

gzip-dc<initrd.img所在目录>|cpio-ivd

在modules子目录下, 可以看到modules.cgz, 同样的方法解压。

gzip-dc<modules.cgz所在目录>|cpio-ivd

4、添加网卡驱动模块

拷贝网卡驱动模块到initrd.img解压后的相应文件目录下, 即modules.cgz解压后的文件目录下。由于Anaconda (Redhat的安装程序) 通过modules.alias来决定需要加载的模块, 那么modules.alas[6]需要指出需要e1000e这个模块的硬件设备, 所以我们更新驱动模块的同时必须更新modules.alias文件。这里我们需要将e1000e这个模块的对应的设备ID等加入modules.alias这个文件, 由于Redhat5u3中网卡驱动采用了模块机制, 我们可以通过modinfo来查看驱动所支持的硬件设备ID, 然后将这些信息加入modules.alias这个文件。即:

modinfo-F alias e1000e.ko|sed-e's/^/alias/'-e's/$/e1000e/'>>modules.alias

这样Anaconda就能根据设备ID自动加载这个模块, 识别网卡加载网卡驱动。有一些驱动可能也需要更新module-info、modules.dep, , 和pci.ids这些文件, 这依赖于系统驱动机制。

5、重新打包

最后我们需要重新打包以生成我们新的initrd.img。由于modules.cgz文件使用crc格式而initrd.img使用newc格式, 所以要区别对待。若文件格式错误, 安装程序将无法读取initrd.img。

find 2.6.18-128.el5|cpio-o-H crc|gzip-9>modules.cgz

find.|cpio-o-H newc|gzip-9>/tmp/initrd.img

接着将initrd.img放到tftp服务器相应的目录下, 客户机即可在网络启动时获取新的initrd.img, 从而识别网卡开始网络安装。通过这样的方式, 可以方便的自定义initrd文件, 在原本的initrd文件中新增需要的驱动模块。

6、启动后网卡驱动支持

经过上述工作, 客户机通过网络启动, 就能够驱动网卡, 从服务器上得到所需要的安装文件, 开始并完成安装。但是, 到此为止的话, 客户机上Linux安装完成后, 重新启动进入系统后, 网卡依然看不到。

出现这种情况, 原因在于能够识别网卡的驱动只存在于远程服务器上的initrd.img, 客户机在网络启动时的initrd文件仅存在于内存中, 并未将驱动模块更新到硬盘上。客户机硬盘上用于启动的initrd文件则是在安装过程中重新生成的, 只加载了默认的驱动, 但是并不包含新的网卡驱动。一旦客户机重启后从硬盘启动, 所有的驱动模块都将直接从硬盘读取, 因而会出现网卡无法识别的情况。

对于这个问题, 有如下所述的解决方案。我们可将驱动模块打包为rpm格式, 再将其安装。将驱动打包为rpm格式后, 在kickstart配置文件中添加相应的安装后脚本, 即可在Linux安装完成后安装rpm包并加载新的驱动模块, 当然, 这种方式需要额外的存储设备来提供安装源。然而这是种相对简捷方便的解决方案。

3、实践应用

在实践中, 我们建立了如图所示的网络环境来安装Redhat5u3企业版操作系统[2]。

我们将DHCP、TFTP和HTTP/NFS服务器部署在同一机器上;在HTTP/NFS服务器上建立安装目录树, 并实现网络共享;利用kickstart图形化工具产生自动安装配置文件, 把它放在HTTP/NFS目录树下;建立PXE服务器, 更改初始的系统配置文件, 使它包含NFS服务器地址及kickstart配置文件信息。

通过上述的方式, 更新initrd文件中网卡驱动后, 原来无法进行网络安装的客户机将能够顺利完成Redhat5u3系统的网络自动化安装。同时在局域网环境中, 通过远程PXE服务器上对网内的机器进行网络自动化安装, 不但能够同时安装多台机器, 而且安装速度大于光驱安装的速度。这不仅简化了网络管理, 减轻网络管理员的工作量, 而且提高了工作效率。

4、结论

本文通过对于Linux启动过程及PXE远程引导过程的分析研究, 针对现有Linux版本中无法驱动某些型号的网卡这一问题, 提出了一种相对简捷有效的解决方案。这扩展了Linux PXE远程自动部署的应用, 使得其应用更加广泛, 也颇为灵活方便, 同时内核变动不大, 实现了远程自动部署的高可用性和高可靠性。

参考文献

[1]、Intel Corporation.Preboot execution environment (PXE) specifi-cation[S/OL].Version2.1, 1999-09.http://www.pix.net/software/pxeboot/archive/pxespec.pdf.

[2]、邱建新, 马世霞.Linux网络安装的自动化原理剖析及应用[J].微计算机应用, 2005, (6) :760-764.

[3]、顾梦非, 徐炜民.一个基于Linux的集群部署方案[J].计算机应用与软件, 2008, (1) :102-104.

[4]、邱世华.Linux操作系统之奥秘[M].北京:电子工业出版社, 2008:84-85, 92-95

[5]、张超.Hacking initrd.img[S/OL].2007.http://www.ibm.com/developerworks/cn/linux/l-linux-netinst/

Linux网络管理 篇5

chown命令的语法格式是:

chown [选项]用户或组文件1[文件2...]

用户可以是用户名或用户ID。文件是以空格分开的要改变权限的文件列表,可以用通配符表示文件名。如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的权限。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。

在Linux下,每个文件又同时属于一个用户组。当你创建一个文件或目录,系统会赋予它一个用户组关系,用户组的所有成员都可以使用此文件或目录。文件用户组关系的标志是GID。文件的GID只能由文件主或超级用户(root)来修改。chgrp命令可以改变文件的GID,其语法格式为:

chgrp [选项] group文件名

其中group是用户组ID。文件名是以空格分开的要改变属组的文件列表,它支持通配符。

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。访问权限规定三种不同类型的用户:文件主(owner)、同组用户(group)、可以访问系统的其他用户(others)。

访问权限规定三种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)。

当用ls -l命令或l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。其中各位的含义如下:

*文件访问权限

读权限(r)表示只允许指定用户读其内容,而禁止对其做任何的更改操作。将所访问的文件的内容作为输入的命令都需要有读的权限。例如:cat、more等;写权限(w)表示允许指定用户打开并修改文件。例如命令vi、cp等;执行权限(x)允许指定用户将该文件作为一个程序执行。

*目录访问权限

在ls命令后加上-d选项,可以了解目录文件的使用权限:

ls -d

读权限(r)可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许shell使用文件扩展名字符列出相匹配的文件名;写权限(w)表示允许你从目录中删除或添加新的文件,通常只有目录主才有写权限;执行权限(x)允许你在目录中查找,并能用cd命令将工作目录改到该目录。

cat 命令主要作用可归为四种:

1.用来显示文件内容,主要用于读取信息量比较少的文件

命令形式:cat filename

例如:

cat /data/www/robots.txt 查看 /data/www/robots.txt 文件的详细内容

cat -n *.php 把当前目录下的所有的 php 文件都显示出来(按顺序显示)

cat -n /data/www/robots.txt 查看 /data/www/robots.txt 文件的详细内容并加上行号

2.创建文件(只能创建新文件,不能编辑已有文件)

命令形式:cat >filename

例如:

cat >/data/www/robots.txt 创建 /data/www/robots.txt 文件

cat /data/www/index.php >/data/abc/index.php 把 /data/www/index.php 这个文件的内容输入到 /data/www/index.php 这个文件里面去

cat -n /www/index.php >/abc/index.php 把 /www/index.php 这个文件的内容加上行号输入到 /www/index.php 这个文件里面去

3.将几个文件合并为一个文件

命令形式:cat file1 file2 >file

例如:

cat -b /www/index.php /www/about.php >>/www/abc.php 把 /www/index.php 和 /www/about.php 的档案内容加上行号(忽略空白行)后将内容输入到 /www/abc.php 这个文件里(注意这里 abc.php 是原本不存在的)

cat /data/www/*.php >index.php 将 /data/www/*.php 目录下的所有 php 文件合并为 index.php(注意这里 index.php 是 *.php 里面的一个文件)

4.清空文档内容:

例如:

cat /dev/null >/data/robots.txt 此为清空 /data/robots.txt 文件的内容

另外一些关于 cat 命令的技巧,

cat /proc/cpuinfo 显示CPU info的信息

cat /proc/interrupts 显示中断

cat /proc/meminfo 校验内存使用

cat /proc/swaps 显示哪些swap被使用

cat /proc/version 显示内核的版本

cat /proc/net/dev 显示网络适配器及统计

Linux网络管理 篇6

【关键词】集群系统;作业调度;负载平衡

1.linux集群系统作业管理系统概述

如果仅仅将节点连成网络,并不能形成集群,还需要有对这些节点进行管理的软件系统,集群所依赖的软件系统集群作业管理系统JMS(Job Management System)正是为适应这种需求而出现并快速得以发展。集群JMS可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统资源利用率和吞吐率。集群JMS包括系统资源管理和作业调度管理,作业调度技术是集群作业管理系统中关键的技术之一,作业调度的功能在于提供作业提交、调度、执行及控制的新机制,更加有效地利用系统资源、平衡网络负载、提高系统整体性能。在这种情况下,作业调度策略决定了整个集群系统的效率,尤其是提交计算量大的作业时,良好的作业调度策略可以大大加快执行速度。因此,作业调度策略是提高集群系统执行并行作业的效率及系统资源利用率的关键因素,对集群系统提高并行处理能力具有重大的意义。

2.linux集群系统下作业调度策略与负载平衡

负载平衡的基本作法是定期收集并分析系统各节点的实时负载信息,动态地将作业进程在处理机之间进行分配和调整,以消除系统中负载分布的不均匀性。通常表现节点负载的指标有:(1)CPU的利用率,表示单位时间内CPU处理用户进程和核心进程的时间比。(2)CPU就绪队列的长度,CPU利用率适合用来判断节点是否处于空闲状态,用就绪队列的长度可用来表达负载的大小。(3)测试特定进程的响应时间,对于使用固定时间片的操作系统来说这也是一个选择。(4)磁盘、内存、交换区的可用空间,换页的频率,以及I/O的利用率。如果所选用的指标不止一项,可以将这些指标作为变量组合进一个负载计算公式,实时信息代入公式所得的值应该能区分实际负载的大小。

对于集中式集群JMS的作业调度,实现负载平衡最普通的做法是在作业映射时依据所收集的各节点的负载信息,把作业进程派往能满足作业资源需求且预计作业在那里等待时间最小的节点。一个简化的思想是把负载最轻的节点当作所产生的局部等待时间最小的节点。在集群JMS对作业映射进行修正时,同样可以利用各节点当前的负载信息,通过对过载节点上进程的迁移来实现全系统的负载平衡。集群JMS通过各节点的负载信息,建立所谓的负载转移向量,即在这个向量中每个节点所对应的元素是该节点的相对负载与平均负载的差值(或正或负)。如果向量中对应某些节点的元素的绝对值大到一定程度,就启动负载平衡过程。再以各进程的工作量为基础,决定把哪个进程迁至何处。

3.通用作业调度策略的分析

3.1 资源碎片的产生

通用作业调度策略可以划分为两大类型:一类是面向提高资源利用率的调度类调度策略常见的有FirstFit。另一类是面向公平性的调度策略,确保作业在较短的时间内能够获得资源,避免同等优先级的作业因长时间无法执行而导致作业饥饿问题,这类调度策略常见的是FCFS。

在作业调度策略中,公平性往往与高效性目标是冲突的。若要提高资源利用率,应该使作业调度队列中选取的作业集可以尽可能多的利用资源,而不考虑调度队列中作业的等待时间,这就产生了作业的饿死问题。解决同等优先级作业的饿死问题,往往依靠的是先来先服务的方式,阻塞其他作业的执行,确保作业队列队首的作业获得足够的资源,避免作业的长时间等待,可这种阻塞的方式却导致了系统中产生大量的资源碎片。

3.2 负载平衡的实现

传统的集群作业调度策略实现负载平衡的方法都是相当简练的。例如,将实时的节点负载值与事先规定的阈值做比较,或利用综合负载计算公式将多项负载值换算成一个抽象的值来对比各节点间负载是否平衡,以此来判断节点负载是否适当。在匹配资源需求时,查看节点上剩余资源是否能够满足作业的资源请求量。通常来说,简明的策略不但便于实现,利于降低调度成本,而且一样能在广泛的集群环境内达到整体上理想的性能和效益。

不够细致的调度策略存在着隐患,当简单的方法遭遇一些特殊的问题就会带来调度行为的性能突然下降,需要一定时间来进行自动地恢复。随着计算机的处理能力越来越强大,使得较为复杂的调度策略的运转费用也得到降低。特别是相对于大型作业执行时间的长度和通过网络传输作业和通讯的成本,复杂调度策略的成本日益变得可以为集群使用者接受。所以,目前的集群作业调度策略可设计的更加细致和深入,去挖掘集群提高作业执行性能的潜力。

CPU资源是调度算法中进行优化调度时所使用的主要的资源项目,算法中提到“节点性能”,往往就是指节点的主频。根据系统的针对性和应用性的不同,存在很多种的应用节点负载指标,但没有统一的标准,具体环境下可采取不同的指标,较理想的负载指标应当满足:测量开销低,较易获得和计算,以满足频繁测量的需要;能客观体现所有竞争资源上的负载;各个负载指标在测量及控制上彼此独立。

4.回填策略

回填策略是由Lifka最先提出,它需要用户提供作业的估计执行时间和所需要的节点资源信息。如果队列中的下一个待调度作业由于缺少某些资源不能被启动,回填策略会试图在队列中寻找下一个可以使用已有的空闲资源,且其执行不会延迟该作业执行的作业。换句话说,回填策略允许一些队列后面的作业提前执行。回填策略的使用主要为了实现两个看起来冲突的目标:尽可能的将短作业前移,以提高资源利用率;尽可能的避免大作业等待,因此需要预测作业的运行时间。

保守回填策略的描述如下:

RunningTasklist={j1,j2,i3,...,jn}按照期望完成时间排序的运行的作业

QueuedTasklist={il,i2,i3,...,in}按照到达时间先后顺序排序的作业队列

对每一个在RunningTasklist的j任务,根据j任务占用的资源分配timeXprocessor的空间,形成timeXprocessor的运行作业描述文件P,对每一个在QueuedTasklist的i任务检查P,找到第一个能提供足够processor运行I的时间点anchor。

从anchor时间点开始扫描P中的time轴

{

if(直到作业i的预期完成时间都能保证足够的processor资源可用)

更新P,将anchorXprocessor资源分配给作业i;

else

继续扫描time轴,找到下一个可用的时间点anchor;

}

if(anchor=0)

执行该作业;

next i;

回填策略可以有效的提高基于队列的策略的性能,它在有效的提高小作业的响应时间的同时而不会导致大作业出现饥饿。

参考文献

[1]薛正华,刘伟哲,董小社,伍卫国.基于思维进化的集群作业调度方法研究[J].西安交通大学学报,2008(06).

[2]张果桃,赵金雁,白中英.基于LT-backfilling算法的集群作业调度系统[J].计算机工程,2007(21).

Linux操作系统网络故障诊断 篇7

计算机网络是由计算机和通信设施组成的系统。它利用多种通信手段, 把地理上分散的计算机连在一起, 达到相互通信而且共享软件、硬件和数据等资源。Linux是一套免费使用和自由传播的类Unix操作系统, 以其高效性和灵活性广受欢迎。在网络出现故障时, Linux操作系统提供了多种可用于诊断网络问题的工具和方法。综合使用这些方法, 可以准确地定位问题, 并掌握当前网络中所发生的情况。

1网络连通性测试

1.1Ping测试连通性

Ping是最常用的网络诊断工具, 它用来测试特定的主机能否通过IP到达。Ping的工作原理为:向目标主机发出一个ICMPecho要求, 等待接收echo回应。Ping程序会按时间和反应成功的次数, 估计丢包率和分组的来回时间。当网络上的服务或主机不能访问时, 使用Ping 可测试分析网络的连接状况。Ping的操作如下:

ping-c5 localhost; 确认网卡开启及工作正常。-c限制ping的数目

ping-c5 hostname/ipaddress;

ping可以根据ip地址或主机名测试连通性。如果不能够连通, ping的返回消息会告知故障原因。

ping-c5 192.168.1.10

返回消息如下, 表示此主机并未开启:

PING 192.168.1.10 (192.168.1.10) 56 (84) bytes of data.

From 192.168.1.108 icmp_seq=1 Destination Host Unreachable

1.2Nmap探测网络

Nmap (Network Mapper) 用于网络发现与安全检测。它可以检测目标主机是否在线、端口开放情况、运行的服务类型及版本信息等等。Nmap不仅可以用于扫描单个主机, 也可以适用于扫描大规模的计算机网络, 性能强大。以下是Nmap常用命令:

Ping扫描: nmap-sn-v ip

快速端口扫描: nmap-F-v ip

版本扫描: nmap-sV-v ip

当需要搜寻本地网络上所有开启的主机时, 做如下操作:

nmap-sP 192.168.1.0/24 会得到以下返回结果:

Nmap scan report for 192.168.1.1

Host is up (0.00011s latency) .

MAC Address: 00:24:8C:75:D5:3F (Asustek Computer)

Nmap scan report for 192.168.1.100

… ...

返回结果中包括所有开启的主机的主机名、IP地址以及MAC地址等信息。

当需要查看本地网络用户所使用操作系统及其开放端口时, 做如下操作:

nmap-sS-O 192.168.1.* 返回结果的示例如下:

Nmap scan report for 192.168.1.101

Host is up (0.00023s latency) .

……

MAC Address: 8C:89:A5:72:EE:11 (Unknown)

Running (JUST GUESSING) : Microsoft Windows Vista|2008|7 (97%)

Network Distance: 1 hop

2网络问题定位与数据包嗅探

2.1Traceroute追踪网络问题

当遇到网络故障, 通过Ping确认无法到达某个特定主机或网络时, 使用Traceroute等可以在网络路径中追踪问题所在。Traceroute程序的工作原理是利用增加存活时间 (TTL) 值, 每当分组经过一个路由器, 其存活时间就会减少1。当其存活时间是1时, 主机取消分组, 并传送一个ICMP TTL分组给原分组的发出者。使用方法为:

traceroute hostname/ipaddress

在实际网络中, 路由器可能会被配置为忽略Traceroute的UDP报文, 从而导致Traceroute失效。这时可以使用一个类似的工具Tcptraceroute, 它发送TCP报文因而更可靠。命令为: tcptraceroute www.baidu.com. 返回结果为:

traceroute to www.baidu.com (119.75.218.70) , 30 hops max, 60 byte packets

1 …

……

14 119.75.218.70 (119.75.218.70) 20.556 ms 20.619 ms 20.658 ms

从返回结果中可以看到, 访问该地址总共经过了13跳路由。

2.2Tcpdump嗅探数据包

当遇到网络故障时, 需要了解网络中正在传送的数据究竟是什么, 需要嗅探工具来显示发送或收到的网络上的数据包。Tcpdump就是这样一款功能强大、策略灵活的包分析工具。

tcpdump可以根据需求精确地过滤网络流量。它可以分析本机或其它主机, 可以分析特定的端口、协议或者网络。使用示例如下:

tcpdump-pi-s0-X

返回结果包括了时间戳、网络路径以及数据报文等信息。

16:39:13.867364 IPRootL.local.44705 > hg-in-f125.1e100.net.xmpp-client: Flags [.], ack 1, win 2073, options [nop, nop, TS val 1024512 ecr 580255314], length 0

0x0000: 4500 0034 303e 4000 4006 7d77 c0a8 016c E..40>@.@.}w...l

0x0010: 4a7d 807d aea1 1466 b146 71db e636 4e7e J}.}...f.Fq..6N~

… …

当需要观察网络流量, 或者查找受病毒感染而出现某种网络行为的主机时, 在路由器上运行tcpdump就可以实现目的。

3结语

Linux操作系统提供了丰富的网络工具, 综合利用这些工具可以分析网络故障的现象和原因, 遇到网络故障时, 使用Ping测试连通性, Nmap等探测网络, 使用traceroute等定位网络问题, Tcpdump功能强大可以全面捕获所需的信息。相对于复杂的监控系统, 其使用方便且灵活。

摘要:分析了Linux操作系统的网络故障应对方法, 详细阐述了多种网络应用工具在故障诊断中的作用, 结合实例说明其使用方法与结果分析。

关键词:Linux,网络,故障诊断

参考文献

[1]CARLA SCHRODER.Linux Networking Cookbook[M].O'ReillyMedia, 2007.

[2]易曼, 郭成城, 晏蒲柳.Linux下网络故障定位与诊断的实现技术[J].计算机应用研究, 2003 (5) .

Linux网络管理 篇8

目前,大型的局域网都采用认证用户的上网机制,即客户机在访问互联网时必需要登录到认证服务器,通过检查用户名和口令来决定局域网用户对互联网能否成功访问。具体来说,就是在局域网用户计算机上运行客户端程序,向认证服务器发送认证信息,认证通过后,才可以访问互联网。

由于用户计算机大部分采用Windows桌面系统,因此绝大多数公司开发的客户端软件都是面向Windows桌面的。但是随着Linux桌面用户的逐渐增多,因而亟需一个可以运行在Linux桌面上的客户端软件,以满足广大用户的上网需求。

1工作原理

经过分析可知,局域网采用客户端 - 认证服务器的方式实施登陆,其首要考虑的因素就是方便管理和收费。

客户端软件在用户计算机上收集用户名和口令,以及IP地址和MAC地址等后,即将这些信息以特定的格式封装成报文,发送给认证服务器。认证服务器收到这些信息后,就在其数据库里查找该用户是否欠费的记录,如果该用户不曾欠费,就发送一个登录成功的信息给用户,随后通知路由器允许该用户接入互联网; 如果没有该用户的记录或者该用户欠费,就发送一个认证失败的信息返回给用户,路由器也会阻止该用户通过,从而不能访问互联网。

在客户端方,主要的工作就是收集用户的用户名和口令,以及IP地址和MAC地址等信息,而后封装成服务器可以识别的格式,为了防止篡改和冒充,还需要提供源认证功能,并发送给认证服务器。客户端接收认证服务器发送的确认信息,向用户显示登录成功与否的消息。为了让认证服务器更好地管理上网的客户机,客户端软件还应该定期向服务器发送存活信息,告知认证服务器自己的在线状态,以便服务器更有针对性地维护列表[1,2]。

2设计上网客户端

使用网络嗅探软件Wireshark,对Windows客户端与认证服务器之间的通信量进行抓包并分析,由此得到了本单位认证服务器所采用的通信协议的报文格式。

根据认证服务器的工作方式,研究设计的Linux上网客户端包括6个模块: 用户信息收集模块、报文封装模块、信息解释模块、保活模块、发送模块和接收模块,其总体框架如图1所示。

由图1可见,各个模块的主要功能如下:

( 1) 用户信息收集模块

1用户输入用户名、口令以及登录请求;

2用户输入更改的新口令以及更改口令请求;

3用户提交的注销请求;

4收集用户主机的IP地址和MAC地址等信息。

( 2) 报文封装模块

1按照认证服务器规定的报文格式将收集到的用户信息进行封装;

2采用合适的算法添加认证数据。

( 3) 保活模块

定期收集认证信息,并封装成保活报文。

( 4) 信息解释模块

1提取服务器响应信息中的状态码;

2按照服务器响应信息中的状态码向用户显示相关的信息( 登录成功与否,口令修改,上网时间以及费用) 。

( 5) 发送模块

从报文封装模块和保活模块接收报文,调用socket函数发送到认证服务器。

( 6) 接收模块

1接收从认证服务器发来的报文;

2将报文递交给上层模块 ( 保活模块或信息解释模块) 。

3代码实现

根据OSI/RM的网络参考模型,客户端软件工作在应用层。研究采用广泛使用的C语言,通过socket编程直接调用下层的TCP/IP协议栈[3,4,5]。

3. 1认证过程

( 1) 登录过程

当用户设置好IP地址、DNS服务器地址等值项后,由collect_info( ) 函数读取这些参数 ( 包括IP地址、MAC地址、DNS服务器地址、默认网关等) ,再使用SHA1函数把这些本机信息以及用户名和口令生成一个160bits的散列值,而后由log_in( ) 函数将这些信息以及散列封装成一个登录报文,并由send( ) 函数发送到认证服务器。此后,客户端将一直处于接收阻塞状态,直到认证服务器返回服务器响应报文。根据响应报文的类型,客户端可分别作出如下各类反应:

1LOG_OK,登录成功,则认证服务器通过了该客户机的认证,可以上网;

2LOG_PASSWD_ERR,口令错误,认证服务器拒绝对该客户机的认证;

3 LOG_USER_ERR,没有该用户名,认证服务器拒绝该客户机的认证请求。

( 2) 修改口令过程

password_change( ) 函数收集用户名和新口令以及相应的SHA1散列值,封装成更改口令报文,并由send( ) 函数发送到认证服务器。

( 3) 注销过程

log_out( ) 函数把collect_info( ) 函数收集到的客户机信息以及SHA1函数计算的散列值封装成注销报文,也由send( ) 函数发送到认证服务器。

( 4) 主机保活过程

keep_live( ) 函数封装保活报文,每隔180秒定期由send( ) 函数发送到认证服务器,向认证服务器告知自身的存活。

3. 2报文的数据结构

认证算法采用常见的SHA1算法。

3. 3安全性

为了增加安全,减少非法篡改和盗用,研究将在客户端登陆的全过程采用SSL保护。在认证服务器上创建根证书,客户端在初次安装时就选择下载该证书,并将该证书添加到“可信任的根证书”存储区域。客户端与认证服务器之间的通信则选用128位的AES加密,保证了客户端与认证服务器之间通信的机密性。

4结束语

Linux网络管理 篇9

1 传统网络边界防护系统介绍

网络边界是指在我们的可信网络与其它不可信的网络的分界线。防火墙和入侵检测系统常常被部署在网络分界线来保护网络的安全。

目前广泛使用的网络边界安全设备是防火墙。防火墙能够根据预先设置好的安全策略对进出网络边界的流量进行控制, 但是防火墙缺少对进出流量的分析检测功能。虽然后来提出的入侵检测系统弥补了这个不足, 但是入侵检测系统是被动的安全设备, 它只是分析进出流量是否含有攻击的报文, 却不能对含有攻击信息的报文进行处理, 只有等到网络管理员发现了入侵检测系统的报警信息才能采取相应的措施, 而这时入侵者可能早已完成网络的入侵了。

2 基于LINUX的的网络边界安全防护系统设计

本文设计的网络边界安全防护系统是一种主动的、积极的入侵防范、阻止系统, 它可以对入侵活动和攻击性网络流量进行实时地检测和拦截, 避免造成任何损失, 而不是简单地在恶意流量传送时或传送后才发出警报。该系统部署在网络的边界处, 当检测到攻击企图后, 会自动地将攻击包丢掉或采取措施将攻击源阻断。

网络边界安全防护系统由简单的报文过滤模块、有状态的报文过滤模块、网络地址转换模块 (NAT) 、分析检测模块、日志模块、和响应模块等模块组成。该系统是在Netfilter/Iptables的框架上扩充新的功能来实现的[4]。下面介绍网络边界安全防护系统的各个模块的设计思想。

2.1 简单的报文过滤模块

简单的报文过滤模块的工作原理是通过检查比较网络报文头部中的一些信息来判断是否允许该网络报文进入和离开网络, 而不对网络报文中的内容进行检查。Linux2.4内核的Netfilter的Filter表内嵌了简单的报文过滤功能。简单的报文过滤模块可以在网络边界上阻止某些不安全的网络访问, 如在内部网中有一台只对内部网络开放的FTP (UDP的21端口) 服务, 则使用下面的安全策略就可以阻止外部网络的访问。

2.2 有状态的报文过滤模块

连接跟踪 (CONNTRACK) 主要用于跟踪并且记录连接状态, 并且实现状态间的转换, 同时它也保存了每个会话的通信信息。连接跟踪是一套可以和NAT配合使用的机制, 用于在传输层 (甚至应用层) 处理与更高层协议相关的动作。CONNTRACK中有许多用来处理TCP, UDP或ICMP协议的部件。这些模块从网络报文中提取详细的、唯一的信息, 因此能保持对每一个数据流的跟踪。这些信息也确定了CON-NTRACK流的当前状态。例如, UDP流一般由它们的目的地址、源地址、目的端口和源端口唯一确定。在控制表中, 报文是和被跟踪连接的四种不同状态有关的。它们分别是NEW、ESTABLISHED、RELAT-ED、INVALID。

使用上面的这些状态信息过滤网络报文, 就可以实现基于状态的过滤功能。这将可以使网络边界防护系统非常强壮和有效。如, 没有状态机制时, 经常需要打开1024以上的所有端口来放行应答的数据;利用状态机制, 就可以只开放那些有应答数据的端口, 其他的都可以关闭, 这样增强了系统防护的功能。

2.3 网络地址转换 (N AT) 模块

网络地址转换 (NAT) 模块用来实现内部网络地址和公用网络地址的转换, Iptables的NAT表就实现了该功能。该模块可以对网络报文进行一对一、一对多、多对多等多项网络地址转换工作。NAT最初是为了解决IP地址空间的短缺而提出的一种解决方案, 但是它对外隐藏了内部网络拓扑结构, 在内部网和外部网之间形成一条无形的边界, 使得外部主机无法主动地访问网络内部的节点, 从而提高内部网络的安全性。

2.4 分析检测模块

分析检测模块是从网络协议栈中获得网络报文, 从中分析是否有攻击事件发生。通过特征匹配、流量分析、协议分析、会话重构等技术分析攻击的内容和特征。将经过分析检测得到的结果提交给响应模块, 响应模块执行相应的响应动作, 并将含有攻击信息的报文、攻击事件分析结果及响应策略提交至日志系统保存, 便于网络管理员事后查看。

2.5 闭环响应模块

闭环响应模块的功能是根据分析检测模块的检测结果来实时地对该网络报文是否通过网络边界进行判断。由于分析检测模块有一定误报存在, 为了减少对正常网络运行的影响, 因此必须对闭环响应模块的响应进行等级分类。本系统分为三大类, 一类是只发出报警 (Alert) 信息, 第二类是比较危险的则是把该报文丢弃 (Drop) , 第三类是最危险的则发出响应的报文如Tcp-reset报文来切断该连接 (Reject) 。

2.6 日志模块

分析检测模块在检测到网络攻击的时候产生相应报警信息。这些报警信息是在Linux内核中产生的, 需要通过某种机制把这些信息传递到用户空间, 然后由用户空间的守护进程对这些报警信息进行处理。对这些报警信息的通常做法是把这些报警信息存放到系统的日志文件中, 以便网络管理员查看和分析这些报警信息。

3 结语

通过以上有针对性的设计, 该系统可以有效解决传统的网络边界安全软件———防火墙和入侵检测系统在防范网络攻击方面的诸多问题。主要体现在以下方面:1) 具有为防御网络攻击行为设计的响应模块, 解决了分析检测系统发现攻击行为后缺少有效防御手段, 只能检测, 不能防御的问题。2) 检测分析模块的设计是基于防御而不是基于报警, 这与通常的入侵检测系统有着本质的不同, 从而杜绝了IDS与防火墙联动时由于大量误报而使网络瘫痪的问题。3) 系统结构完整, 可靠性高。避免了入侵检测系统和防火墙系统接口标准不统一, 通用性差的问题。

摘要:互联网已经成为当今世界的重要组成部分, 基于互联网的各种服务以其方便、快捷等种种优点正日益受到人们的青睐。但是, 人们在享受互联网带来的便利的同时, 也不得不面对日益严重的网络安全问题。网络边界是指在我们的可信网络与其它不可信的网络的分界线。防火墙和入侵检测系统常常被部署在网络分界线来保护网络的安全。

关键词:网络边界,防火墙,入侵检测,安全

参考文献

[1]Stephen Northcutt等著.陈曙辉, 李化等译.深入剖析网络边界安全[M].机械工业出版社, 2003

[2]唐正军.网络入侵检测系统的设计与实现[M].电子工业出版社, 2006

[3]刘君尧.Linux下基于Netfilter的防火墙设计[J].微机发展, 2003.

Linux远程管理方法的比较分析 篇10

关键词:Linux,远程管理,telnet,ssh,vnc

在企业应用中, 在对linux服务器进行管理、优化时, 既可以在现场进行, 又可以远程管理服务器系统。但在很多时候, 网络管理员由于种种原因无法出现在服务器现场, 此时服务器管理就需要远程管理服务器系统了。下面, 讨论一下常见的linux服务器的远程管理方法。实验环境服务器采用Red Hat Enterprise Linux Server release 5.1, 防火墙和selinux处于关闭状态。

1 使用telnet服务进行远程管理

Telnet是进行远程登录的标准协议, 它曾经是Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端, 使得用户可以方便地使用远程主机上的软、硬件资源。

如果要实行基于telnet服务的远程管理, 需要在linux服务器上配置telnet服务。

1.1 安装和启动telnet服务

telnet服务在linux中不是独立的服务, 是由xinetd超级服务负责管理, 从netstat命令的输出可以看到, 服务已经正常运行。

1.2 客户端登录

在windows中可以通过telnet客户端进行登录。如图所示:

1.3 telnet的安全性

由于telnet以明文传输用户名和口令, 所以telnet是一个不安全的服务, 可以被监听到登录的用户名和密码。通过密码嗅探和破解工具cain可以得到登录的用户名和口令。

从上可以看到, 通过监听已经获得了telnet的用户名为student, 口令为123。尽管可以通过配置xinetd, 加强telnet服务的安全性, 但由于telnet协议传输数据的过程中采用明文, 利用telnet进行远程管理是不安全的。

2 使用ssh服务进行远程管理

2.1 ssh服务配置及客户端使用

RedHat Linux将默认的远程管理服务设置成OpenSSH并且默认已经安装。

ssh服务的配置文件为/etc/ssh/sshd_config, 本测试基于ssh服务的默认配置。测试客户端使用SecureCRT。

2.2 ssh的安全性

通过抓包工具wireshark可以看到, 通过ssh服务的数据是要进行密钥协商和加密的。并且ssh服务不但可以通过口令验证方式, 还可以使用密钥验证方式, 所以ssh服务是一个非常安全的服务。

3 使用vnc服务进行远程管理

VNC软件主要由两个部分组成:VNC server和VNC viewer。用户需先将VNC server安装在被控端的计算机上, 才能在主控端执行VNC viewer控制被控端它可以远程控制X-Window桌面。

3.1 VNC服务配置及客户端使用

通过使用vncserver:1启动编号为1的桌面并设置访问口令后, 需要修改用户主目录下.vnc/xstartup配置文件

将“#Uncomment the following two lines for normal desktop:”语句下的两行配置前面的“#”去掉。则客户端即可正常登录并使用图形化界面对服务器进行管理。

3.2 VNC的安全性

VNC提供的安全机制仅限于客户的身份验证, 采用的方法是随机挑战响应。在客户端请求连接的初始化阶段, 双方协商了所要使用的RFB协议版本后, 对客户的身份进行验证。因此, 使用VNC进行远程管理, 还是存在安全隐患的。

4 结束语

在服务器的远程管理方法中, 除了上述常见的三种方法外, 还常常使用webmin、Xmanager及使用snmp协议的一些服务器管理工具, 本文不进行讨论。总结上述三种方法, 在远程服务器管理中, 只有ssh服务是最安全的的选择。

参考文献

[1]张勤, 杨章明.Linux服务器配置全程实录[M].北京:人民邮电出版社, 2010.

上一篇:教学方式转化下一篇:结论标准