Archive for 2006年8月15日


DNS服务器的配置与应用

1.1 DNS 查询进程分两部分进行:

        * 名称查询从客户端计算机开始,并传输至解析程序即 DNS 客户端服务程序进行解析。

        * 不能在本地解析查询时,可根据需要查询 DNS 服务器来解析名称。

1.2 Internet上域名命名的一般规则

由于Internet上的各级域名是分别由不同机构管理的,所以,各个机构管理域名的方式和域名命名的规则也有所不同。但域名的命名也有一些共同的规则,主要有以下几点:

    域名中只能包含以下字符:
        1. 26个英文字母
        2. “0,1,2,3,4,5,6,7,8,9”十个数字
        3. “-”(英文中的连词号)。

   域名中字符的组合规则: 
        1. 在域名中,不区分英文字母的大小写 
        2. 对于一个域名的长度是有一定限制的  

1.3 常见标准资源记录

SOA(Start Of Authority)

起始授权记录表示一个授权区的开始

A (Address)

将主机名转换为地址。这个字段保存以点分隔的十进制形式的IP地址。任何给定的主机都只能有一个A记录,因为这个记录被认为是授权信息。这个主机的任何附加地址名或地址映射必须用CNAME类型给出

CNAME (Canonical NAME)

给定一个主机的别名,主机的别名记录是在这个主机的A记录中指定的

MX (Mail eXchanger)

建立邮件交换器记录。MX记录告诉邮件传送进程把邮件送到另一个系统,这个系统知道如何将它递送到它的最终目的地

NS (Name Server)

标识一个域的域名服务器。NS资源记录的数据字段包括这个域名服务器的DNS名。我们还需要指定这个名字名字服务器的地址与主机名相匹配的A记录

PTR (domain name PoinTeR)

将地址变换成主机名。主机名必须是规范主机名

2. BIND9 的安装与配置 2.1 bind简介

BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,包括

域名服务器 (named) DNS解析库函数 DNS服务器运行调试所用的工具

是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,

按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。不论你的邮件服务器,WEB服务器或者其他的services如何的安全可靠,DNS的故障会给你带来用户根本无法访问这些服务。

BIND,也是我们常说的named,由于多数网络应用程序使用其功能,所以在很多BIND的弱点及时被发现。主要分为三个版本:

v4

1998年多数UNIX捆绑的是BIND4,已经被多数厂商抛弃了,除了OpenBSD还在使用。OpenBSD核心人为BIND8过于复杂和不安全,所以继续使用BIND4。这样一来BIND8/9的很多优点都不包括在v4中。

v8

就是如今使用最多最广的版本,其详细内容可以参阅 BIND 8+ 域名服务器安全增强

v9

最新版本的BIND,全部重新写过,免费(但是由商业公司资助),也添加了许多新的功能(但是安全上也可能有更多的问题)。BIND9在2000年十月份推出,现在稳定版本是9.3.2。

2.2 配置环境

        环境:GNU/Linux Debian/testing Linux 2.6.8-2-386

        版本:bind9  9.3.2-2

        测试域名:mydebian.org

        测试ip: 192.168.102.47  主域名服务器  
                192.168.102.48  纯缓存域名服务器
                192.168.102.49  辅助域名服务器
                192.168.102.49  测试客户机

2.3 配置文件说明

安装bind9的命令:

        ~# aptitude update
        ~# aptitude install bind9 bind9-host dnsutils

配置文件族:

        # ls /etc/bind/ -l
        total 44
        -rw-r--r-- 1 root root  237 Jan 16  2006 db.0
        -rw-r--r-- 1 root root  271 Jan 16  2006 db.127
        -rw-r--r-- 1 root root  237 Jan 16  2006 db.255
        -rw-r--r-- 1 root root  353 Jan 16  2006 db.empty
        -rw-r--r-- 1 root root  256 Jan 16  2006 db.local
        -rw-r--r-- 1 root root 1507 Jan 16  2006 db.root
        -rw-r--r-- 1 root bind 1611 Jan 16  2006 named.conf
        -rw-r--r-- 1 root bind  165 Jan 16  2006 named.conf.local
        -rw-r--r-- 1 root bind  672 Jan 16  2006 named.conf.options
        -rw-r----- 1 bind bind   77 Aug  4 08:41 rndc.key
        -rw-r--r-- 1 root root 1317 Jan 16  2006 zones.rfc1918

配置文件说明:

named.conf

设置一般的named参数,指向该服务器使用的域数据库的信息源

named.conf.options

全局选项

db.root

根服务器指向文件, 由Internet NIC创建和维护, 无需修改, 但是需要定期更新

db.local

localhost正向区文件,用于将名字localhost转换为本地回送IP地址 (127.0.0.1)

db.127

localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost

其中,主配置文件/etc/named.conf的配置语句

 命令          用法 
 acl           定义IP地址的访问控制清单 
 control       定义ndc使用的控制通道 
 include       把其他文件包含到配置文件中 
 key           定义授权的安全密钥 
 logging       定义日志写什么,写到哪 
  opitons       定义全局配置选项和缺省值  
 server        定义远程服务器的特征 
 trunsted-keys 为服务器定义DNSSEC加密密钥 
 zone          定义一个区

默认情况下, 内容如下:

        include "/etc/bind/named.conf.options";

        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

        zone "127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };

        zone "0.in-addr.arpa" {
                type master;
                file "/etc/bind/db.0";
        };

        zone "255.in-addr.arpa" {
                type master;
                file "/etc/bind/db.255";
        };

        include "/etc/bind/named.conf.local";

其中type项的值:

master:表示定义的是主域名服务器

slave :表示定义的是辅助域名服务器

hint:表示是互联网中根域名服务器

在Debian环境中,options语句的配置内容, 被移至named.conf.options文件中:

        options {
                directory "/var/cache/bind";

                // If there is a firewall between you and nameservers you want
                // to talk to, you might need to uncomment the query-source
                // directive below.  Previous versions of BIND always asked
                // questions using port 53, but BIND 8.1 and later use an unprivileged
                // port by default.

                // query-source address * port 53;

                // If your ISP provided one or more IP addresses for stable
                // nameservers, you probably want to use them as forwarders.
                // Uncomment the following block, and insert the addresses replacing
                // the all-0's placeholder.

                // forwarders {
                //      0.0.0.0;
                // };

                auth-nxdomain no;    # conform to RFC1035

        };

2.4 创建主域名服务器

a. 首先, 在在192.168.102.47机器上安全bind9

b. 使用编辑器,比如vi, 编辑配置文件/etc/bind/named.conf

加入如下内容

        zone "mydebian.org" {
                type master;    //定义此区为主服务器
                file "/etc/bind/db.mydebian";   指定区资源文件的位置
        };


        zone "102.168.192.in-addr.arpa" {
                type master;    //定义此区为主服务器
                file "/etc/bind/db.192";        //指定区资源文件的位置
        };

c. 创建区资源文件:

创建区资源文件/etc/bind/db.mydebian内容如下

        ;
        ; BIND data file for local loopback interface
        ;
        $TTL    604800
        $ORIGIN mydebian.org.
        @       IN      SOA     mydebian.org. root.mydebian.org. (
                                2006080401      ; Serial
                                 604800         ; Refresh
                                  86400         ; Retry
                                2419200         ; Expire
                                 604800 )       ; Negative Cache TTL
        ;

                IN      NS      ns
                IN      MX      0       mail.mydebian.org.
        @       IN      A       192.168.102.47
        ns      IN      A       192.168.102.47
        www     IN      A       192.168.102.47
        webserver       IN      CNAME   www
        mail    IN      A       192.168.102.47
        ftp     IN      A       192.168.102.48
        ns2     IN      A       192.168.102.48
        ns3     IN      A       192.168.102.49

第一行是TTL设定,生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。这里定义为604800秒,也就是1周.

第二行是$ORIGIN设定,说明下面的记录出自何处.请您加倍留意最后的一个小小数点"."

然后,第三行,是一个 SOA 记录的设定,在这里我们看到一个特殊字符 @ ,它就是 ORIGIN 的意思,也就是刚刚所定义的$ ORIGIN mydebian.org. 的内容,您可以写成 mydebian.org. 也可以用 @ 来代替。

