Author: qbanke | Category: Linux & Unix, 服务器
Comments: 评论关闭

有史以来最怪的问题,如果不是友人早前的提示,我还真得还要得耗半天找原。话说他们公司 Dell R710 用的操作系统是 RedHat As5.3 X64 会在正常运行中无故断网….
而且并没有规律,择日而断…弄了好久,还以为是机房的问题,最后无奈之下打电话给 Dell 报修。
他们的工程师立马就反应过来,这是 RedHat As5.X 版本中的Broadcom NetXtreme II BCM 5709 驱动 BUG,涉及到 ACPI 电源管理的问题。
所以当网卡在正常工作的时候,会被 ACPI 误以为他闲着,从而把它给关闭掉。

每次出现这个情况,只需要 service network restart  或者 ifdown/ifup ethX (对于被关闭的网卡端口) 就可以恢复正常。
真有够气愤的。

解决这个问题有2种方法,第一种相对简单,就是在Linux内核中禁用 ACPI 电源管理系统。
但该方法不推荐,因为会导致服务器失去智能电源调节,增加功耗。

另外一种方法就是升级网卡驱动,以下是过程:

首先当然是去 Dell 下载一份最新的 Broadcom NetXtreme II BCM 驱动。
相信只要是 使用 Broadcom NetXtreme II BCM 5709 网卡的服务器都有必要更新,例如 R710 ,R610。

[root@localhost DRIVER]# modinfo bnx2  [首先查看当前驱动版本]
filename:       /lib/modules/2.6.18-164.el5/updates/bnx2.ko
version:        1.9.3
license:        GPL
description:    Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver

[root@localhost DRIVER]# tar zxvf Bcom_LAN_14.1.5_Linux_Source_A00.tar.gz
[root@localhost DRIVER]# cd Bcom_LAN_14.1.5_Linux_Source_A00/NetXtremeII/
[root@localhost NetXtremeII]# rpm -ivh netxtreme2-5.0a.10-1.src.rpm
   1:netxtreme2             ######################## [100%]

[root@localhost NetXtremeII]# cd /usr/src/redhat/
[root@localhost redhat]# rpmbuild –bb SPECS/netxtreme2.spec
[root@localhost redhat]# rpm -ivh RPMS/x86_64/netxtreme2-5.0a.10-1.x86_64.rpm

好了,驱动都安装上了,然后有2个方法让新驱动起效,一是重启服务器。
如果不便重启的话,以下是第二种:

但过程会导致网络断开,而且没有人工干预,会无法连上。
所以如果你并不在本地操作,或者你的服务器与您相隔甚远,建议三思后行。

[root@localhost NetXtremeII]# rmmod bnx2 卸载现有驱动[注意!!!会导致网络中断]
[root@localhost NetXtremeII]# modprobe bnx2  [重新加载驱动]

但是,如果你非逼不得已。
可以用以下小方法:

把以上2个命令写成一个 sh 脚本

[root@localhost redhat]# vim lan_dr_up.sh

rmmod bnx2
modprobe bnx2

:wq

然后赐予可执行权限

[root@localhost redhat]# chmod +x lan_dr_up.sh
[root@localhost redhat]# ./lan_dr_up.sh &  [留意,在执行命令后方带有&符号,意思是让该命令在后台执行就算ssh控制端掉线了,服务器还能自主把新的网卡驱动重新加载。]

好了,下边我们再次查看网卡驱动的版本号

[root@localhost DRIVER]# modinfo bnx2  [首先查看当前驱动版本]
filename:       /lib/modules/2.6.18-164.el5/updates/bnx2.ko
version:        1.9.20d
license:        GPL
description:    Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver

Author: admin | Category: 默认分类
Comments: 评论关闭

之前配置过 tar 包编译的 Bind

但步骤跟路径都与 RedHat As5.x 安装系统时勾选的,或者是 rpm 方式安装的有天渊之别。

这里来分享一下:

我在安装的时候就勾选了安装向导里头的 “DNS 服务器” 跟我一样的朋友就可以跳过下边这部分安装方式:

########################################################

