小枫客栈

淡泊以明志,宁静以致远!

« Linux实践工程师学习笔记(一)window 必须掌握的八个DOS命令 »

Linux实践工程师学习笔记(二)

Linux实践工程师学习笔记十四:网络安全

 

防火墙的作用:过虑两个网络之间的数据包
Linux内核的Netfilter
<!--[if !vml]--><!--[endif]-->

 

 


 

进出数据包,以及发送到本机的数据包都要经过内核的处理
INPUT链用来过滤进入本机的数据包
OUTPUT链用来过滤从本机发送出去的数据包
FORWARD链用来过滤从本机路由出去的数据包
一个数据包的头部包括源地址、源端口、目的地址、目的端口、协议类型
包过滤正是根据这些特征来过滤数据包
Linux 下通过在三个链中设置规则来过滤
包的处理方式
#iptables -A INPUT -p icmp -j DROP   将进入本机,协议类型为icmp的数据包丢弃。
       -A    添加规则
       INPUT 对INPUT链进行操作
       -p    协议类型
       -j     指定动作,可以是ACCEPT(接收),LOG(日志),REJECT(弹回)
#iptables -L -n        显示三条链的过滤规则
       -L    显示所有链的所有规则
       -n    以数字形式显示
#iptables -F     清空所有链的所有规则
每个包进入本机时都被INPUT链检查
出去时经过OUTPUT链检查
转发时经过FORWARD检查
TCP/IP是双向通信的,所以添加规则时必须注意使INPUT链和OUTPUT链的规则对应。

       -D   rulenum   删除第几条规则
       -I     rulenum   在第几条前插入规则
       -P    修改链的默认策略,如默认状态ACCEPT,默认情况下数据包的处理方式
       -s    源地址 -m     匹配扩展条件
       -d    目的地址       -t     维护的表,默认为filter,另外还有一个nat表
       --line-numbers              规则中显示编号
#iptables -L -n --line-numbers       这样方便删除指定行编号的规则或在指定编号前插入

拒绝所有连接到本机21端口的所有连接
#iptables -A INPUT -P tcp -d 192.168.0.22 --dport 22 -j DROP
       --dport    目的端口
       --sport    源端口

在实际使用过程中服务器还不够严密,还存在被利用的弱点。如22端口,为防止没有请求过的包,在本机主动发送出去,需要检查包的状态。看包是否是人家请求过我,而我回应别人的。Linux的防火墙支持状态匹配检查。
#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
       -m   匹配状态,上面表示跟本机连接过的包才能从22端口出去
如果正在使用ssh远程管理服务器,不要将第一条的22端口规则删掉,等添加完上面这条规则,才能把存在弱点的第一条删除,否则远程管理会立刻断掉。

80端口也同样设置
#iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
防止服务器在80端口主动发送请求,防止病毒利用。添加完后,删除OUTPUT中以前添加的那条80端口规则。

假设自己是ssh客户机,访问别人的ssh服务器,先经过OUTPUT链出去
#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
当包回就,从对方22端口,如果对方有病毒,可能会使用22端口发送请求,所以只接受已建立连接的数据包。
#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#service iptables save     保存劳动成果
现在防火墙算配好了,不仅非常严密,还非常有效,有效防止别人攻击你的服务器的各种服务,可防止主动型的病毒或木马攻击。

LOG目标
过滤包的检查机制,可以指定某种要求的包写入日志中。
#iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix “IPTABLES:”
       -j LOG    记录日志
       --log-level 5    写入日志时需指定级别,与日志服务器配合使用
       --log-prefix “IPTABLES:”      指定写入日志时,记录的前缀字符,主要方便用户分析日志。