假如这个文件前面没有定义 $ ORIGIN 的话, 那這个 @ 的值就以 named.conf 里的 zone .

接着 SOA 后面,指定了这个区域的授权主机和管理者的信箱,这里分别是"mydebian.org." 和"root.mydebian.org."。我们平时使用的信箱通常是“user@host”这样的格式,但因为@在 DNS 记录中是个保留字符,所以在 SOA 中就用“.”来代替了@。目前这个信箱是 "root@mydebian.org."。

接下来的 SOA 设置,是被括在“( )”之间的 5 组数字,主要作为和 slave 服务器同步 DNS 资料所使用的资料:

Serial:其格式通常会是“年月日+修改次序”(但也不一定如此,您自己能够记得就行)。当 slave 要进行资料同步的时候,会比较这个号码。如果发现在这里的号码比它那边的数值“大”,就进行更新,否则忽略。不过设 serial 有一个地方您要留意:不能超过 10 位数字!

Refresh:这里是是告诉 slave 要隔多久要进行资料同步(是否同步要看 Serial 的比较结果)。

Retry:如果 slave 在进行更新失败后,要隔多久再进行重试。

Expire:这是记录逾期时间:当 slave 一直未能成功与 master 取得联系,那到这里就放弃 retry,同时这里的资料也将标识为过期(

expired )。

Minimum:这是最小默认 TTL 值,如果您在前面没有用“$TTL”来定义,就会以此值为准。

请注意:SOA 记录中这对 “ ( ) ”符号之第一个 “ (”括号一定要和 SOA 写在同一行,而不能用 Enter 断行到下一行去,而且其左边最好有一个空格键或 tab 建。而最后一个 “ )”括号也不能写在注解符号 “ ;”的右边。 置 DNS 的 RR 记录档,其格式要求非常严格,我们丝毫不能掉以轻心。比方说:如果句子不是以空格键、Tab 键、 或注解符号 ( ; )开头,也不在 SOA 的 “ ( ) ”之内, 则表示要定义一个“新记录项 (Entry) ”;如果句子是以空格键或 tab 键开始的话,其设置被视为上一个“记录项”的内容。所以,如果您要为“同一个记录项”定义多个记录设置,而不想重复打字,您倒可以偷懒:在接着它的后面几行用空白或 Tab 来缩排就可以了。

NS表明负责mydebian.org.这个域的Name Server是mydebian.org这台主机

MX记录标明发往mydebian.org域的邮件由mail.mydebian.org这台服务器接收

A记录标明了IP地址和域名之间的对应关系

接下来创建该区的反向映射资源文件

/etc/bind/db.192内容如下:

        ;
        ; BIND reverse data file for local loopback interface
        ;
        $TTL    604800
        @       IN      SOA     mydebian.org. root.mydebian.org. (
                                2006080401      ; Serial
                                 604800         ; Refresh
                                  86400         ; Retry
                                2419200         ; Expire
                                 604800 )       ; Negative Cache TTL
        ;
        @       IN      NS      mydebian.org.
        47      IN      PTR     mail.mydebian.org.
        47      IN      PTR     www.mydebian.org.
        47      IN      PTR     ns.mydebian.org.
        48      IN      PTR     ftp.mydebian.org.
        48      IN      PTR     ns2.mydebian.org.
        49      IN      PTR     ns3.mydebian.org.

其中PTR记录用来解析IP地址对应的域名

d. 重启DNS服务

        /etc/init.d/bind9 restart

此时查看系统日志,可了解BIND的启动情况,比如如下输出,则说明引导正常

   tonybox:~# tail /var/log/syslog
  Aug 1 8:36:45 localhost named[2792]: zone 127.in-addr.arpa/IN: loaded serial 1
  Aug 1 8:36:45 localhost named[2792]:zone 102.168.192.in-addr.arpa/IN:loaded serial 2006080801
  Aug 1 8:36:45 localhost named[2792]: zone 255.in-addr.arpa/IN: loaded serial 1
  Aug 1 8:36:45 localhost named[2792]: zone localhost/IN: loaded serial 1
  Aug 1 8:36:45 localhost named[2792]: zone mydebian.org/IN: loaded serial 2006080801
  Aug 1 8:36:45 localhost named[2792]: running
  Aug 1 8:36:45 localhost named[2792]:zone mydebian.org/IN:sending notifies(serial 2006080801)
  Aug 1 8:36:45 localhost named[2792]: zone 102.168.192.in-addr.arpa/IN: sending notifies 
(serial 2006080801) Aug 14 08:36:45 localhost named[2792]: client 192.168.102.47#1030: received notify for zone
'mydebian.org' Aug 14 08:36:45 localhost named[2792]: client 192.168.102.47#1030: receivedfor zone '102.168.
192.in-addr.arpa'

e. 在客户机上的设置

        # cat /etc/resolv.conf
        search mydebian.org
        nameserver 192.168.102.47

f. 测试:

使用nslookup 测试

        tonybox2:~# nslookup
        > set type=any
        > mydebian.org
        Server:         192.168.102.47
        Address:        192.168.102.47#53

        mydebian.org
                origin = mydebian.org
                mail addr = root.mydebian.org
                serial = 2006080801
                refresh = 604800
                retry = 86400
                expire = 2419200
                minimum = 604800
        mydebian.org    nameserver = ns.mydebian.org.
        mydebian.org    mail exchanger = 0 mail.mydebian.org.
        Name:   mydebian.org
        Address: 192.168.102.47

使用dig测试

        tonybox2:~# dig @192.168.102.47 mydebian.org

        ; <<>> DiG 9.3.2 <<>> @192.168.102.47 mydebian.org
        ; (1 server found)
        ;; global options:  printcmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41793
        ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

        ;; QUESTION SECTION:
        ;mydebian.org.                  IN      A

        ;; ANSWER SECTION:
        mydebian.org.           604800  IN      A       192.168.102.47

        ;; AUTHORITY SECTION:
        mydebian.org.           604800  IN      NS      ns.mydebian.org.

        ;; ADDITIONAL SECTION:
        ns.mydebian.org.        604800  IN      A       192.168.102.47

        ;; Query time: 31 msec
        ;; SERVER: 192.168.102.47#53(192.168.102.47)
        ;; WHEN: Mon Aug 14 09:16:27 2006
        ;; MSG SIZE  rcvd: 79


        tonybox2:~# dig @192.168.102.47 ftp.mydebian.org

        ; <<>> DiG 9.3.2 <<>> @192.168.102.47 ftp.mydebian.org
        ; (1 server found)
        ;; global options:  printcmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63890
        ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

        ;; QUESTION SECTION:
        ;ftp.mydebian.org.              IN      A

        ;; ANSWER SECTION:
        ftp.mydebian.org.       604800  IN      A       192.168.102.48

        ;; AUTHORITY SECTION:
        mydebian.org.           604800  IN      NS      ns.mydebian.org.

        ;; ADDITIONAL SECTION:
        ns.mydebian.org.        604800  IN      A       192.168.102.47

        ;; Query time: 22 msec
        ;; SERVER: 192.168.102.47#53(192.168.102.47)
        ;; WHEN: Mon Aug 14 09:16:41 2006
        ;; MSG SIZE  rcvd: 83

反向查询

        tonybox2:~# dig @192.168.102.47 -x 192.168.102.47

        ; <<>> DiG 9.3.2 <<>> @192.168.102.47 -x 192.168.102.47
        ; (1 server found)
        ;; global options:  printcmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21885
        ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1

        ;; QUESTION SECTION:
        ;47.102.168.192.in-addr.arpa.   IN      PTR

        ;; ANSWER SECTION:
        47.102.168.192.in-addr.arpa. 604800 IN  PTR     www.mydebian.org.
        47.102.168.192.in-addr.arpa. 604800 IN  PTR     mail.mydebian.org.
        47.102.168.192.in-addr.arpa. 604800 IN  PTR     mydebian.org.

        ;; AUTHORITY SECTION:
        102.168.192.in-addr.arpa. 604800 IN     NS      mydebian.org.

        ;; ADDITIONAL SECTION:
        mydebian.org.           604800  IN      A       192.168.102.47

        ;; Query time: 33 msec
        ;; SERVER: 192.168.102.47#53(192.168.102.47)
        ;; WHEN: Mon Aug 14 09:17:00 2006
        ;; MSG SIZE  rcvd: 138