我们需要做的第一件事是确定BIND是否已经安装在系统上。我们使用的方法是通过RPM Package Manager来检测是否已安装BIND(这种方法不适于下载的BIND源代码安装方式)。

输入以下的命令:

rpm –qa | grep –i bind

rpm –qa | grep –i caching

如果BIND已经被安装过,你将得到如下信息(忽略 ypbind…它和BIND没有关系)

[root@wenter126 root]# rpm –qa | grep –i bind   

bind-9.2.2-21                                                                    

bind-utils-9.2.2-21                                                         

ypbind-1.12-1                                                                  

[root@wenter126 root]# rpm –qa |grep –i caching

caching-nameserver-7.2-7                                              

[root@wenter126 root]                                                 

如果BIND没有被安装你将得到如下信息:

[root@wenter126 root]# rpm –q a | grep –i bind

ypbind-1.12-1                                                                 

[root@wenter126 root]# rpm –qa |grep –i caching

[root@wenter126 root]                                                 

你可以通过如下的命令卸载BIND

rpm –q –a | grep ‘^bind’ | while read line

>do                                                                     

>rpm –e –nodeps $line                                  

>done                                                                

安装BIND有几种选择,可以下载源代码然后编译它,但是我们不用这种方法。我们采用简单的安装RPM包的方式。有几种获取RPM包的方式,1、从RedHat安装盘中获取;2、从网上下载BIND RPM包。

我是在安装盘上获得的BIND。BIND不同的版本相对应的RPM包的名称也不完全相同,你可以复制安装盘上的所有的以“bind”开头的所有RPM包和一个以“caching-nameserver”开头的RPM包到/usr/local/temp下(也可以是别的目录)。

开始安装BIND

将复制过来的RPM包赋于可执行权限,并执行安装

[root@wenter126 temp]# chmod a+x *                                                                

[root@wenter126 temp]# rpm –ivh bind-* caching-nameserver*.rpm          

Preparing…                            #################################[100%]

    1:bind-utils                  #################################[ 25 %]

    2:bind                            #################################[ 75 %]

    1:bind-devel                      #################################[ 50%]

    4:caching-nameserver #################################[100%]

上述工作完成表示你的BIND已经安装完成

 ########################################################

接下来开始配置。

我就比较郁闷,系统安装时带的 bind 虽然路径都安放在 /var/named 但里边确没有一个配置文件。

连 named.conf 跟 local.zone 这2个重要的配置文件都没有…

如果你们也跟我一样这么倒霉, 就继续看吧。

之前用tar包安装band的时候留下了一下配置项。但只能作为参考,直接用上 service named start 的时候会报错。

首先说第一个文件:/etc/sysconfig/named

这个配置文件的最后一行决定了named (即bind)的其他配置文件的路径及目录。

默认是 /var/named

第二个文件是:/var/named/chroot/etc/named.conf

这个文件就是 bind 的主配置文件,有可能band装好后会没有,一会需要手工新建。

第三个文件是:/var/named/chroot/etc/rndc.key

该文件保存的是 MD5 的加密密钥,用于给管理员控制管理DNS服务器以及数据同步加密等等…

相当重要,要使用其里头的信息创建 named.conf

第四个文件是:*.zone

啥意思? 这个是指针文件,用于存放域名的DNS记录,例如A记录,MX记录,CNAME 记录等。它的位置由 named.conf 里边的参数决定。

好,下边就开始说各个配置文件的使用以及创建。

第一个:/etc/sysconfig/named  如果你没有特殊爱好,留着默认好了。
第二个:/var/named/chroot/etc/named.conf  需要手工创建。

首先是要打开第三个文件:/var/named/chroot/etc/rndc.key

把里头的所有内容复制,然后在相同目录下创建 named.conf,并把复制的内容粘贴进去。
然后在插入配置内容,named.conf 完成后例子如下:
路径:/var/named/chroot/etc/named.conf 

##############################

key “rndckey” {
        algorithm       hmac-md5;
        secret          “m3pD9wpq7QsO7l9ojGdFxxxxxxxxxxxxxxxxxxxq3eNz2tSU97l5uYD”;     #
};