添加LOG目标规则时,保证规则前同样的包没有被丢弃或接受,即要注意添加规则的次序。
编缉日志配置文件/etc/syslog.conf 添加:
kern.=notice          /var/log/firewall.log
(消息来源内核kern,级别notice),将内核这个级别消息,记录到firewall.log文件中,等号表示刚好等于这个级别的消息。为什么是notice?因为我们曾经用man syslog知道消息的默认级别notice为5,与LOG目标一致。
注意:日志级别5要跟syslog.conf中的级别一致,级别可通过syslog的manual帮助获得。
#service syslog restart
#tail /var/log/firewall.log
注意将前面在/etc/syslog.conf文件添加过的
*.*          @192.168.0.22
那行删除,还要将/etc/sysconfig/syslog文件中,那行还原为:
SYSLOGD_OPTIONS=”-m 0”
不管哪个服务,修改过配置文件,要立刻生效,必须重启服务。
这样会将进入本机22端口的包记录在firewall.log文件,当使用ssh持续登录使用时,由于不停记录包信息,firewall.log文件会持续增大!

实际配置防火墙时,首先将所有门都关闭,如将三条链的默认策略都改为DROP,再根据服务器需要一个端口一个端口地打开。首先需要分析这台服务器是干什么用的,假设只是一台提供http服务的Web服务器。
首先把服务器所有端口关闭,为了方便远程管理开一个22的端口,端口可以在/etc/services文件中查看。添加规则时分析一下数据包的格式,再确定规则参数。
#iptables -A INPUT -p tcp -d 192.168.0.22 --dport 22 -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.0.22 --sport 22 -j ACCEPT
注意通信的双向性,在INPUT添加一条规则,一般要在OUTPUT添加一条与之对应,所谓有出必有入。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -p FORWARD DROP
上面首先打开22端口,防止正在使用的远程管理断掉,再改变三条链的默认策略。
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
打开一个80端口,本机地址可省略
#service iptables save     保存劳动成果(保存规则)
将刚才添加的规则保存到/etc/sysconfig/iptables文件
或使用#iptables-save > /etc/sysconfig/iptables
系统启动时会加载这个文件中的规则。
现在服务器挡住所有服务,只开了两个端口80,22,对一台网络服务器来说,绝不能缺少DNS服务,任何联网的主机都需要做DNS请求,目前这台服务器还无法发送DNS请求。增加一条DNS通道,首先作为一台客户机出现:
#iptables -A OUTPUT -p udp --dpott 53 -j ACCEPT   首先经过OUTPUT链
#iptables -A INPUT -p udp --sport 53 -j ACCEPT      请求后得到回复数据雹,允许进入
测试#host fedora.cyrich.com
如出现无法解析,或很慢,则#more /etc/resolv.conf查看域名解析配置文件,看是否本机为DNS服务器,如果是还需添加一条规则,在规则时,应该分析这个数据包如何进出哪条链,以及这人数据包的格式,如上面#host fedora.cyrich.com因为本身作为DNS服务器,所以会发送一个包到自己,
192.168.0.22:*――>102.168.0.22:53   (允许)
但当时入INPUT链时,没有一条跟它匹配,所以会拒绝。所以如果同时作为DNS服务器和客户机,还需添加下面规则:
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
#iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
当同时作为某种服务的服务端和客户端时,需在规则中添加两条规则,即源端口和目标端口。
当前的规则设置忽略了本机的内部服务,在本机上有很多端口守护在127.0.0.1上,当本机的客户端访问回环设备时会拒绝。
127.0.0.1上的服务如不打开,会影响本机内部服务的正常运行,打开了也不会造成服务器什么危害,所以还是最好打开:
#iptables -A INPUT -s 127.0.0.1 -j ACCEPT
#iptables -A INPUT -d 127.0.0.1 -j ACCEPT
#service iptables save     (保存劳动成果)

经过FORWARD链的数据包不是发送给本机,而是发送给别人的,当作为路由器使用时才需配置FORWARD链。现配置一台路由器,如允许局域网用户浏览网页配置方法与INPUT.OUTPUT一样。
#iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT     允许局域网发送数据包
#iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT     允许局域网接收数据包
这样相当于把局域网和互联网打通了,任何包都可通过,在实际使用中可以加上端口,做些限制,过滤某些数据包,也可以使用LOG目标加进日志。其实光打开FORWARD链还不行,还需要打开内核的转发文件。
#echo 1 >/proc/sys/net/ipv4/ip_forward              (默认为0)
0表示关闭转发,1为启用,要永久启用,可修改配置文件/etc/sysctl.conf:
net.ipv4.ip_forward =1
如需访问互联网,这样的配置还不行,因为私有地址是无法直接访问互联网的,这里我们做NAT网络地址转换,这时网需两个地址,一个局域网的,一个互联网的,当收到访问互联网的包时,将源地址替换为互联网地址。
#iptables -t nat -L -n      查看nat表内容