2.5 纯缓存域名服务器

192.168.102.48 为我们的dns 缓存服务器,首先, 在在192.168.102.48 机器上安全bind9, 在配置前我们用dig 进行测试

        tonybox2:/etc/bind# dig @192.168.102.48 www.mydebian.org

        ; <<>> DiG 9.3.2 <<>> @192.168.102.48 www.mydebian.org
        ; (1 server found)
        ;; global options:  printcmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 34137
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

        ;; QUESTION SECTION:
        ;www.mydebian.org.              IN      A

        ;; Query time: 1844 msec
        ;; SERVER: 192.168.102.48#53(192.168.102.48)
        ;; WHEN: Tue Aug  8 12:05:17 2006
        ;; MSG SIZE  rcvd: 34

修改named.conf.options文件

        tonybox2:/etc/bind# cat named.conf.options
        options {
                directory "/var/cache/bind";

                // If there is a firewall between you and nameservers you want
                // to talk to, you might need to uncomment the query-source
                // directive below.  Previous versions of BIND always asked
                // questions using port 53, but BIND 8.1 and later use an unprivileged
                // port by default.

                // query-source address * port 53;

                // If your ISP provided one or more IP addresses for stable
                // nameservers, you probably want to use them as forwarders.
                // Uncomment the following block, and insert the addresses replacing
                // the all-0's placeholder.

                 forwarders {
                        192.168.102.47;  //主域名服务器的IP地址
                 };

                auth-nxdomain no;    # conform to RFC1035

        };

然后再进行测试

        tonybox2:/etc/bind# dig @192.168.102.48 www.mydebian.org

        ; <<>> DiG 9.3.2 <<>> @192.168.102.48 www.mydebian.org
        ; (1 server found)
        ;; global options:  printcmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54332
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

        ;; QUESTION SECTION:
        ;www.mydebian.org.              IN      A

        ;; ANSWER SECTION:
        www.mydebian.org.       604800  IN      A       192.168.102.47

        ;; AUTHORITY SECTION:
        mydebian.org.           604800  IN      NS      mydebian.org.

        ;; ADDITIONAL SECTION:
        mydebian.org.           604800  IN      A       192.168.102.47

        ;; Query time: 44 msec
        ;; SERVER: 192.168.102.48#53(192.168.102.48)
        ;; WHEN: Tue Aug  8 12:05:47 2006
        ;; MSG SIZE  rcvd: 80

所谓的 forwarder,就是当某一台 NS 主机遇到非本机负责的 zone ( slave zone 也属于本机负责的范围) 查询请求的时候,将不直接向 "." zone 查询而把请求转交给指定的 forwarder (一台或多台) 主机代为查询。

我们知道,当DNS服务器接到客户端主机的查询请求时,首先会检查这个查询是否属于本机管辖,否则将转向 "." zone 再逐级的查询下去,最后再把查询结果告诉客户端。

在这个过程之中,DNS服务器还会将查询到的结果存放到缓存中。只要缓存中的 TTL 没过期,在下次遇到同样查询的时候,就可以直接将结果响应给客户端,而无需再重复上次的查询流程。

如果DNS服务器上指定了forwarder,那这个DNS发现缓存中没有记录时,将不向 "." 查询,而是向 forwarder 送出同样的请求(转发),然后等待查询结果,即把逐级往下查询这个耗费精力的动作,交给 forwarder 负责。但无论这个结果是自己直接查询得来的,还是 forwarder 送回来的,DNS服务器都会保存一份数据在缓存中。

这样,以后的相同查询就快多了,这对于DNS所服务的 客户端而言查询效率会提高很多。

        /var/named/named.ca
        dig @a.root-servers.net . ns > /var/named/named.ca

2.6 辅助域名服务器

a. 192.168.102.49 为我们的dns 缓存服务器,首先, 在在192.168.102.49 机器上安全bind9,

b. 在主配置文件/etc/named.conf中加入如下内容:

        zone "mydebian.org" {
                type slave;
                file "/etc/bind/slaves/db.mydebian";
                masters {192.168.102.47;};
        };

        zone "102.168.192.in-addr.arpa" {
                type slave;
                file "/etc/bind/slaves/db.192";
                masters {192.168.102.47;};
        };

type后面的值已经成为slave; 表示定义的是辅助域名服务器

file 后面也可以是别的文件名不必与主域DNS服务器的设置一样

masters 后为主域DNS服务器的IP地址, 可以是多个IP,型如

        masters {ip1;ip2;ip3;};

c. 创建/etc/bind/slaves/目录

        tonybox2:/etc/bind# mkdir slaves

        tonybox2:/etc/bind# chown bind.bind slaves

d. 重启dns服务

        tonybox2:/etc/bind/slaves# /etc/init.d/bind9 restart

named进程第一次启动时,辅助域名服务器就下载主域名服务器的信息;辅助域名服务器根据主域名服务器的对应SOA记录规定的刷新时间间隔,去主域名服务器查询相关信息。

        tonybox2:/etc/bind/slaves# ls -l
        total 8
        -rw-r--r-- 1 bind bind 410 2006-08-08 12:23 db.192
        -rw-r--r-- 1 bind bind 430 2006-08-08 12:23 db.mydebian

查看 /etc/bind/slaves 目录,我门会发现已经从主域名服务器获取了相应的资源文件

如果用户bind对于/etc/bind/slaves目录没有写权限, 则查看 /var/log/syslog 会出现如下类似错误:

   tony:~# tail /var/log/syslog

   Aug  8 12:30:09 tony2 named[3849]: zone mydebian.org/IN: Transfer started.
   Aug  8 12:30:09 tony2 named[3849]: transfer of 'mydebian.org/IN' from 192.168.102.47#53:
connected using 192.168.102.15#1075 Aug 8 12:30:09 tony2 named[3849]: dumping master file: /etc/bind/tmp-VHTxU6CT5n: open:
permission denied Aug 8 12:30:09 tony2 named[3849]: transfer of 'mydebian.org/IN' from 192.168.102.47#53:
failed while receiving responses: permission denied Aug 8 12:30:09 tony2 named[3849]: transfer of 'mydebian.org/IN' from 192.168.102.47#53:
end of transfer Aug 8 12:30:10 tony2 named[3849]: zone 102.168.192.in-addr.arpa/IN: Transfer started. Aug 8 12:30:10 tony2 named[3849]: transfer of '102.168.192.in-addr.arpa/IN' from 192.168.
102.47#53: connected using 192.168.102.15#1076 Aug 8 12:30:10 tony2 named[3849]: dumping master file: /etc/bind/tmp-dxbiD1JtTK: open:
permission denied Aug 8 12:30:10 tony2 named[3849]: transfer of '102.168.192.in-addr.arpa/IN' from 192.168.
102.47#53: failed while receiving responses: permission denied Aug 8 12:30:10 tony2 named[3849]: transfer of '102.168.192.in-addr.arpa/IN' from 192.168.
102.47#53: end of transfer

3. 安全设置: 3.1 版本信息

在named.conf.options配置文件中加入:

        version     "None of your business";

当别人要探测我们DNS服务器的版本时,对方得到的将是None of your business :)

3.2 地址监听

在named.conf.options配置文件中加入:

        Listen-on{192.168.102.47;};

如果DNS服务运行在有多个网卡的服务器上,那么默认的它会在所有网卡接口上监听服务,这个选项告诉它只在指定的借口上进行服务监听。

3.3 访问控制列表

首先定义访问控制列表

在/etc/bind/named.conf文件的最上部添加如下内容:

        include "/etc/bind/named.conf.acls";

创建/etc/bind/named.conf.acls文件,内容如下:

        acl denied {

        192.168.0.0/24;

        };

        acl intra-net {

        192.168.102.0/24;

        };

        acl slave {

        192.168.102.49;

        }

如果不想让192.168.0.0/24网段使用DNS服务器,则可以在 named.conf.options 文件的options内部加入:

        blackhole {denied;};

如果只想相让192.168.102.0/24;网段使用DNS服务器,则可以在 named.conf.options 文件的options内部加入:

        allow-query { intra-net; };