options {
        directory       “.”;          # DNS指针配置的路径相对于 /var/named/chroot
};

zone “gznow.cn” IN {          # DNS 指针的域名
        type master;                 
        file “master/gznow.zone”;     # 指针路径
        allow-update{none;};
};

##############################

我们这里配的是最基本的 bind 服务,其他复杂的功能例如反向解析,分IP段解析等之类的功能就日后再说。

按照上边的配置把 named.conf 创建后,可以着手创建 *.zone 指针

这里以 gznow.zone 为例

按照 named.conf 中指针路径的配置
在 /etc/named/chroot 下创建文件夹 master
并新建指针配置文件 gznow.zone
路径如:/var/named/chroot/master/gznow.zone

内容:

##############################

$TTL 3600 ;
@          IN SOA  ns1.gznow.cn. admin.gznow.cn. (
                2003030400 ; Serial
                28800 ; Refresh
                14400 ; Retry
                3600000 ; Expire
                86400 ) ; Minimum

        IN NS           ns1.gznow.cn.
        IN MX           5 mail.gznow.cn.
ns1     IN A            219.136.252.253
ns2     IN A            219.136.252.253

@       IN A            219.136.252.253
*       IN A            219.136.252.253

www     IN A            219.136.252.253
www     IN A            203.114.253.73

mail    IN CNAME        s1.someqone.com.
img     IN CNAME        phlinux.someqone.com.

##############################

第1行是一个TTL设定,定义区域数据文件里面的各项记录的默认TTL值为3600s
缺少此行不影响使用,但是会出现警告信息。

第2行是一个SOA记录的设定,”@”代表相应的域名,也就是在named.conf中设定的zone
如在这里表示gznow.cn,IN表示后面的数据使用的是Internet标准。
SOA的全称是”Start Of Authority”,表示目前区域授权开始。
每一个区域数据文件只能有一个SOA,不能重复,而且必须是所负责的zone中第一个”记录”。
在SOA后面分别指定了这个区域的授权主机名称和管理者的信箱( admin.gznow.cn. )

注意 授权主机名和管理员信箱后面都要有一个”.”,而且授权主机名称必须能够在DNS设置中找到一个A记录(下面会讲到)。由于”@”在区域数据文件中有其他含义,因此管理员信箱邮件地址中用”.”代替”@”符号。

接下来包含在括弧中的5组数字是作为与Slave服务器同步信息而设置的,含义如下。

Serial:表示配置文件的修改版本,格式是年月日加上修改的次数
每次修改这个配置文件时都应该修改这个数字
因为Slave DNS进行信息同步时,会比较这个数值。
如果这个数值比自身的数值大,就进行更新,否则忽略更新。

注意 这个设置很重要,如果在修改区域数据文件后,没有更新该值,那么所做的更改就不会更新到网上的其他DNS服务器。

refresh:用来设定Slave DNS与Master DNS进行同步的间隔时间。

retry:设定Slave DNS在更新失败后,再进行重试的间隔时间。

expiry:设定Slave DNS在与Master DNS同步失败后,多长时间清除对应的记录。

Minimum:这是默认的最小TTL值,如果在前面没有指定TTL值,就以这个为基准。

以上的数字都是以s(秒)为单位的,但也可以用H(小时)、D(天)、W(星期)来作单位。

第8-14行,是对域名解析的具体设置,第1列表示不同的主机域名,但是省略了后面的域信息。
例如”www”其实是www.gznow.cn,”mail”是指mail.gznow.cn。
其他具有相同的含义。”IN”后面的指令含义说明如下。

NS:用来定义这个主机是个域名服务器。

MX:定义了一个邮件交换器。

A指针:定义了一个A记录,即域名到IP的记录。

CNAME:定义了域名的别名。

至此,如果你服务器上开启了 iptables ,记得把 udp 53 端口打开。

 vim /etc/sysconfig/iptables 加入以下这行:

-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT

然后启动 bind  :service bind start 没有报错即成功!

Top
RSS for entries