Netfilter的NAT表:
三条链用来做包过滤
用来翻译地址的也有三条链,常用的有PREROUTING,POSTROUTING


SNAT(源地址翻译)
 

数据包进入内核前,首先进入PREROUTING这个点,然后进入内核进行处理,就是ROUTING那个点,如果数据包不是发送给本机,而内核启用了转发功能,则内核将把数据包从FORWARD,再到POSTROUTING。如果FORWARD允许数据包通过,这个包可以在POSTROUTING这个点上做源地址替换,而且只能在这个点上做,这是内核的一种机制,所以数据包的源地址是在经过POSTROUTING这个点后改变的。

DNAT(目标地址翻译)
数据包进入时,首先进入PREROUTING。然后内核ROUTING会根据包的目标地址决定是从INPUT链走还是FORWARD链走。所以数据包的目标地址非常重要。在PREROUTING上可以做目标地址替换。

SNAT应用

 

 

网关有两块网卡分别连接两台主机或两个网络。
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.0.254
将源地址为10.0.0.0/24的包的源地址替换为192.168.0.254,如果这是一台ADSL拨号网关,可以将整个局域网带进互联网
#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
有人会想数据包怎么回来?其实将数据包翻译成192.168.0.254源地址时,192.168.0.1回应一个数据包到服务器会被服务器认出来,那服务器会自动将翻译地址还原,然后退还给10.0.0.241。所以做网关时,只要加SNAT,然后配合前面的过滤规则就可配一个安全且强大的防火墙,同时具有路由器的功能。


DNAT应用
 

DNAT应用一般用来做DMZ,保护局域网内部
如192.168.0.1作为一台Web服务器,主机10.0.0.241访问10.0.0.254网关,网关将请求发送到192.168.0.1,这样就起到保护Web服务器的作用
#iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1
将访问网关80端口的数据包目标地址翻译或192.168.0.1,这样本来发送给本机的数据包就会从FORWARD链转发出去。

Web服务器在内部,它收到请求后回应数据包给网关,然后返回到10.0.0.241。这样就把内部主机保护起来,外面的人只能看见那台网关服务器,所以NAT应用非常广,而且非常强大,更多帮助和介绍可参考www.netfilter.org

为软件打补丁,首先用gpg导入公钥文件,再校验patch文件的正确性。
#bzcat 9.3.0-patch | patch -p0
一般需查文件里面的目录,然后再将软件目录改名。
 

Linux实践工程师学习笔记十五:DNS服务器

 
安装BIND
1.去http://www.isc.org下载最新版本,如bind-9.3.2.tar.gz
2.编译安装
#tar zxvf bind-9.3.2.tar.gz
#cd bind-9.3.2
#./configure --sysconfdir=/etc             配置文件放在/etc
#make
#make install
rpm包安装,程序放在/usr/sbin目录下,默认编译安装程序放在/usr/local目录下,编译安装需手工创建主配置文件
#vi /etc/named.conf
编译时,注意大括号前后需有空格,光盘有一个叫caching-nameserver的软件包,装完后会自动复制一份默认的一些配置文件。这里我们都是手工创建
option {
              directory “/var/named”;         指定服务器工作目录
};
zone “.” {                                          根区,服务器必须知道如何查找根,因为这里没有根服务器的数据库。                  type hint;                             所以定义为hint,链接到根的数据库,并指定链拉文件
              file “name.ca”;
};

#mkdir /var/named
named.ca用来保存根域服务器的地址,但现在不知道根域服务器地址到底是多少。下面演示如何查找根服务器地址产生named.ca文件:
首先我们找一个可用的DNS IP,利用此DNS查找根地址。
#echo “nameserver 192.58.128.30” > /etc/resolv.conf
#dig -t NS .           (dig是一个挖掘DNS记录的工具)
       -t 指定类型为NS,即查找根DNS记录,查找后的结果:左边是根的域,右边是根服务器的主机名