如果只想对某个区资源作限制,也可将blackhole/allow-query指令加入到named.conf的对应zone中去。比如:

        zone "mydebian.org" {
                type master;
                file "/etc/bind/db.mydebian";
                allow-query { intra-net; };
        };

3.4 传送控制

使用的是allow-transfer指令,用于设定允许从主域名服务器更新资源文件的辅助域名服务器的ip地址

使用方法,如:

        allow-query{ slave;};

根据需求可以加在/etc/bind/named.conf的对应zone中去,对某个区资源做限制, 或加入到/etc/bind/named.conf.options文件中,多所有的区资源文件作限制。

4. 附录

BIND相关的一些工具介绍

dig

dig查询DNS服务器。

host

host是一个DNS查找工具。

rndc

rndc控制BIND的操作。

rndc-confgen

rndc-confgen生成rndc.conf文件

named-checkconf

named-checkconf检查named.conf文件的语法。

named-checkzone

named-checkzone检查区域文件的合法性。

lwresd

lwresd是为本地进程提供的只有缓存的名字服务器。

named

named是名字服务器守护进程。

dnssec-signzone

dnssec-signzone生成带有签名的区域文件。

dnssec-signkey

dnssec-signkey为区域文件密钥集生成签名。

dnssec-keygen

dnssec-keygen是DNS密钥生成器。

dnssec-makekeyset

dnssec-makekeyset利用dnssec-keygen生成的一个或多个密钥创建密钥集。

nsupdate

nsupdate用于提交DNS更新请求。

