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。
文件系统设置:
- /dev/md1,/
- /dev/md0,/boot
- /dev/vg0/home,/home
- /dev/md3,/graphic
只安装a/目录下的软件包,全部安装。
配置lilo:
- 使用simple模式;
- 附加参数:root=/dev/md1;
- 安装在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脚本,去掉相关注释,使得:
- 提供服务:ping、ssh。
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脚本,去掉相关注释,使得:
- 提供服务:http(s)。
12 配置vsftpd
编辑/etc/inetd.conf, 打开vsftp,同时关闭其他打开的服务。
修改/etc/rc.d/rc.iptables脚本,去掉相关注释,使得:
- 提供服务:ftp。
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