Duangw

out-server

操作系统版本:Slackware 12.2

 

1 硬件

配置1块网卡,映射到/dev/vmnet9。

配置6块scsi硬盘,设备号:/dev/sda ~ /dev/sdf。

 

2 安装基础系统

这里磁盘使用软阵列和逻辑卷来管理,详细操作方法可参阅官方文档README_RAID.TXT和README_LVM.TXT,以下仅列出处理步骤。

2.1 磁盘分区

初始安装使用前3块硬盘来组成阵列,规划如下:

分区 大小 类型 挂载点 raid类型 设备号
/dev/sd[abc]1 100M raid(fd) /boot raid1 /dev/md0
/dev/sd[abc]2 2G raid(fd) / raid5 /dev/md1
/dev/sd[abc]3 3G raid(fd) /home raid5+lvm /dev/md2
/dev/sd[abc]5 2G raid(fd) /graphic raid0 /dev/md3
/dev/sd[abc]6 2G/3 swap(82)
free space >= 100M

出于测试目的,这里同时模拟了raid0、raid1和raid5。

使用(c)fdisk对/dev/sda进行分区,之后复制分区表到/dev/sdb和/dev/sdc:

# sfdisk -d /dev/sda | sfdisk /dev/sdb
# sfdisk -d /dev/sda | sfdisk /dev/sdc

建立阵列:

# mdadm --create /dev/md0 --level 1 --raid-devices 3 \
        /dev/sda1 /dev/sdb1 /dev/sdc1
# mdadm --create /dev/md1 --level 5 --raid-devices 3 \
        /dev/sda2 /dev/sdb2 /dev/sdc2
# mdadm --create /dev/md2 --level 5 --raid-devices 3 \
        /dev/sda3 /dev/sdb3 /dev/sdc3
# mdadm --create /dev/md3 --level 0 --raid-devices 3 \
        /dev/sda5 /dev/sdb5 /dev/sdc5

初始化需要一定时间,可以从/proc/mdstat观察进度。

建立逻辑卷:

# pvcreate /dev/md2
# vgcreate vg0 /dev/md2
# lvcreate -L 5G -n home vg0
# vgscan --mknodes
# vgchange -ay

2.2 安装系统

执行setup开始安装。

交换区选择所有可用分区:/dev/sda6、/dev/sdb6、/dev/sdc6。

文件系统设置:

只安装a/目录下的软件包,全部安装。

配置lilo:

  1. 使用simple模式;
  2. 附加参数:root=/dev/md1;
  3. 安装在MBR中。

结束setup,但不能马上重启,继续如下步骤:

首先chroot:

# chroot /mnt

编辑/etc/lilo.conf,添加一行(可放在任何地方,但不能有缩进):

raid-extra-boot = mbr-only

修改boot行:

boot = /dev/md0

完毕使修改生效:

# /sbin/lilo

退出:

# exit

现在可以重启了。

注:如果根文件系统在LVM中,则lilo需要更多配置(参阅README_LVM.TXT)。

2.3 调整交换区参数

编辑/etc/fstab,修改swap参数:

/dev/sda6       swap    swap    defaults,pri=0  0       0
/dev/sdb6       swap    swap    defaults,pri=0  0       0
/dev/sdc6       swap    swap    defaults,pri=0  0       0

目的是让3块交换分区有同样的优先级。

使修改生效:

# swapoff -a
# swapon -a
# swapon -s

2.4 切换为generic内核

制作initrd(针对raid有特殊的参数):

# cd /boot
# mkinitrd -c -k 2.6.27.7-smp -m ext3:scsi_transport_spi:mptbase:mptscsih:mptspi -R -r /dev/md1

编辑/etc/lilo.conf,添加启动项:

image = /boot/vmlinuz-generic-smp-2.6.27.7-smp
  initrd = /boot/initrd.gz
  root = /dev/md1
  label = Generic
  read-only

运行lilo,使之生效:

# /sbin/lilo

重启系统。

2.5 扩展LVM

假设随着时间推移,LVM空间逐步耗尽,需要增加空间。这里使用后3块硬盘的一部分空间来完成扩展的示例。分区如下:

分区 大小 类型 挂载点 raid类型 设备号
/dev/sd[def]1 2G raid(fd) /home raid5 /dev/md4
free space

使用(c)fdisk对/dev/sdd进行分区,之后复制分区表到/dev/sde和/dev/sdf:

# sfdisk -d /dev/sdd | sfdisk /dev/sde
# sfdisk -d /dev/sdd | sfdisk /dev/sdf

建立阵列:

# mdadm --create /dev/md4 --level 5 --raid-devices 3 \
        /dev/sdd1 /dev/sde1 /dev/sdf1

扩展逻辑卷:

# pvcreate /dev/md4
# vgextend vg0 /dev/md4
# lvextend -L +3G /dev/vg0/home
# resize2fs /dev/vg0/home

 

3 安装基本网络包

从光盘安装:

# mount /dev/cdrom /mnt
# cd /mnt/slackware/n
# installpkg iputils-s20070202-i486-2.tgz
# installpkg net-tools-1.60-i486-2.tgz
# installpkg network-scripts-12.2-noarch-4.tgz

 

4 配置网络

执行netconfig配置网络:

# netconfig

IP地址:172.18.0.30/24

 

5 配置软件源

这里使用slackpkg工具来进行后续的软件包管理。

首先安装slackpkg和依赖的软件:

# mount /dev/cdrom /mnt
# cd /mnt/slackware/ap
# installpkg slackpkg-2.70.5-noarch-1.tgz
# installpkg diffutils-2.8.1-i486-3.tgz
# cd ../n
# installpkg gnupg-1.4.9-i486-1.tgz
# installpkg gnupg2-2.0.9-i486-1.tgz
# installpkg wget-1.11.4-i486-1.tgz

编辑/etc/slackpkg/mirrors,添加本地镜像:

ftp://172.18.0.199/pub/slackware/slackware-12.2/

初始化:

# slackpkg update
# slackpkg update gpg

修补当前系统:

# slackpkg upgrade-all

 

6 安装库文件

# slackpkg install zlib
# slackpkg install libcap
# slackpkg install apr(包括apr和apr-util)

 

7 安装其他需要的网络软件

# slackpkg install iptables
# slackpkg install tcpdump
# slackpkg install openssl
# slackpkg install openssh
# slackpkg install mailx
# slackpkg install bind
# slackpkg install netkit-ftp
# slackpkg install lftp

 

8 安装网络服务器

# slackpkg install vsftpd
# slackpkg install httpd
# slackpkg install inetd
# slackpkg install tcp_wrappers
# slackpkg install openldap-client
# slackpkg install cyrus-sasl

 

9 防火墙配置

有关各个iptables脚本的详细内容见:Iptables脚本

这里使用服务器脚本,从本地服务器获得rc.iptables-server.ref、rc.ip6tables.ref和rc.S.ref。执行:

# cp rc.iptables-server.ref /etc/rc.d/rc.iptables
# cp rc.ip6tables.ref /etc/rc.d/rc.ip6tables
# cd /etc/rc.d
# chmod +x rc.iptables
# chmod +x rc.ip6tables

修改/etc/rc.d/rc.S文件,把rc.S.ref模板内容粘贴到rc.S的末尾。

修改/etc/rc.d/rc.iptables脚本,去掉相关注释,使得:

 

10 设置内核参数

有关脚本的详细内容见:Sysctl脚本

从本地服务器获得rc.sysctl.ref和rc.M.ref。执行:

# cp rc.sysctl.ref /etc/rc.d/rc.sysctl
# cd /etc/rc.d
# chmod +x rc.sysctl

编辑/etc/rc.d/rc.M,把rc.M.ref模板内容粘贴到rc.inet2的前面。

 

11 配置httpd

启动apache:

# chmod a+x /etc/rc.d/rc.httpd

启用mod_ssl,编辑/etc/httpd/httpd.conf,取消如下注释:

LoadModule ssl_module lib/httpd/modules/mod_ssl.so
include /etc/httpd/extra/httpd-ssl.conf

生成测试用的证书:

# cd /etc/httpd/
# openssl req -new -x509 -nodes -out server.crt -keyout server.key

这样的证书只能用于测试。关于证书的更详细介绍可参考:Slackware 12.2[附录 A]

修改/etc/rc.d/rc.iptables脚本,去掉相关注释,使得:

 

12 配置vsftpd

编辑/etc/inetd.conf, 打开vsftp,同时关闭其他打开的服务。

修改/etc/rc.d/rc.iptables脚本,去掉相关注释,使得:

 

13 配置域名服务bind

out-server作为outer.net、copyleft.net、other.net的主域服务器。

13.1 主配置

编辑/etc/named.conf,增加各个正向和反向解析zone,其余内容不变:

...
zone "outer.net" IN {
        type master;
        file "outer.zone";
};

zone "copyleft.net" IN {
        type master;
        file "copyleft.zone";
};

zone "other.net" IN {
        type master;
        file "other.zone";
};

zone "0.16.172.in-addr.arpa" IN {
        type master;
        file "named.172.16.0";
};