泡妞这事,如果干得好,就叫交友;
耍贫嘴这事,如果干得好,就叫满嘴废话;
蒙人这事,如果干得好,就叫诈骗;
摆架子这事,如果干得好,就叫气派;
恐龙这事,如果干得好,就叫轻舞飞扬;
不求上进这事,如果干得好,就叫甲A;
装傻这事,如果干得好,就叫大智若愚;
沾花惹草这事,如果干得好,就叫风流;
发呆这事,如果干得好,就叫酷;
衣冠不整这事,如果干得好,就叫不修边幅;
枷锁这事,如果干得好,就叫结婚;
包二奶这事,如果干得好,就叫潇洒;
偷懒这事,如果干得好,就叫享受生活;
迷信这事,如果干得好,就叫宗教;
奇装异服这事,如果干得好,就叫新新人类;
掐人这事,如果干得好,就叫按摩;
跑龙套这事,如果干得好,就叫友情出演;
赖皮这事,如果干得好,就叫戈尔;
不认帐这事,如果干得好,就叫日本;
骗钱这事,如果干得好,就叫.com;
挪用公款这事,如果干得好,就叫特别融资;
言而无信这事,如果干得好,就叫国家队;
性冷淡这事,如果干得好,就叫贞洁;
经济陷阱这事,如果干得好,就叫纳斯达克;
死这事,如果干得好,就叫光荣了;
搞笑这事,如果干得好,就叫幽默;
谣传这事,如果干得好,就叫炒作;
傻的冒泡这事,如果干得好,就叫酷毙了;
咳嗽这事,如果干得好,就叫著名歌唱家;
便秘这事,如果干得好,就叫沉默;
灌水这事,如果干得好,就叫酷,干不好,就被删除;
骂街这事儿,如果干得好,就叫争气,干得不好,就叫粗胚;
撒泼这事儿,如果干得好,就叫个性,干得不好,就叫草包;
发骚这事儿,如果干得好,就叫煸情,干得不好,就叫下贱;
卖弄这事儿,如果干得好,就叫热点,干得不好,就叫胸大无脑;
吃豆饼这事如果干得好,就叫猪妹;
欺负下属这件事如果干得好,就叫魄力;
减肥这件事如果干得好,就叫瘦身;
网恋这件事干得好,就叫亲密接触;
拍裸照这件事如果干得好,就叫人体艺术;
当总统这件事如果干得好,就叫丑闻;
挨饿这件事如果干得好,就叫模特;
生活糜烂这件事如果干得好,就叫宝贝;
捡垃圾这件事如果干得好,就叫猫少;
倒卖服装这事如果干得好,就叫班竹;
拍马屁这事如果干得好,就叫板斧;
"不举"这事,如果干得好,就叫柳下惠;
忘拉裤链这事,如果干得好,就叫克林顿;
罗里罗嗦这事,如果干得好,就叫唐三藏;
开疯人院这事,如果干得好,就叫无厘头之家;
扁人这事,如果干得好,就叫主持正义;
主持正义这事,如果干得好,就叫多管闲事;
多管闲事这事,如果干得好,就叫美国;
挨揍这事,如果干得好,就叫忍辱负重;
忍辱负重这事,如果干得好,就叫棍子打不出个屁;
辍学这种事,如果干得好,就叫韩寒;
伶牙俐齿这种事,如果干得好,就叫窦文涛;
骂人这事,如果干得好,就叫帮助同志;
打人这事,如果干得好,就叫扶弱济贫;
杀人这事,如果干得好,就叫为民锄害;
篡权这事,如果干得好,就叫革命成功;
回贴这事,如果干得好,就叫自我安慰
吃饭这事,如果干好了,就叫做用餐,干不好,就叫饭桶;
睡觉这事,如果干好了,就叫做就寝,干不好,就叫挺尸;
谈恋爱这事,如果干好了,就叫做诗情画意,干不好,就叫耍流氓。
最后,如果各位在,元旦过后还活着的话,就叫跨世纪人才;
如果元旦前死了的话,就叫古人。
  做HR专职招聘也有好几年了,最近感觉这个话题越来越热,从HR的角度谈些有关招聘面试的问题,也尽自己的能力给有这方面需要的朋友们些建议。

  第一个问题,面试中你的角色
  
  招聘方和应聘方始终是一对矛盾,这毫无疑问,但这两者又何尝不是合作关系呢?试想有哪个做招聘的不希望又快又准得给自己的公司找到合适的人选,又有哪个应聘者不希望能尽快通过面试获得工作机会完成自己职业生涯的又一次跃进呢?所以,作为应聘者的我们千万不要从一开始就觉得HR是站在你的对立面的,如果你站错了队伍,你的面试基本上也就结束了。因为你将竭尽所能得去回避自身存在的、你认为可能会对工作有所影响的问题,而不是将自己的能力展现出来,所以在面试中最重要的工作是表现,而不是回避(To Show not to cover!)
  
  绝大多数应聘者在面试之前会做准备,看很多面试经验,我也看(HR也不傻,当然琢磨对方会怎么对付面试,呵呵)。这些所谓面经中有一条很重要的就是要你去弥补自己的短处,其实这是一个很大的误区。举例来说,我面试的很多应届毕业生跟我大谈自己的工作经验,甚至在哪家打字复印店打过字都说得像个项目管理工程;反过来,那些大专中专毕业,工作两三年,面试始终喜欢说自己自考本科在读,夜大在上,很快就要拿到**大学**文凭……实际上,这些基本上都是无用功,想想吧,公司为什么让你来面试?如果我需要一个有工作经验的,看了你应届毕业生的简历,我要你来面试干什么?我要找个学历高的,这年头,本科生硕士生满天飞,我约你来面试那肯定是我时间多的没地方打发了!
  
  所以,面试中最重要的就是表现你的优势,而不是弥补你的弱点,因为公司用人,只用人的长处,不是找三好学生,不是样样都优秀才算人才!
  
  第二个问题,展现什么样的能力
  
  今天说在招聘面试时最需要展现什么样的能力,HR专业的说法非常复杂,什么能力模型、素质结构、职业倾向……同行之间讨论一下没问题,真拿到实际工作中,别说应聘者头晕脑涨,有时候连招人若渴的部门经理们都觉得不耐烦。
  
  1、展现你不可被培训的能力
  道理很简单,能力、素质分两种,可以培训的和难以培训的,你自己就完全可以判断。
  
  测试:英语口语、能吃苦耐劳、诚实、善良、沟通能力,了解公司产品知识,公司所在行业熟悉程度、计算机能力、财务知识、工作主动性、协调能力、分析能力……试试看,区分一下,是不是很容易?
  
  你是用人单位,你会把注意力主要放在哪儿呢?当然是不容易培训的能力!
  
  公司有培训部门,要做的事情就是针对员工有所欠缺的地方进行雕琢,所以,不要怕自己在可以培训的方面有缺点(比如对公司产品知识不了解等)。而更多的是要抓住自己所应聘职位所需要的难以被培训的能力。
  
  2、展现你不可被替代的能力
  
  作为招聘者,我每天都在做选择题,在众多应聘者之间筛选出符合甚或是超出我们期望的那一个,而我每天看到的绝大多数简历都可以说是千人一面。最典型的是毕业生,英语四级(六级)、计算机二级(三级)、成绩优良(排名3/50)、连续n年获得奖学金、参加**学生组织、在**公司做过几个月的实习工作。这样的简历要多少有多少,换句话说,只要公司想招,随时有长龙排在门口,你成功的机会微乎其微。
  
  换个角度看着问题,为什么基层员工好找,部门经理、技术专家难招呢?原因在于替代性,你越容易被替代,你的价值也就越低,这就是法则。所以无论是简历还是面试,你得把自己独特的不可替代的能力表现出来,别告诉我没有,这不可能,不然你凭什么来应聘?

  第三个问题,面试成功的要诀,你的预期=我的表现
  
  面试,英文叫做Interview,我认为含义完全不同。面试,当面进行考试,根据你的成绩客观给出评定,考出多少分是多少分,其目的是择优而用;interview翻译过来应该是面谈,会面,是一个沟通的过程,interviewer向应聘者就公司的业务状况,所能提供的职位详情进行传达,而candidates向对方介绍自己的履历、能力、经验等各方面信息,从而让对方认识自己,进而了解自己。其目的是双方的契合,不是择高分而用,而是提供一个机会,让双方都能找到最适合自己的合作伙伴。
  
  具体来说,interview之前,企业一定会对自己想招一个什么样的人来做这个职位分析,也就是HR理论中的所谓岗位分析(Job Description)。这个分析来源很广泛,由部门经理对这个职位的需求,有前任工作者给公司就这个职位留下的主观映像,甚至有客户对该职位人员的客观评价等不一而足。
  
  所以,interview的结果没有所谓优秀、一般、差,只有suit or not suit。希望大家知道企业方的面试官(我们姑且沿用面试这一通行说法吧,不然有人该埋怨我说话夹杂英文了),在面试之前是带着期望来的!什么样的期望呢?简而言之,比前任更适合!如果前任做得不好,希望招到一个更好的,如果前任做得很好跳槽了,则希望招到一个更适合(稳定)的。
  
  那么怎么才能做到让自己更适合公司的期望呢?
  
  1、研究对方的招聘广告,一般对方会在广告中写出职位的工作内容,任职要求。对比一下自己,如果对方写了大专以上学历,你是个硕士,就别去瞎起哄,耽误大家时间嘛这不是?如果对方写了三年以上工作经验,对方当然就不会想去从大学毕业生开始培养一个新手,基本条件都不合适,让你去面试,不是对方闲得实在无聊就是对方HR是个新来的菜鸟。
  2、面试中注意把握对方的心态,说俗点儿,听话听音,对方一国企,做财务,问你英语水平怎么样,就得多个心眼儿,工作用不着啊,就别天花乱坠的吹一通,没准儿你的前任就是英语好跳槽去了外企!这样上当的不能说不多,反正我常碰到。
  3、突出重点,我常碰到这样的应聘者,通常毕业一两年,会议室坐下,二话不说,从包里翻出一大堆本本,有多大桌他就能给你铺满了,英语的、会计的、贸易的、报关的、计算机的、营销的、管理的、公关的……看得我眼花,只有你想不到,没有他拿不出,介绍完了,我弱弱的问一句您应聘什么职位?答曰:“我觉得你们公司很好,外企,大品牌,心向往之不是一两年了,只要能进来,什么职位我还真不在乎!”我看他做我们总经理挺合适的……

  第四个问题、面试中HR们的心态和对策
  
  我们不妨从HR招聘者的职责描述说起,简而言之,为企业寻找合适的人才。当然有许多限制:
  
  1、时间,招聘周期按照职位高低从两周到三个月不等,平均为一个月
  2、成本,招聘过程会发生很多成本支出,只要不是糊涂到花多少钱不在乎的地步企业一定非常关心自己招人花费几何
  3、招聘效果,也是最重要的,你找来的人是否能够在公司里做得好,做得久,公司个人各得其所,双赢为赢嘛
  
  而这些限制本质上是矛盾的,又想招到最合适的人,又要快,又要省钱,压力当然巨大。所以,其实HR在看似怡然自得坐在面试桌另一边的时候,一般心里都处在这样的矛盾挣扎之中,一方面,心中期望自己对面坐的就是那个最佳人选,另一方面,又担心由于自己一时不慎,没看破对方小小的应试伎俩,被人结结实实的忽悠一把。
  
  这就是HR面试中的心态,针对这种状况的应对措施似乎我不该多谈,表现要不要好?当然要,而且在专业领域内要在众多面试者中首屈一指,但是面试经验我劝各位还是少看些比较好,你想,如果你碰到一个经验不十分丰富的HR,他所准备的问题你都有了比他还精准的答案,HR会得出什么样的结论呢?
  
  1、这人面试经验丰富,时刻准备跳槽,稳定性值得怀疑
  2、这人性格特点看不透,有待进一步观察,看看有没有更合适的人选吧
  
  所以,回到最初的地方,面试的过程是展示,而不是去掩饰,你遮盖了一些东西,HR就会认为你有更多东西没有表现出来,进而对你整个表现的可信性产生怀疑,得不偿失啊!再说句到底的话,凭借面试经验是有可能糊弄一些半路出家的HR,可是你找到了工作事情就结束了吗?做起来发现这工作不适合你怎么办?发现工作对你的要求超出或明显地与你的能力不协调怎么办呢?最终结果还是要放弃,不如在面试时真诚沟通,让HR看透你点儿其实对你有帮助!
  
  第五个问题,做一块过硬的敲门砖—-简历
  
  制作简历,这一步看似简单,其实也是有些窍门的
  
  三不写二多写一少写
  
  大家猜一下,HR简历筛选时,阅读你的简历会用多长时间呢?十分钟?那是我一共就这一份简历,五分钟?一般候选人在面试前他的简历会被这样研究。一分钟?那是这封简历写得挺逗。正确答案,不会超过三十秒!这是我的自身经验,同行们的意见可能更少!
  
  这么短的时间能阅读多大篇幅呢?注意我没说阅读多少字,最多两页A4。学校教育害死人呐,学生们的简历毫无例外的第一页是“求职信”。内容基本雷同,大体是大学生涯、母校光辉……除了校友和菜鸟,其他人是不会看的。你怎么才能让HR被你的简历吸引呢?切记,三不写二多写一少写!
  
  不写未成年经历,做简历不是写生平,公司选人不是政府选国家干部。一般我们对你小时候的事情兴趣不大,小学、中学就读学校之类,没人会看。很多人觉得好像写了也无关痛痒,其实不然,这样的经历一般都出现在简历开头部分,看了一段这个,会严重影响HR看下去的意志力,那就亏大了!
  
  与工作本身不紧密相关的工作、学习经历不写,运气好,HR视而不见,运气不好,他们就会考虑,这个人能力挺杂啊,放我这儿不能人尽其才,来了也会跑!
  
  不写自我评价和真正意义上的兴趣爱好,自己都评价完了,HR还评价什么呢?菜鸟会觉得你傲气,有经验的则不看,写了只有坏处没好处。如果你写的是与工作相关的兴趣爱好,(比如应聘采购地说喜欢逛街购物,应聘财务的说自己酷爱数钱之类,开玩笑啊,学生朋友可别当真),那没问题,如果你写的是我爱唱卡拉OK、泡吧跳舞、打球打牌,我看算了吧。
  
  直接相关的工作经历要多写,你最能吸引公司的关键能力就是这条,能不多写吗?我看得很多简历都有很好的,甚至是我公司直接竞争对手公司工作经验,但非常可惜,就一句话“从****到****在****公司任职****,证明人***”,你自己都认为你在这公司这几年的工作经验毫无亮点可说,怎么吸引别人呢?
  
  成功案例数据要多写,记住一句话,事实永远比空谈有说服力,什么样的事实呢?成功案例。其实根本不用你从头到尾地把整个案例背景、困难、压力、你的措施、执行、结果都写出来,你只要提纲携领地把事件描述一下就可以了。如果能多写出两三个成功案例,你这个人的能力还不跃然纸上?尤为重要的是数据,这是最有说服力的,比如,我要应聘一家公司的招聘经理我一定会列出数据,我多少年专职招聘经验,阅读**简历,组织过**次面试,招聘到经理级员工**,主管级**,其中**是通过**途径招到的,等等这样的数字,很快就会让你的描述可信度大幅上升。什么?你记不得了?Faint! 你不会根据自己的情况估算一下?唉
  
  参加的项目要少写,我看过不少这样的简历,作了**年销售,经验丰富,业绩优良,参加广交会,做成**项目,为企业创利几百万元……人才啊!赶紧回头看看薪资要求,RMB2500/month! 这人不是忽悠我吧,就算百分之一的奖金也有好几万呐!于是菜鸟说,骗人,扔!其实我知道,他确实是去参加了广交会,也正经八百的坐在了他们企业的摊位前面(旁边坐着项目负责人),生意谈下来了,说不定他还为了这笔生意拼了一回酒,闹了个现场直播呢!于是这也就成了他的经验,堂而皇之的写在了简历上。多大的误会!实在想写,您就提一句得了,记得说清楚了是参加!

  第六个问题,投递简历,电话初识,你的第一印象
  
  好了,现在我们有了一份合格吸引人的简历了,很多朋友开始满世界搜寻招聘信息,然后只要是符合自己专业或兴趣的二话不说就给他来一份,这样的简历投递方式有效吗?
  
  答案是否定的!投简历的过程非常容易被忽略,认为这其实是非常细小的问题。其实不然,这是整个应聘过程中你给公司的第一印象!心理学知识告诉我们,初见简历就像我们在生活中认识一个人,第一次见面留下的印象很大程度上决定着你是否愿意跟他交谈,而你投简历最直接的目的就是希望获得面试机会,你说这是不是重要?
  
  我在工作中平均每周收到几百封简历,真可谓无奇不有,说几个常见的例子吧。
  
  有不少简历居然是cc给我的!什么意思呢?我给别人投简历,应聘任家单位的职位,听说你这儿也要招人?你也看看吧,如果那家公司我谈不拢,我们可以再聊聊。还能有比这更糟糕的第一印象吗?反正我注意到很多HR都是直接click delete……就想考大学第二志愿没人要一样,找工作,一般人家也不喜欢第二志愿的!所以,一封邮件只发一封简历ok?
  
  比cc好一点儿,有很多简历一眼看过去就知道不是给我一家公司的,e-mail内容整个儿一瓶红花油,哪儿都能抹。可能大家从网上找来这样的格式一看,不错,新鲜,找工作的信是这样写的啊!用了!可是,可怜可怜我们HR吧,你看了是新鲜,我们看了都要吐了,04年的时候,我记得网上出了个挺有名的求职信,你就看吧,应聘简历里面千篇一律,使用率高达33.33%,05年毕业生流行写诗,一时之间,学生诗歌蜂拥而至,有些还真是文采颇佳,读之怡情也就算了;有些打油诗,逗个乐子,还能忍受;狗皮不通的顺口溜也来凑热闹!晕啊,这又是什么样的第一印象呢?
  
  所以你的简历不能是应聘大军里的一个小兵,没人会注意大海里的一滴水的!要针对对方的招聘信息适当修改简历再寄出去。内容方面前文写过了,毋庸赘述,e-mail里面至少写上,短短两句话,如:近日通过**渠道,了解到贵公司正在招聘**职位,窃以为本人工作经历、专业特长颇为相合,特冒昧应聘**职位云云……别看这两句话简单,立刻你就甩掉了一大批人,那些只知道重复点发送键的人,你是认真考虑了公司职位要求和自身条件才投简历的!

  另一种第一印象是电话约见,一般会由HR的人来做,内容大体上就是我们看了你的简历,认为你的基本条件是符合我们职位要求的,希望你能在某日来公司参加面试……看似简单,但其实应聘者的表现也还是有高低参差之别的。
  
  接电话的技巧,不好的印象类型有三种:前倨后恭、不知所云、太过依赖。
  
  前倨后恭,中华礼仪之邦,向来是以理为先的,可是偏偏倒了现代,似乎崇礼之风日下,表现在电话这个看不见对方的场合里尤为过分。英文接电话用hello也就是你好,跟日常朋友见面打招呼的言语一样;再看我们,居然创造性的发明了个“喂”,这其实非常不礼貌,你想,谁在路上跟别人打招呼直接喊声“喂”的啊?更有甚者,这一声“喂”的语气有多种含义表达(感谢祖先发明的四声),可以表示应答、疑问,这还说得过去,还可以表示质问、挑衅、不耐烦,这给人的第一印象就不能再坏了!有点啰嗦,实际情况是这样的
  
  “喂!”
  我:“你好,是***吗?”
  答:“是啊,你谁啊?”
  我:“我是**公司的,你是不是给我们公司投了简历?我们觉得你条件不错想请你来面试。”
  答:“噢,是的是的,不好意思,不好意思,在开会(上课,吃饭,车上,等等借口不计其数)。”
  
  那拒人千里之外的开场白实际上已经为祸不轻了,再加上你一百八十度的态度转变,你想能给对方留下什么印象呢?
  
  第二种叫做不知所云,还是用电话内容来说明
  
  “喂,你好。”
  我:“你好,是***吗?”
  答:“是啊,您哪位啊?”
  我:“我是**公司的,你是不是给我们公司投了简历?我们觉得你条件不错想请你来面试。”
  答:“**公司,我没投过简历啊?”(开始恍惚,难道我投的?)
  我:“应该不会吧,你用****e-mail邮箱发过来的。”
  答:“邮箱是我的,那应该是我投得没错,你能告诉我,我投的什么职位吗?”(眩晕,真的经常有这么问的,估计投得太多了)
  我:“你投的是**职位,可能时间有点儿长吧,你还对这个职位感兴趣吗?”
  答:“我应该有吧……”(我狂倒)
  
  最后一种情况常见于应届毕业生
  
  “喂,你好。”
  我:“你好,是***吗?”
  答:“是啊,您哪位啊?”
  我:“我是**公司的,你是不是给我们公司投了简历?我们觉得你条件不错想请你来面试。”
  答:“噢,好啊,没问题,非常感谢!呃,对了,你们公司在哪儿?”
  我:“请记下我们公司地址****”
  答:“好的,我记下了,呃,不好意思,我怎么过去?”
  “我在**地方,做什么公交车能到?”
  “你们公司那儿有什么标志物?”
  “我到你们公司说是来应聘的就行了吧?”
  
  你可能觉得问地址甚至问怎么走都无可厚非,可实际上这些信息你都是可以自己主动获取的。你给对方的感觉就是你依赖心理特别强,以后交件事情给你做你也会问:“我该找谁帮忙?他电话多少?我找不到***该怎么办?”之类的问题,与其都解答你,还不如我自己做,你的工作能力又从何处体现呢?

  第七个问题 面试在告诉你之前已经开始
  
  先说个故事,故事关于被誉为中国近代史上最后一个能成大事者的曾国藩。一日,曾文正公(曾国藩谥号,“文正”是古代中国文官最高规格的谥号,清代一共13位曾国藩是最后一个)在家读书,突然接到圣上口谕,入宫见驾!老板找!那还不赶紧穿戴整齐,有点儿像面试啊,朝服笔挺的就进宫了,被太监带着来到故宫某花园一个亭子里面。“在这儿候着”,太监说完走了。曾国藩,穿戴整齐也不敢坐着,就那么等着,时值盛夏,热啊(北京的桑拿天估计那会儿就开始了)那也得忍着不是?板等了一下午,傍晚,又来个太监,说皇上口谕,“回去吧您呐”,曾国藩一头雾水,也不能问啊,就回家了。到家越想越郁闷,吃了晚饭就去老师家串门,向师傅说起了这件事儿,问及是福是祸啊?师傅沉吟半晌最后问他:“亭子上的对联写得什么?”曾国藩说当时心里又慌又乱,左立不宁,没仔细看。师傅说:“赶紧的,去找个太监,给几百两银子,让他给你抄出来,准没错!”于是曾国藩照办,第二天上朝果然皇帝问他那亭子里的对联,寓意如何,曾国藩对答如流,当即,放外省巡抚,上双眼花翎,赏……明白了吧?敢情皇上跟这儿情景面试呢!要不说中国上下五千年历史浩瀚如海呢?
  
  看这个故事是不是跟今天的面试有点儿像?从你已进入人家的视野,面试就已经开始了,我通常会在面试之前跟应聘者聊几句,比如,做什么交通工具来啊,口音不是本地人啊,家庭情况啊,认不认识我们公司什么同事阿,怎么知道我们招聘信息的啊,等等,其实这都是面试中不太方便收集的信息,但是确实有用,所以实际上这已经是面试的一部分了,回答起来要跟面试一样谨慎!问你交通工具或家住哪里是希望了解你家离公司有多远,如果超过一小时路程,上班以后打算怎么办呢?问你家庭情况是了解你的稳定性,两地分居?父母年纪大在外地而且你是独生子女?孩子年纪小?等等都是问题(在这儿我们不谈所谓就业公平性,从心里我是非常希望职业公平的,但是社会现实不鼓励公司这么做,这不是我们能控制或改编的,有兴趣的朋友不妨另贴讨论)。具体职位还会导致一些别的问题。
  
  再说等待。等待面试的时候你都做什么呢?据我观察大多数人是干坐着,超过70%,有些人则参观,有些人读书,有些人找前台聊天,这其实也都能反映性格的。前问我说过了,性格没有优劣之分,比如做销售的如果干坐着就会被打问号,为什么不利用这时间了解些信息呢?总的来说,起来四处看看没什么坏处。

  第八个问题,招聘中的经济学问题
  
  这里集中的论题就是:你和公司应该谁求谁?这不是一场辩论,而是一个经济学问题,实质上很简单,就是最简单的供求关系模型。我们普遍认为公司应该求贤若渴,这当然正确,用我自己做例子,我做招聘经理大部分时间都是在为公司追逐人才(那些牛人),因为他们可以为公司创造很高的价值,n顾大酒店的事情也是少不了的~~~;或者我们换个说法,我是在为那些有能力为公司创造高价值的人才们服务,因为如果他到我的公司来工作,可以更好地体现自身能力,得到更高的社会价值和自我价值认同。
  
  这是一个问题的两个方面,招聘工作就是这两方面的统一体,所以招聘和应聘双方是一种包含相互斗争的合作关系,不存在谁求着谁!当然追逐一定是存在的,原因很简单,追逐的那一方将获利更多而已。这不就是销售、采购模型的最典型表现吗?所以,大家在抱怨企业不“求贤若渴”的时候,不如首先考量一下双方的供求关系,到底倾向哪一方。
  
  对于刘备和诸葛亮的关系,我们不妨用供求关系理论分析一下刘备作为人力资源的需求方(买方)和诸葛亮作为人力资源供给者(卖方)之间的关系。刘备当时寄人篱下,上无遮顶片瓦,下无立锥之地,武将关长赵云,文臣不外简孙二糜,再加上年纪不饶人,当时的刘备已经46岁了(古人的平均年龄我不敢妄段,但活到六十就算长寿是肯定的),还被人追杀的东跑西颠,不可谓不穷困潦倒;再看孔明,年方26,饱读诗书尝自比管仲乐毅,将鸿鹄之志,布衣躬耕于南阳,与其说是隐士还不如说是待价而沽、择优而侍的智者,江东一帮闲能之士(不是贤,是有闲又有能)谓之卧龙先生,并奔走相传:“卧龙凤雏,得一可安天下!”我们不谈双方合作的深层次原因(其实也是相互需要),至少双方的供求关系是明确倾向供给一方的,在这样的情景之下毫无疑问,刘备会去追逐孔明,而不是相反。试想,为什么去顾诸葛亮的是刘备而不是曹操,甚至不是与诸葛亮沾亲带故的刘表(诸葛亮的岳父是刘表的连襟)呢?很简单,他们还没穷困到要自降身价,去见那个26岁,没有工作经验,传说自学成材,连个文凭都没有的毛头小伙儿那个地步!
  
  有人会反驳,那是因为刘备这个老板特殊,他对人才始终求贤若渴。真的是这样吗?在刘备具有荆州之地以后,安天下的另一位凤雏先生庞统前来报道,他是怎么做的呢?“备鄙其颜色(嫌人家长的丑),又闻能治,遂安一县令”怎么突然人才观就转变了呢?很简单,没那么饥渴了~~~~~~
  
  所以,如果你是一牛人,能力强到鲜有竞争对手可以匹敌,出来求职?捣什么乱,好好在家待着,自然猎头会上门找你的;如果你很不幸可替代性比较强,那就得向人家刘备前辈学习了,成功?你还得先努力!

  第九个问题,细节决定成败
  
  前文已经表达了一个观点,面试不是考试而是用面谈的方式交流沟通,宾主双方进行气氛友好的亲切会见,目的是相互了解,以求共赢!可见,无论对于面试官还是应聘者交流沟通是面试中最重要的工作,那么交流沟通从什么时候开始呢?从简历开始!贯穿整个招聘过程,其间任何时候,任何事件都可能对最终结果产生致命影响!其步骤如下:制作简历、递交简历、电话约见、面试之前、面试过程、面试后问题。步步关键,条条致命,不可不察也!
  
  那么什么是求职成败的决定问题呢?有人说是实力,这当然毫无疑问,实力不济,其他免谈。我们这里讨论的是候选人的实力相当的情况,这时候什么会决定成败呢?细节!
  
  细节有多重要呢?最好的例子在战争和经济学中。
  
  经济方面,例子多得是不胜枚举。如果大家有心也有空,推荐一本书,《细节决定成败》,早前看过,印象很深的是上海地铁德国人设计的一号线和我国设计师仿制设计的二号线的细节差别决定了经济效益上一号线比二号线好很多。
  
  战争方面典型的是国人没齿难忘的中日甲午海战,我曾去过广州邓世昌故居的纪念馆,里面有甲午海战全过程描述,简而言之,中国海军是在总体力量上强于日本海军的情况下惨败,主力战舰基本下海,有经验的水兵基本丧失殆尽,实在是近代中华没落的最后一根稻草啊!具体过程我们就不多说了,就提几个细节。战备期,日本海军最高指挥官伊东亨佑参观我海军舰队的时候发现我国水兵在战舰大炮上晾晒衣服;战前北洋水师查处了与日本人有关的假冒伪劣炮弹事件;战中,北洋水师的信号兵犯了错误,舰队排错了队形(先摆了个大乌龙);还是战中,水师鱼雷兵计算错误让致命的鱼雷从人家旗舰肚子下面划过……还觉得人家侥幸吗?
  
  那么具体到我们的简历上,什么样的细节会决定成败呢?前面说过,HR初选时阅读简历的时间不会超过30秒,如果很不幸看到了你一个明显不好的细节问题,丢丢的可能性是在是非常巨大的。举例:你的简历打开word红绿杠杠满天飞;你的错别字明显;明显表述错误,比如性别不确定,2082年出生(no笑,真的有);改别人的简历没改干净;时间重叠,学习和工作期间、工作期间重叠;中英文简历不对称……