#dig -t NS . > /var/named/named.ca
有了根服务器后,这台DNS服务器就可启动了。

用RNDC控制服务器
1.产生rndc控制文件
#rndc-confgen >/etc/rndc.conf
#tail +13 /etc/rndc.conf >>/etc/named.conf
将配置文件13行起到结尾的内容追加到named.conf
2.启动named服务器,监视/var/log/messages
#named
#tail /var/log/messages
如有错误,根据提示解决,例如RPM包安装可能会提示无法打开/var/run/named/named.pid
可以用root用户删除/var/run/named目录,再重建一个。
3.测试rndc和解析效果
#rndc status
#echo “nameserver 127.0.0.1” > /etc/resolv.conf
#host www.chinaunix.com
第一次解析主机后将信息存入缓存,以后再解析时就很快,只要有了根区就可以查到整个互联网。

host,dig都是通过DNS查询,对于一台服务器来说,我们自己的应用环境总有一台叫localhost的主机,默认情况下localhost的主机总是在hosts文件定义,为取代hosts文件,需要把localhost加进DNS服务器,任何一台有网络的主机都 会有一个回环设备地址,回环设备地址没有相应的主机名,很多服务都 会起不来。
添加localhost域
#vi /etc/named.conf 添加
zone “localhost” {                              区名叫localhost
                     type master;                  表示这是主域服务器,数据库是自己维护的,不需要其他人管理
                     file “named.local”;         数据库文件(区文件)位置
};
编缉/var/named/named.local
@ 1D IN SOA            localhost. root (
                                          2006081201编号更新一次自己加1,当发生改变时,会通知其他域名服务器更新数据库
                                          1H                 多少时间刷新其他DNS的数据库记录
                                          15M               主向从DNS服务器发送信息出现错误,会隔15分钟再重试
                                          1W                如果重试还有错,一星期后过期
                                          1D )               缓存保存时间,默认为1天
              IN   NS          @                         指定这个域的DNS服务器
              IN   A            127.0.0.1               指定DNS服务器的IP地址

在这个文件里必须指定这个文件所服务的域的范围,到底为哪个域服务,第一个字段,一般是域名或主机名,@表示当前的域名,就是前面zone后面的那句”localhost”,localhost将作为一个变量传递给named.local文件
第二个字段,表示域类型,IN为互联网类型
第三个字段,记录类型,任何区文件里都有一条SOA记录。还有其他记录类型,如NS域名服务器,A地址,接着后面是当前域的域名和管理者信息,管理者信息是一个邮箱地址,上面使用了缩写,全写应该是root.localhost.
注意不能用@,因为前面说过了,这是表示当前域名,并且最后是以点结束。
小括号前后要有空格,小括号包括的是整个域的管理信息。
localhost. IN NS localhost.           表示localhost. 域的DNS服务器为localhost
localhost. IN A 127.0.0.1              表示localhost主机IP地址为127.0.0.1
主机名,域名要以点结尾,表示结束。相同记录可省略某个字段

增加一个正向区
/etc/named.conf 添加
zone “chinaitlab.com” {
                     type master;
                     file “chinaitlab.com.zone”;
};

/var/named/chinaitlab.com.zone:
@    1D   IN   SOA       chinaitlab.com.       root (
                            2006081201
                            1H
                            15M
                            1W
                            1D )
              IN   NS   ns
              IN   MX 10 mail
ns           IN   A     192.168.0.22
www      IN   A     10.0.0.1
news       IN   CNAME  www

FQDN:完整的域名
A表示地址记录
SOA后跟当前域名,如果全写用点号结束,缩写则不用
root默认跟当前域名后缀,上面的root全写应为root.chinaitlab.com.
NS后必须跟主机名,不能跟IP地址
MX邮件交换机,指出当前域的邮件服务器
10为优先级
当指定了NS,MX记录,必须为他们指定一个IP地址
news是www的别名
#rndc reload   重新加载配置文件named.conf
#dig chinaitlab.com        测试,查询chinaitlab.com这个域的信息
#host www.chinaitlab.com    查询www.chinaitlab.com主机的IP(默认查询的是A记录)