zone "0.17.172.in-addr.arpa" IN {
        type master;
        file "named.172.17.0";
};

zone "0.18.172.in-addr.arpa" IN {
        type master;
        file "named.172.18.0";
};
zone "1.31.172.in-addr.arpa" IN {
        type master;
        file "named.172.31.1";
};
...

13.2 正向解析

(1).创建正向解析文件/var/named/outer.zone:

$TTL    86400
$ORIGIN outer.net.
@               IN SOA outer.net.       root.outer.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

out-server1     IN      A       172.18.0.20
out-server2     IN      A       172.18.0.30
out-server3     IN      A       172.18.0.40

router          IN      A       172.16.0.1
router          IN      A       172.17.0.1
router          IN      A       172.18.0.1
router          IN      A       172.31.1.1

www             IN      CNAME   out-server1
ftp             IN      CNAME   out-server1
dns             IN      CNAME   out-server1

其中:

$TTL定义一个通用的TTL变量。

$ORIGIN指出该文件的记录适用的域,注意outer.net后面的小数点(.),不可缺少。

SOA后面是此区域的授权主机和管理者邮箱,由于@是保留字,所以用(.)代替,实际邮箱是root@outer.net,注意不要少了小数点(.)。

SOA的设置内容在主域服务器和从域服务器之间复制的参数。

NS资源记录指定本地网域的域名服务器,注意该名必须是A资源记录,不能是CNAME等;不要少了小数点(.);否则在home-gate/away-gate等缓存服务器配置时会运行不正常!!!

后面就是具体的A资源记录和CNAME资源记录。

(2).创建正向解析文件/var/named/copyleft.zone:

$TTL    86400
$ORIGIN copyleft.net.
@               IN SOA copyleft.net.    root.copyleft.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

out-server1.outer.net.  IN      A       172.18.0.20

home-gate       IN      A       172.16.0.10
away-gate       IN      A       172.17.0.10

home            IN      CNAME   home-gate
gate.home       IN      CNAME   home-gate
server.home     IN      CNAME   home-gate
www.home        IN      CNAME   home-gate
ftp.home        IN      CNAME   home-gate
www             IN      CNAME   home-gate
ftp             IN      CNAME   home-gate

away            IN      CNAME   away-gate
gate.away       IN      CNAME   away-gate
server.away     IN      CNAME   away-gate
www.away        IN      CNAME   away-gate
ftp.away        IN      CNAME   away-gate

(3).创建正向解析文件/var/named/other.zone:

$TTL    86400
$ORIGIN other.net.
@               IN SOA other.net.       root.other.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

out-server1.outer.net.  IN      A       172.18.0.20

other-gate      IN      A       172.18.0.10

other           IN      CNAME   other-gate
gate.other      IN      CNAME   other-gate
server.other    IN      CNAME   other-gate
www.other       IN      CNAME   other-gate
ftp.other       IN      CNAME   other-gate
www             IN      CNAME   other-gate
ftp             IN      CNAME   other-gate

13.3 反向解析

(1).创建反向解析文件/var/named/named.172.16.0:

$TTL    86400
@               IN SOA outer.net.       root.outer.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

1               IN      PTR     router.outer.net.
10              IN      PTR     home-gate.copyleft.net.

注意末尾的小数点(.)。

(2).创建反向解析文件/var/named/named.172.17.0:

$TTL    86400
@               IN SOA outer.net.       root.outer.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

1               IN      PTR     router.outer.net.
10              IN      PTR     away-gate.copyleft.net.

(3).创建反向解析文件/var/named/named.172.18.0:

$TTL    86400
@               IN SOA outer.net.       root.outer.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

1               IN      PTR     router.outer.net.
10              IN      PTR     other-gate.other.net.
20              IN      PTR     out-server1.outer.net.
30              IN      PTR     out-server2.outer.net.
40              IN      PTR     out-server3.outer.net.

(4).创建反向解析文件/var/named/named.172.31.1:

$TTL    86400
@               IN SOA outer.net.       root.outer.net. (
                                2007061000      ; Serial
                                28800           ; Refresh
                                14400           ; Retry
                                3600000         ; Expire
                                86400 )         ; Minimum

                IN NS   out-server1.outer.net.

1               IN      PTR     router.outer.net.

13.4 其他设置

启动bind服务:

# cd /ec/rc.d/
# chmod a+x rc.bind

编辑/etc/rc.d/rc.iptables,允许DNS查询:

# dns
iptables -A INPUT -p udp --dport domain -m state --state NEW -j ACCEPT