最近来子常常收到一些读者的消息,说是从网上下载的许多RMVB影片,在播放时常常会自动弹出一些广告网页窗口,甚至有一些是木马网页。有不少读者打开了网页木马而中招,因此向来子抱怨,为什么不介绍一下如何清除RMVB影片中的弹出窗口。本期文章就向读者介绍一下这方面的知识,还大家的视频文件一个清白……

一、在RMVB视频中加入网页木马

在清除RMVB视频中的网页木马时,我们先简单介绍一下如何在其中加入网页木马。

步骤一:准备网页木马

如何制作网页木马就不多说了,本栏目已经介绍得太多了,这里假设网页木马地址为“http://www.binghewu.com.cn/muma.html”。

步骤二:制作媒体信息文件

通过向RMVB影片中添加剪辑信息,可在视频播放时打开指定的木马网页。用记事本新建一个文本文件“muma.txt”,文件内容为:“u 00:01:00 00:01:00 http://www.binghewu.com.cn/muma.html”,表示视频播放到1分钟时就自动打开指定的网页木马页面。

步骤三:将网页木马加入RMVB视频
 
下载安装“HelixProducerPlus9”程序,打开一个命令提示符窗口,执行如下命令即可将网页木马加入指定的RM视频中(如图1):
“"C:Program FilesRealHelix Producer PlusRealMediaEditorrmevents.exe"  -i  c:龙虎门.rmvb -e xinxi.txt -o C:龙虎门2.rmvb”