有时候NS记录会这样写
….          IN   NS   @
              IN   A     192.168.0.22
前面省略的表示当前的域名,后面@表示当前域,这台主机虽然前后都可以用@,但@在NS表示的意思是主机而不是域。
#host -t NS chinaitlab.com
查询chinaitlab.com的DNS服务器是谁
#host -t A chinaitlab.com
查询chinaitlab.com这个域的A记录,即这个域的DNS服务器的IP
       -t 表示记录类型,可以跟SOA,NS,A等
dig   查询比较详细,host查询信息比较简洁。
为了可以使用缩写的主机名,可以
#echo “search chinaitlab.com” >>/etc/resolv.conf
这样#host www时,会自动在www后面补全要搜索的域名,相当于#host www.chinaitlab.com
小括号里的管理信息主要应用在主域服务器和辅助服务器之间。
可以在第一行加上一个全局变量$TTL 1D 表示生存周期,这样关于生存周期的字段就可省略。
(正向)一个区文件必须有一条SOA记录,NS记录和这条NS记录对应指出NS IP地址的记录
(反向)一个反向文件,必须有一条SOA,一条NS,一条PTR记录

127.0.0的反向区
反向区的区名由其IP反过来写加上.in-addr.arpa后缀,如127.0.0的反向区名:0.0.127.in-addr.arpa
vi /etc/named.conf 追加
zone “0.0.127.in-addr.arpa” {
                     type master;
                     file   “127.0.0.zone”;
};
编缉/var/named/127.0.0.zone:
$TTL 1D
@    IN   SOA       @    root.localhost. (
                            2006081201
                            1H
                            15M
                            1W
                            1D )
       IN   NS   localhost.
1     IN   PTR localhost.
在这个反向区文件里@表示0.0.127.in-addr.arpa区名,所以root不能简写,SOA后跟当前的服务范围,@表示服务范围是当前区,最后一条表示把127.0.0.1指向localhost.。1是简写,它表示1.0.0.127.in-addr.arpa

如果是rpm包安装可以使用
#service named restart          重启服务器
#service named reload           重新加载配置文件
但编译安装只能使用rndc
#rndc reload
测试
#host 127.0.0.1      查询地址指向的名称
#dig -x 127.0.0.1

技巧:如在putty中运行vi,在vi里无法使用小键盘,设置putty的TeminalàFeatures,打勾Disable application keypad mode
vi中删除行首字符
:.,$-1s/^#\ //
.当前行   s 替换    // 删除
,到          ^# 行首#
$-1 倒数第二行    \     转义空格字符

增加一个真实的反向区
反向区为192.168.0
/etc/named.conf
zone “0.168.192.in-addr.arpa” {
                            type master;
                            file “192.168.0.zone”;
};
/var/named/192.168.0.zone:
@    IN   SOA       chinaitlab.com        root.chinaitlab.com.       (
                                          2006091201
                                          36000
                                          7200
                                          3600000
                                          86400 )
       IN   NS          chinaitlab.com.
1     IN   PTR        www.chinaitlab.com.
2     IN   PTR        ftp.chinaitlab.com.
3.0.168.192.in-addr.arpa.      IN   PTR        mail.chinaitlab.com.

NS记录指出当前区的DNS服务器,DNS必须能找到,必须有NS的正向解析,由于前面曾在chinaitlab.com域中解析了chinaitlab.com,所以这里的名为chinaitlab.com的DNS主机是能找到的。如果前面解析了ns.chinaitlab.com为DNS服务器,则这里就应该改成ns.chinaitlab.com.
能不能缩写一定要区分,在反向区文件中,主机名是不能缩写的,但地址可以。只要弄清@字符所代表的含义就行,它就是缩写了的内容。

测试:
#rndc reload
#host 192.168.0.2

技巧:
#history          显示历史记录(执行过的命令)
#history 20     显示最近20条操作记录
#history -c      清空历史记录
vi中查找“-c”字符,使用“:/\-c             /代表查找      \代表转义

