1.81k likes | 2.03k Views
Linux 操作系统 用 Linux 构建 Intranet. 周炯 上海艾基信息技术有限公司. 内容提要. Apache 服务器的安装与设置 FTP 服务器的安装与设置 DHCP 服务器的安装与设置 DNS 服务器的安装与设置 邮件服务器的安装与设置 Linux 下 NAT 服务器简介. DNS 服务器. 域名的介绍 BIND 的介绍 (Berkeley Internet Name Domain), 当前有三版 :bind4 、 bind8 、 bind9 ),支持多处理器、线程安全操作、公钥加密、 IPv6 支持、增量区传送等). BIND.
E N D
Linux操作系统用Linux构建Intranet 周炯 上海艾基信息技术有限公司 Acegene IT Co. Ltd.
内容提要 • Apache服务器的安装与设置 • FTP服务器的安装与设置 • DHCP服务器的安装与设置 • DNS服务器的安装与设置 • 邮件服务器的安装与设置 • Linux下NAT服务器简介 Acegene IT Co. Ltd.
DNS服务器 • 域名的介绍 • BIND的介绍 • (Berkeley Internet Name Domain),当前有三版:bind4、bind8、bind9),支持多处理器、线程安全操作、公钥加密、IPv6支持、增量区传送等) Acegene IT Co. Ltd.
BIND • BIND的组成: • named守护进程,回答用户查询 • 库例程,联系DNS分布式数据库的服务器 • DNS的命令接口:nslookup、dig和host Acegene IT Co. Ltd.
BIND • BIND名字服务器的分类: • 权威:一个区的正式代表 • 主服务器:区数据的首要服务器,数据在磁盘 • 从服务器:从主服务器复制得到它的数据 • 存根:和从服务器类似,但仅复制名字服务器的数据 • 分支:仅在域内可见的服务器(秘密服务器) • 非权威:用缓存数据回答查询:未知数据有效 • 缓存:缓存以前的查询:没有本地区 • 转发器:代替许多客户机执行查询,创建一个大的缓存 • 递归:代替您查询,直到返回答案或出错 • 非递归:如果不能回答查询,则返回下一服务器地址 Acegene IT Co. Ltd.
BIND • 解板库例程: • 客户机例程:gethostbyname • 轻量级例程:lwresd(对不支持IPv6的主机可以使用,要在服务器中包含lwres语句) Acegene IT Co. Ltd.
BIND • 非/递归工作原理:例:访问:www.sina.com root(“.”) 3-R 2-Q 4-Q 1-Q com wtb ns.liaomeng.com 10-A 5-R 7-R 6-Q 9-A 8-Q sina.com ns.sina.com Q=Query A=Answer R=推荐 Acegene IT Co. Ltd.
BIND • 缓存和效率: • 早期缓存机制仅用于肯定回答,但实验发现DNS查询请求有60%都是无效查询,因此后来实现了否定缓存 Acegene IT Co. Ltd.
BIND • 解析器配置: • /etc/resolv.conf • search:列出了如果主机名不完整时要查询的域 • 如:search wtb.com. wtb.net. wtb.org. • 注:此文件中的DNS服务器地址必须是递归的(解析器不懂推荐) • 最多,可配置三个DNS地址,按顺序访问 Acegene IT Co. Ltd.
BIND • 下载安装BIND: • www.isc.org • (最新版BIND需openssl0.9.6e以上版本,在www.openssl.org下载最新版安装) Acegene IT Co. Ltd.
BIND • 主配置文件: /etc/named.conf • 区文件目录: /var/named/ • 区文件: named.ca //根服务器信息,在ftp.internic.com/domain获取 named.local //本地反向区域 localhost.zone //本地区域 Acegene IT Co. Ltd.
BIND—localhost.zone • $TTL 86400 • $ORIGIN localhost. • @ 1D IN SOA @ root ( • 42 ; serial (d. adams) • 3H ; refresh • 15M ; retry • 1W ; expiry • 1D ) ; minimum • 1D IN NS @ • 1D IN A 127.0.0.1 Acegene IT Co. Ltd.
BIND—named.local • $TTL 86400 • @ IN SOA localhost. root.localhost. ( • 1997022700 ; Serial • 28800 ; Refresh • 14400 ; Retry • 3600000 ; Expire • 86400 ) ; Minimum • IN NS localhost. • 1 IN PTR localhost. Acegene IT Co. Ltd.
BIND—/etc/named.conf • 注: • 1、每句以分号结束 • 2、大括号用于分组 • 3、可用:named-checkconf和named-checkzone检查语法错误 Acegene IT Co. Ltd.
BIND—主配置语句类型 • include:插入一个文件 • options:设置名字服务器的全局配置选项和默认值 • server:指定每个服务器所特有的选项 • lwres:将DNS也配置成一个轻量级解析器 • key:定义验证信息 • acl:定义访问控制列表 • zone:定义资源记录的一个区 • trusted-keys:定义预先设置的密钥 • controls:用ndc来定义用于控制名BIND的渠道 • logging:指定日志记录分类及其目的位置 • view:定义域名空间的一个veiw(视图) Acegene IT Co. Ltd.
BIND • include:补充文件引入named.conf文件 • include "path"; • options:指定全局选项,仅有一个 • 9.0版本有50个左右的选项,以下是常用选项: • version "string"; [实际版本号] • directory "path"; [启动目录] • notify yes|no; [yes] :数据发生改变,通知从服务器 • also-notify servers_ipaddrs; [empty] • :通知所有DNS服务器 Acegene IT Co. Ltd.
BIND- options语句 • recursion yes|no; [yes] :递归/非递归解析 • allow-recursion {address_list} [allhost} 允许的主机 • transfer-format one-answer|many-answers; • 主服务器到从服务器一次传输的记录数 • transfers-in number; [10] 同时发生入站区传送数目 • transfers-out number; [10] 同时发生出站区传送数目 • transfers-per-ns number; [2] 每个站点最大数目 • transfer-source IP-address; 允许的源IP地址(需和allow 中定义的相同) Acegene IT Co. Ltd.
BIND- options语句 • listen-on port ip_port address_list [53 all] • query-source address ip_addr port ip_port • 查询其它名字服务器的接口和端口(用于有防火墙中) • forwarders {in_addr;in_addr;...}; [empty list] • 转发服务器列表 • forward only|first; [first] • 转发方式,仅转发|先转发,不行再自己查询,转发服务器中有大容易的内存,用于缓存 • 注:转发区域必须是递归 Acegene IT Co. Ltd.
BIND- options语句 • allow-query {address_list}; [all hosts] • 可以查询的主机 • allow-transfer {address_list}; [all hosts] • 可以请求传输区数据的主机 • blackhole {address_list}; [empty] • 从不希望与之通信的主机 Acegene IT Co. Ltd.
BIND-acl语句 • acl acl_name{ address_list }; • 除also-notify语句外,其它地方都可使用 • 必须在named.conf中定义 • 必须在使用前定义 • 默认定义:any、localnets、localhost、none Acegene IT Co. Ltd.
BIND—server语句 • server ip_addr{ • bogus yes|no; [no] :伪服务器 • provide-ixfr yes|no; [yes(v9)] :发送增量区数据(主服务器) • request-ixfr yes|no: [yes(v9)] :请求增量区数据(从服务器) • support-ixfr yes|no; [no(v8)] :同上 • edns yes|no; [yes] :extend DNS协议 • transfers number; [2(v9)] :并发传数量 • transfer-format one-answer |many-answers; :支持格式 • keys {key-id;key-id;...}; :key中定义的密钥ID • } Acegene IT Co. Ltd.
BIND-- logging语句 • 术语: • channel(通道):消息能去的地方:syslog或文件 • category(类别):named消息类型 • module(模块):产生消息的来源模块名 • facility(设备):syslog设备名 • severity(严重性):出错消息的等级 • logging语法: • logging{ [channelchannel_name{ (file path_name [versions(number|unlimited)] [sizesize_spec] |syslog(kern|user|mail|daemon|auth|syslog|lpr| news|uucp|cron|authpriv|ftp| local0|local1|local2|local3| local4|local5|local6|local7) |null); Acegene IT Co. Ltd.
BIND-- logging语句 • [severity(critical|error|warning|notice| info|debug[level]|dynamic);] [print-categoryyes_or_no;] [print-severityyes_or_no;] [print-timeyes_or_no;] };] category{模块名 } • }; • 模块: • xfer-in :区传送 • default :默认 • security :安全 • os :系统 • panic :恐慌 • statistics:统计信息 • config :配置文件 • maintenance:维护 Acegene IT Co. Ltd.
BIND—zone语句 • 定义权威性的区域 • 装载根服务器地址和名称 • 一、配置主服务器 • zone "domain_name"{ • type master; • file "path"; • allow-query{address_list};[all] • allow-transfer {address_list}; [all] • allow-update{addres_list}; [none] :动态更新、联系DHCP(限本地网络使用) • zone-statistics yes|no [no] :保留统计信息 • }; Acegene IT Co. Ltd.
BIND—zone语句 • 二、从服务器配置 • zone "domain_name" { • type slave|stub; :stub:只传送NS记录(即存根) • file "path"; :从主服务器传来的区数据 • masters {ip_addr;ip_addr;...}; [no default]:主服务器地址(主服务器有多个网络接口时) • allow-query {address_list}; [all] • allow-transfer {address_list}; [all] • }; Acegene IT Co. Ltd.
BIND—zone语句 • 三、设置根服务器的线索 • zone "." { • type hint; • file "path"; • }; • named由此“线索”查找其它域的信息,否则只能维护本域 • 四、设置一个转发区 • zone "domain_name" { • type forward; • forward only|first; • forwarders {ip_addr;ip_addr;..}; • }; • 实现一个对外部不可见的DNS Acegene IT Co. Ltd.
BIND—key语句 • key语句: • 定义用于某个特定服务器身份验证的有名字的加密密钥。 • key key-id{ • algorithm string; • secret string; • }; • 必须在named.conf中先定义方可使用 • 于某个服务器关联时,只要在该服务器的server中的keys中包括此key_id; • 用于验证来自那个服务器的请求,又用来对那些请求的响应作签名 Acegene IT Co. Ltd.
BIND-controls语句 • 定义rndc如何控制一个正在运行的named进程 • controls{ • inet ip_addr port allow{addres_list} keys {key_list}; • }; • 默认端口号是:953rndc-confgen –b 256 //会产生密钥 • 方法一:可让named和rndc都参考同一个配置文件 • 方法二:把产生结果分别写入/etc/rndc.key和/etc/named.conf,此方法用于rndc和dns不在一个主机 Acegene IT Co. Ltd.
BIND—split DNS和view(仅v9) • 分隔DNS对不同的网络的可视程度 • 下表是对内外服务配置的差别 • 参数 外部 内部 • directory /var/named/external /var/named/internal • listen-on 外部接口 内部接口 • recursion no yes • allow-query any 仅内部网 • forward 不用 forward only • forwarders external_ns Acegene IT Co. Ltd.
BIND—split DNS和view(仅v9) • view view-name{ • match-clients {address_list}; :控制谁能看到 • view_option;... • zone_statement;... • }; • view是按顺序来处理,所以先加上最严格的限制 • view是全无全有的概念,即要么全加要么都不加 Acegene IT Co. Ltd.
BIND—DNS数据库 • 一、资源记录 • 格式: • [name] [ttl] [class] type data • 特殊字符: • ;:引入注释 • @:当前的域名 • ():允许数据跨行 • *:通配符(仅由named字段使用) • name:表示该记录所描述的实体(一个主机或域),如果几个连续的记录涉及同一个实体,则第一条记录之后可以省略这个名字。可以用相对名或全名,全名后要加"." • ttl:存活时间,以秒为单位。默认以开头的$TTL设置的值 • class:指定网络类型:IN对应internet,CH对应chaosNet,HS对应Hesiod Acegene IT Co. Ltd.
BIND—DNS数据库 Acegene IT Co. Ltd.
SOA记录 • @ IN SOA ns.wtb.com. wtb.wtb.com.( • 20041101;序列号 • 7200 ;刷新时间(2 h) • 1800 ;重试时间(30 m) • 604800 ;终止时间(1 w) • 7200) ;否定缓存存活时间(2 h) • @:名字,可以用$ORIGIN设置; • IN:类别;SOA:记录类型,"ns.wtb.com."是该区的主名字服务器,"wtb.wtb.com."是管理员邮件地址。 • 20041101:是序列号 • 7200:指定从服务器应该多长时间联系主服务器,1-6小时为合适值 • 1800:多长时间后再重试 • 604800;很长时间重试还是无效时则终止重试 • 7200:被缓存的否定回答的存活时间 Acegene IT Co. Ltd.
BIND—NS记录 • NS:记录标识一个区的权威服务器,通常跟在SOA后面 • 例: • wtb.com. IN NS ns.wtb.com. • wtb.com IN NS ns.cs.wtb.com. • wtb.com IN NS ns.li.wtb.com. • 每个权威名字服务器应该既要在wtb.com的区文件中列出,也要在父区com的文件中列出。仅缓存服务器不能是权威的,不用列出它们。在这中不指定主/从服务器。 Acegene IT Co. Ltd.
BIND—其它记录 • A记录: • 记录DNS数据库的核心,定义一个主机名到IP地址的对应 • hostname [ttl] IN A ipaddr • PTR记录: • 执行从IP地址到主机名的反向映射。 • addr [ttl] IN PTR hostname Acegene IT Co. Ltd.
BIND—其它记录 • MX记录:定义邮件服务器 • name [ttl] IN MX preference host .... • CNAME记录:为主机多分配几个名字 • nickname [ttl] IN CNAME hostname • 注:如果一个主机有别名,在引用时不能使用 • LOC记录:描述DNS对象的物理位置和大小,但不汲及技术操作。 • name [ttl] IN LOC lat lon [alt [size [hp [vp]]]] Acegene IT Co. Ltd.
BIND—其它记录 • SRV记录:指定域内服务的位置 service.proto.name [ttl] IN SRV pri wt port target service:标准互联网服务名称(www.iana.org/numbers.htm可查看) proto:不是tcp就是udp name:SRV记录引用的域 pri:是MX风格的优先级 wt:是用于几个服务器这间平衡负载的权重(为0表示不需负载平衡) port:是服务器服务的端口号 target:目标服务器主机(为.表示禁止此服务) Acegene IT Co. Ltd.
BIND—其它记录 • TXT记录: • 引入一段说明在DNS记录中 Acegene IT Co. Ltd.
BIND—区文件中的命令 • $ORIGIN domain-name :定义域名 • $INCLUDE filename : 包含文件 • $TTLdefault-ttl (必须存在) : 默认存活时间 • $GENERATE lots-of-args :成组生成对应 • 注:命令必须从第一列开始。整个命令要在一行 Acegene IT Co. Ltd.
BIND-粘合记录 • 在父DNS服务器中添加子DNS服务器中的A记录。以便于在父服务器中设置子域的DNS服务器, • cs.wtb.com. IN NS ns1.cs.wtb.com. • kw.wtb.com. IN NS ns2.kw.wtb.com. • ns1.cs.wtb.com IN A 218.22.1.132 • ns2.kw.wtb.com IN A 218.22.1.138 Acegene IT Co. Ltd.
BIND-区传送 • 一、AXFR • 传送整个区数据 • 二、IXFR • 只传送少量变更的数据 • provide-ixfr yes; //在服务器主区域设置,允许此方式发送 • request-ixfr no: //在服务器从区域设置,允许此方式接受 • 注:IXFR只能用在全自动更新的区域 Acegene IT Co. Ltd.
BIND-动态更新 • DHCP的配置: • 1. ‘ddns-update-style’这个就是动态DNS的更新方式,有几个选项,我用的是interim,可以用 man dhcpd.conf找到另外的几个选项。2. ‘ignore client-updates’这个选项是不允许客户机更新DNS记录。当然,也可能允许,但会有一点问题。 3. ‘key DHCP_UPDATER’这个是更新DNS的KEY,是必须的。其中algorithm 后的是生成key的算法,key的生成是用 ‘dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER’。 4. ‘zone’要更新的zone,如果是本机就是DNS server,primay 就写127.0.0.1,要是其它机器是DNS server, 就写那台机器的IP。 • zone test.com. { primary 127.0.0.1; key DHCP_UPDATER; } zone 251.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } Acegene IT Co. Ltd.
BIND-动态更新 • named.conf的配置: • key DHCP_UPDATER { algorithm HMAC-MD5; secret qhB++OR5yWo8BTXwk/m4ng; }; //必须和dhcp中一样。 • zone "test.com" IN { type master; file "test.com"; allow-update { key DHCP_UPDATER; }; }; Acegene IT Co. Ltd.
BIND--rndc • status:状态报告 • stop:停止named,保存没做完的更新 • halt:中止named,不保存没做完的更新 • dumpdb:把DNS数据库转储到named_dump.db中 • stats:把统计转储到named.stats • flush:刷新服务器的缓存 • reload:重新载入named.conf和区文件 • reload zone:只重新载入指定的区 • reconfig:重新载入配置文件和任何新的区 • querylog:开关对查询的日志功能 Acegene IT Co. Ltd.
BIND-DDNS • vi /etc/dhcpd.conf • ddns-update-style interim; • ignore client-updates; • key "rndc-key1" { • algorithm HMAC-MD5; • secret "koWQcX9XbbyzuzeUi0dK0QKmmZtN4L8PjtY4NP3CkOM="; • }; • zone test.com. { • primary 127.0.0.1; • key rndc-key1; • } • vi /etc/named.conf • key "rndc-key1" { • algorithm HMAC-MD5; • secret "koWQcX9XbbyzuzeUi0dK0QKmmZtN4L8PjtY4NP3CkOM="; • }; • zone "test.com" { • type master; • file "test1.com.zone"; • allow-update {key rndc-key1;}; • }; • 注:尽量不要手工修改区域文件,以免冲突而引起named库破坏 Acegene IT Co. Ltd.
BIND-制作自己的”根”服务器 • 一、自己分发根“线索”文件中只有你DNS服务器的“线索”文件 • 二、你要对com、net、org等域授权DNS服务器地址。 Acegene IT Co. Ltd.
BIND-安全--chroot • #useradd bind • #cd /chroot/bind # mkdir chroot # mkdir chroot/dev # mkdir chroot/etc # mkdir chroot/etc/namedb # mkdir chroot/usr # mkdir chroot/usr/sbin # mkdir chroot/var # mkdir chroot/var/run • #grep bind /etc/passwd >chroot/etc/passswd • # grep bind /etc/group >chroot/etc/group # cp /etc/namedb/named.conf chroot/bind/etc/ # cp /etc/localtime chroot/bind/etc/ # cp -R /etc/namedb/ chroot/etc/namedb/ # mknod chroot/dev/null c 2 2 # chmod 666 chroot/dev/null # cp /usr/local/sbin/named* chroot/sbin/ # cp /usr/local/sbin/dns* chroot/sbin/ • chroot/sbin/named –u bind(或id号) -t /chroot/bind/chroot Acegene IT Co. Ltd.
BIND-安全DNSSEC • 功能:使用公钥加密对区数据的来源进行身份验证,并验证其完整性 • 一、dnssec-keygen –a DSA –b 768 –n ZONE mydomain.com. //生成密钥对 • 二、dnssec-makekeyset -t 3600 –s +0 –e +864000 Kmydomain.com.+003+12345 //绑定签名 • 三、由父区:dnssec-signkey keyset.mydomain.com Kcom.+003+56789 //父对子签名 • 四、dnssec-signzone -o mydomain.com /db.mydomain // 域名 输入文件 Acegene IT Co. Ltd.
BIND-启动脚本 • if [ -f /etc/init.d/functions ] ; then • . /etc/init.d/functions • elif [ -f /etc/rc.d/init.d/functions ] ; then • . /etc/rc.d/init.d/functions • else • exit 0 • fi • # Source networking configuration. • . /etc/sysconfig/network • [ ${NETWORKING} = "no" ] && exit 0 • # Check that smb.conf exists. • [ -f /etc/named.conf ] || exit 0 • [ -d /var/namedb ] || exit 0 • RETVAL=0 • start() { • KIND="Named" • echo -n $"Starting $KIND services: " • daemon /usr/local/sbin/named • RETVAL=$? • echo • [ $RETVAL -eq 0 ] || RETVAL=1 • return $RETVAL • } Acegene IT Co. Ltd.
BIND-启动脚本 • stop() { • KIND="Named" • echo -n $"Shutting down $KIND services: " • killproc named • RETVAL=$? • echo • return $RETVAL • } • restart() { • stop • start • } • reload() { • echo -n $"Reloading named all file: " • /usr/local/sbin/rndc reload • RETVAL=$? • echo • return $RETVAL • } • status() { • /usr/local/sbin/rndc status • } Acegene IT Co. Ltd.