图1

二、清除视频中的木马

要防范上面这类夹带了网页木马的RMVB文件,在播放前,只要去掉视频剪辑信息中的网页资料就可以解决问题了,方法很简单。

1.利用Helix Producer Plus去除网页木马

如果电脑中安装有软件“Helix Producer Plus”,可利用该软件来清除视频中夹带木马的剪辑信息。

首先用记事本建立一个名为“1.txt”的空白文本文件,然后在命令提示符窗口中执行如下命令:
“"C:Program FilesRealHelix Producer PlusRealMediaEditorrmevents.exe" -i C:龙虎门.rm -e 1.txt -o C:龙虎门2.rmvb”

命令执行后,就可以将原有RM视频中的剪辑信息覆盖,也就间接的清除了木马。

2.自动过滤木马——Real媒体过滤器

“realfilter.exe”(Real媒体过滤器)是一个解决RMVB视频网页木马问题的小工具,无需安装Helix Producer Plus,使用非常的方便。运行程序后,点击“源文件”按钮,指定要清除网页木马的RMVB视频文件;然后在“另存为”中指定保存路径,最后点击“开始过滤”按钮,即可开始清除Real视频中的各种网页木马和广告信息了(如图2)。


图2

如果设置了“显示过滤进度”项,那么可以看到“realfilter.exe”实际上是调用了Helix Producer Plus的“rmevents.exe”插件程序进行过滤清除的,在弹出的命令窗口中可以看到清除过滤进度(如图3)。清除完毕后,弹出完成提示对话框,并显示清除了视频中的多少信息及文件减小的体积,现在得到的就是一个去掉木马网页或广告的干净视频了(如图4)。