子域授权
主服务器的/etc/named/chinaitlab.com.zone
domain    IN   NS   ns.domain
ns.domain       IN   A     192.168.0.2
在父域chinaitlab.com的区文件中,指定子域domain的DNS服务器为ns.domain,并添加A记录。当查询domain.chinaitlab.com域的主机时,将会通过ns.domain.chinaitlab.com这台子域服务器来查询,但无法子域服务中查找父域中的主机,说明父域和子域之间是单向的。
当使用#host ns.domina.chinaitlab.com查询时,仍无法查询成功,虽然区文件中定义了ns.domain的A记录,但我们查询的是domain子域的主机,它将去192.168.0.2的子域服务器中查找主机记录,但现在子域服务器还没有配置。
上面的ns.domain也可改成:
domain    IN   NS   domain
domain    IN   A     192.168.0.2
用父域的domain主机名指向domain子域,不管子域DNS主机名怎 么改,只要能指向子域的DNS服务器就行。

登录子域服务器192.168.0.2
按照以前的设置编译安装或rpm安装,然后
#named -u named          启动
在/etc/named.conf添加
zone “domain.chinaitlab.com” {
                            type master;
                            file “domain.chinaitlab.com.zone”;
};
编缉/var/named/domain.chinaitlab.com.zone
$TTL 1D
@    IN   SOA       @    root (
                     2006091201
                     1H
                     15M
                     1W
                     1D )
       IN   NS   ns.
ns    IN   A     192.168.0.2
www      IN   A     192.168.0.3

#rndc reload
#echo “nameserver 127.0.0.1” > /etc/resolv.conf
#host ns.domain.chinaitlab.com
#host www.domain.chinaitlab.com

现在如果resolv.conf文件的nameserver是子域的192.168.0.2,那么只能解析到子域的主机,不能找到父域的主机。但是如果nameserver是主域的DNS192.168.0.22,可以查询到父域和子域中的主机,所以我们使用时,客户机只要将DNS指向主的DNS服务器,这里也就是那台192.168.0.22,这样就可以解析到整个域中的主机。

辅助域名服务器
辅助域名服务器的作用就是备份主域服务器的数据,当主服务器崩溃或暂时离线时,可代替主服务器来工作,一般机可以设置两个DNS服务器,一个主的,一个备份的。
首先要保证主服务器能正常工作,这样辅助服务器才能同步主服务器的数据。我们主要是在辅助域名服务器上做配置。
登录辅助服务器192.168.0.2
主配置文件/etc/named.conf添加
zone “chinaitlab.com” {
                     type  slave;
                     file “chinaitlab.com.zone”;
                     masters { 192.168.0.22; };
};
辅助域名配置很简单,只需在主配置文件增加一个区即可,也不用配置区文件,它由服务器同步自动产生。
slave表示辅助服务器
chinaitlab.com.zone不用创建会自动产生。
等同步完以后,我们可以看看它的内容,应该和主服务器的区文件是一致的。masters指定主域服务器,注意其中的格式,大括号前后的空格,分号。
#rndc reload
#tail /var/log/messages          发现同步时出现错误,这是由于/var/named目录权限不允许named用户写,而named服务是由named用户启动的,所以我们要修改一下/var/named目录权限
#ls -ld /var/named/
       -d表示目录信息
#chmod g+w /var/named
rndc reload
测试,在辅助服务器中,nameserver是自己。
#host www.chinaitlab.com           成功解析
主从服务器的同步和更新主要是通过区文件中的SOA记录来实现 的。以前面为例,第一次同步,从主服务器下载数据库文件(区文件),每隔1小时更新管理信息,如发现编号发生变化,则同步数据库文件,同步时向主服务器发送请求失败,每隔15分钟重试,当重试了1周后仍无法成功,则过期不再送请求,缓存保存时间为1天。

以普通用户身份执行
首先修改named.conf,设置pid.file选项值
option {
       ….
       pid-file “/var/run/named/named.pid”;
};
#useradd -s /bin/false -d /dev/null named      (不允许登录,没有home目录)
#mkdir /var/run/named
#chown named.named /var/run/named
#chmod 700 /var/run/named
#named -u named
#echo “/usr/local/sbin/named -u named” >>/etc/rc.local
根据需要修改/var/named目录的属性。使用named用户运行,确保服务器的安全性,防止服务器受到攻击后得到root权限。
#ps aux | grep named
       aux  打印进程的用户身份