图3


图4

下载地址:Real媒体过滤器 http://download.zol.com.cn/detail/10/99912.shtml

  Linux作为一个免费的Unix类操作系统,以其开放性源代码、多任务、X-window等特点为众多的用户所采用,并有很多企业采用Linux来作为其内部网的全功能服务器(WWW,FTP,Email、DNS)。企业的内部网不仅要提供文本信息的访问,还要能提供对企业关系数据库中的信息的访问。SQLServer以其低成本、性能高以及与NT的有效集成等特性为许多企业所采用,但Microsoft不提供其Unix下的客户端,为这类应用带来了困难。本文则提出了这一问题的解决方案。
  
  安装Sybase客户端

  首先从Microsoft SQLServer和Sybase SQLServer的关系说起。两公司曾共同开发OS/2上的数据库SQLServerforOS/2,此后两公司又独立开发升级系统,Sybase的客户端可以访问MicrosoftSQLServer。

  和其他数据库公司相比,可以说Sybase公司对Linux是最有善意的,它虽不提供Linux下的SQLServer,但提供了免费的CT-LIB的客户端,这也可能是许多IT管理人员在为公司数据库选型时不再考虑Oracle或Informix的理由之一。当然现在情况有所改变。

  Sybase公司发布的OpenClientforLinux是a.out格式的,在互联网上有人将其转化为ELF和动态链接的ELF格式,可从下列地址上寻找下载:http://www.mbay.net/~mpeppler。最好同时下载两个版本,正常使用时采用动态链接的版本,但有的程序在编译时可能需要一个库(libblk.a),只在ELF里面包含。

  下载以后,键入如下命令展开(假设当前目录是/usr/tmp):

  tar zxvf linuxelfdynamic.tar.gz

  然后将其移至/usr/local目录:

  mvsybase/usr/local

  编译和使用Sybase客户端需要进行如下的设置:

  1.Interface文件举例如下:

  MSSQL

  querytcpethermysql1433

  其中:

  MSSQL是客户端使用的服务器名,以后引用MSSQL即可;

  mysql是服务器的地址或名字,如果是名字,则系统能够查到其IP地址;

  1433是SQLServer的端口号,MicrosoftSQLServer的缺省值是1433,Sybase是5000。

  2.SYBASE环境变量,内容是Sybase客户端所在的目录:

  ExportSYBASE=/usr/local/sybase

  3.如果编译Sybase客户端中的例子,则还要设置环境变量SYBPLATFORM:

  exportSYBPLATFORM=Linux

  并且修改其头文件中关于服务器名称及用户名和口令的描述。

  使用SQSH界面访问SQLServer

  Sybase客户端提供了xisql工具,但更多的人使用的是SQSH,SQSH是SQshell的缩写,是改进了的isql,可从下列地址下载:http://www.voicenet.com/~gray/。当前的最新版本是1.6.0。假设下载后的文件放在/usr/tmp目录下:

  tar zxvf sqsq1.6.0.tar.gz

  cdsqsh1.6.0

  . /configure

  make;makeinstall

  然后,将生成的可执行文件sqsh安装到/usr/local/bin/目录下。

  Sqsh的使用如下:

  #sqsh--Uusername--Ppassword--Sservername

  其中username和password是用户名和口令,servername是在interface文件中定义的服务器名(如例子中的MSSQL)。

  Sqsh是交互式的命令行界面,命令用输入go来执行,命令如果较长可直接分成几行书写,以回车换行即可。

  如下是一个例子:

  1>usepubs

  2>go

  1>select*fromauthors

  2>go采用CT-LIB编写应用程序

  由于Sybase的Linux客户端不提供DB-Library,所以应采用CT-Library来编写应用程序,采用CT-Library编写应用程序可参考例子,详细的编程说明可以参考Sybase的说明。利用Sybperl编写应用程序

  Sybperl是Sybase的Perl扩展,可利用Perl语言来访问SQLServer,或者编写CGI程序。

  Sybperl可从下列地址取得http://www.mbay.net/~mpeppler。当前的最新版本是2.9.5。

  取得Sybperl的源代码展开以后,需要修改一下CONFIG文件,以下是几个参数:

  下一个要修改的文件是PWD,这是用来进行测试的,将其中的服务器名、用户名、用户口令设置成自己的配置即可。然后进行编译:

  perlMakefile.PL

  make;maketest;makeinstall

  安装成功以后,即可使用Sybperl进行编程。下面是一个简单的例子。

  #!/usr/bin/perl
    useSybase::CTlib;
    $dbh=newSybase::CTlib’sa’,’,’MSSQL’;
    $dbh->ct_execute("selectau_id,au_lname,
  au_fnamefrompubs.dbo.authors");
    while($dbh->ct_results($restype)==CS_SUCCEED){
    nextunless$dbh->ct_fetchable($restype);
  while(($au_id,$au_lname,$au_fname)=$dbh->ct_fetch){
    print"$au_id-$au_lnameau_fname";
    }
    }

  可以看出,短短几行语句,就可以完成对数据库的操作。

  以上从几个方面对在Linux下访问MSSQLServer数据库进行了说明,介绍了基本的API编程、SQSH命令行访问、Perl访问。其实,在Linux下还可采用其他方式进行访问,如采用第四级的JDBC进行访问,这时除了Java和JDBC外,并不需要其他软件。

  Linux作为一个免费的Unix类操作系统,以其开放性源代码、多任务、X-window等特点为众多的用户所采用,并有很多企业采用Linux来作为其内部网的全功能服务器(WWW,FTP,Email、DNS)。企业的内部网不仅要提供文本信息的访问,还要能提供对企业关系数据库中的信息的访问。SQLServer以其低成本、性能高以及与NT的有效集成等特性为许多企业所采用,但Microsoft不提供其Unix下的客户端,为这类应用带来了困难。本文则提出了这一问题的解决方案。