如果是rpm安装,则
#echo “/usr/sbin/named -u named” >>/etc/rc.local
如果是rpm安装,创建用户、目录、目录权限等已经自动完成了。如果是辅助服务器,同步时需要写/var/named,但named用户是无权写入的,所以应该修改/var/named目录权限,允许named组写。

常用配置选项
options {
       directory “/var/named”;                默认工作目录,数据库文件存放的位置
       forwarders { 192.168.2.1; };        当服务器无法解析请求时,转发给192.168.2.1来解析,再无法解析就请求根
       allow-transfer { 192.168.1.1; };    允许哪台服务器同步数据库文件,一般来用控制辅助服务器,这里为全局设置
       allow-query { 192.168.0/24; };     允许某台主机或某个网段访问这台DNS服务器
};
zone “chinaitlab.com” {                     
       type master;
       file “chinaitlab.com.zone”;
       allow-transfer { 192.168.1.1; };
};

1.编缉/etc/named.conf
       设置options选项
       一个根区
       自己需要解析的区
       及相应的反向区
2.rndc-confgen产生rndc.conf
       并把最后几行追加到named.conf
3.根区数据库文件,可使用dig工具产生,其它区文件手工编辑。


 
Linux实践工程师学习笔记十六:DHCP服务器

rpm包在第4张光盘dhcp-3.0.3-26.i386.rpm
编译安装方法
#tar zxvf dhcp-latest.tar.gz
#cd dhcp-3.0.3
#./configure
#make
#make install
#vi /etc/dhcpd.conf
#touch /var/state/dhcp/dhcpd.leases     rpm安装不用touch,文件默认安装在/var/lib/dhcpd/dhcpd.leases
#dhcpd

主要配置选项
1.默认网关
2.IP地址
3.子网掩码
4.DNS服务器地址
5.租用时间
/etc/dhcpd.conf:
ddns-update-style none;               必须有的一句
subnet 192,168.0.0 netmask 255.255.255.0 {                    指定服务范围
       option     routers    192.168.0.22
       option     subnet-mask   255.255.255.0
       option     domain-name  “chinaitlab.com”;
       option     domain-name-servers     192.168.0.22;
       range      192.168.0.128 192.168.0.254;
       default-lease-time   21600;    6小时
       max-lease-time       43200;    12小时
       host mail {                                                       根据网卡地址分配一个固定的IP
                     hardware Ethernet 12:34:56:78:ab:cd;
                     fixed-address  192.168.0.5;
       }
}

服务器默认UDP67端口。

Linux客户机的配置
修改/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
或使用netconfig配置动态地址,然后运行#service network restart
设定1分钟后执行指定操作:
#at now+1minutes
at>   service network restart
ctrl+D结束
调试服务器:
#tail /var/log/messages   查看日志信息
#more /var/lib/dhcpd/dhcpd.leases        查看IP分配情况
调试客户机:
Under unix:
#dhclient eth0        DHCP客户端工具,刷新网卡eh0,发送一个广播,重新请求一个IP
Under windows:
C:\>ipconfig /renew

应用案例
要求:
配置一台DHCP服务器,为100台主机分配地址,使用192.168.0.0/24网段,静态主机地址如下:
默认网关:192.168.0.254
DNS服务器:192.168.0.1
邮件服务器:192.168.0.2
DHCP服务器:192.168.0.254
解决方法:
option routers 192.168.0.254;
option domain-name-server 192.168.0.1;
range 192.168.0.3 192.168.0.102;
host ns {
       hardware Ethernet 12:24:34:34:as:de;
       fixed-address 192.168.0.1;
}
host mail {
       hardware Ethernet 12:34:56:78:ab:cd;
       fixed-address 192.168.0.2;
}

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright © 2006 - 2010 Xiaofeng. All Rights Reserved.
豫ICP备07012919号