最近自己闲着无聊,弄了一台机器想用unix完整的做一台网络服务器,实现proxy、web、ftp、mail、dns、dhcp等功能,起初想的简单,结果做了才知道其中滋味。因为以前只是纸上谈兵,并没多少实战经验,现在空机器上一大堆的服务需要配置,满篇的代码需要一行一行的看,怎一个苦字了得。也是因为这个,这段时间一直没空上来管理版块。现在我已经将服务器配的差不多,顺便花点小时间整理了一下安装笔记,现在贴上来供大家一起探讨。因为过程比较烦乱,我只记录最终的版本,会在以后陆续贴上来,欢迎大家批评指导。
***********************************正文**************************************** 【相关文章:在redhat下网络安装gentoo】
最近自己闲着无聊,弄了一台机器想用unix完整的做一台网络服务器,实现proxy、web、ftp、mail、dns、dhcp等功能,起初想的简单,结果做了才知道其中滋味。因为以前只是纸上谈兵,并没多少实战经验,现在空机器上一大堆的服务需要配置,满篇的代码需要一行一行的看,怎一个苦字了得。也是因为这个,这段时间一直没空上来管理版块。现在我已经将服务器配的差不多,顺便花点小时间整理了一下安装笔记,现在贴上来供大家一起探讨。因为过程比较烦乱,我只记录最终的版本,会在以后陆续贴上来,欢迎大家批评指导。 【扩展阅读:(转借李开复)抓住机遇 挑战未来】
*** 面向用户:初级 【扩展信息:http://www.myfaq.com】
linux网络服务器架设笔记
*** 文章属性:原创 (最先发布于www.52xfu.com校友网论坛电脑知识版) *** 作者:aeolus (aeolus01@163.com) *** 编写时间:2004年7月 *** 版权声明:可自由以电子格式(非印刷)转载,但请保留此说明;如需印刷出版请与作者联系。一、操作系统及环境
现在流行的unix操作系统种类繁多,分为linux、bsd、solaris、sco unix、hp-ux、aix、tru64 unix、mac os x等等很多种类,而每个种
类还不尽相同。就拿linux来说,有很多分支,比如很出名的redhat,slackware,turbolinux,suse,debian,teamlinux,bluepoint,以及
中国的红旗linux等,就linux而言,现在redhat是当之无愧的老大;而bsd下面也分为freebsd、netbsd、bsd/os、4.4bsdlite等等,这当中
freebsd应用最广;solaris是sun公司的标准操作系统,我就不多说了;sco unix是指open unix、unixware、sco openserver等sco公司的操作
系统;hp-ux是hp的,aix是ibm的,tru64 unix是compaq的,mac os x是苹果公司最新的unix操作系统。
上面说了一大堆废话,就是想让大家了结一下unix的现状。好了,现在我们言归正传,看看我是怎么做的吧。
我选择的软件是: redhat linux 版本 9.01 内核版本 2.4.20-8 proxy: netfilter/iptables 版本 1.2.7a-2 web: apache 版本 2.0.40-21 ftp: proftp 版本 1.2.9 dns: bind 版本 9.2.1-16 dhcp: dhcpd 版本 3.0pl-23 mail: postfix 版本 2.0.19 ldap: openldap 版本 2.1.29 编译器: gcc 版本 3.2.2-5再看看我的硬件:
cpu: p3 800hz intel ide: 20g 昆腾 ram: 128m hy cd-rom: 50x acer display: tnt2 m64 不清楚 net: 530tx两块 d-link 同时我还准备了另外一台机子作为它的子机试验用,这台机子配置无关紧要,有个网卡能上网就行了。二、系统安装
系统安装只需要将redhat linux9.01的第一张光盘放进光驱重启,进入安装界面,然后一步步按照提示选择即可,在这里略过不提。因为我的
硬件都是比较老的,所以全部都被系统认出,没什么麻烦。但是如果在安装过程中遇到这种硬件无法驱动的情况,可以直接去红帽子网站
http://www.redhat.com寻找答案。
值得提醒的是,安装中有一个界面是要选择安装模式,station、server或者all,选择server就可以了,不过我为了后面配置简便,在这里为
每一项做了详细选择,安装了许多系统默认不会安装的东西。还有就是在安装时,系统会提醒输入主机名,我的主机名是aeolus。
三、配置网络
系统安装好并以root登陆后,就该开始逐步配置应用模块了。首先我需要aeolus这台机器能上网。先用ifconfig命令看看情况:
[root@aeolus//]# ifconfig eth0 link encap:ethernet hwaddr 00:05:5d:0a:1c:ed inet addr:0.0.0.0 ........(代表省略,我是用手敲的这些文字,照抄下去我会疯掉的,只留了有用的两行) eth1 link encap:ethernet hwaddr 00:05:ba:2b:b8:e5 inet addr:0.0.0.0 ........ lo link encap:local loopback inet addr:127.0.0.1 mask:255.0.0.0 ........ 我准备将eth0设为内网入口,将eth1设为外网出口,架设我有个外网公有ip地址为202.100.100.100,网关是202.100.100.1那么: [root@aeolus//]# ifconfig eth0 192.168.0.1 netmask 255.255.225.0 [root@aeolus//]# route add default gw 192.168.0.1 eht0 [root@aeolus//]# ifconfig eth1 202.100.100.100 netmask 255.255.255.0 [root@aeolus//]# route add default gw 202.100.100.1 eht1 再用ifconfig命令看看情况: [root@aeolus//]# ifconfig eth0 link encap:ethernet hwaddr 00:05:5d:0a:1c:ed inet addr:192.168.0.1 bcast:192.168.0.255 mask:255.255.255.0 ........ eth1 link encap:ethernet hwaddr 00:05:ba:2b:b8:e5 inet addr:202.100.100.100 bcast:202.100.100.255 ........ lo link encap:local loopback inet addr:127.0.0.1 mask:255.0.0.0四、proxy与firewall
我选用的proxy工具是netfilter/iptables,它是与最新的 2.4.x 版本 linux 内核集成的 ip 信息包过滤系统。如果 linux 系统连接到因特
网或 lan、服务器或连接 lan 与因特网的代理服务器,则该系统在 linux 系统上能更好地控制 ip 信息包过滤与防火墙配置。虽然
netfilter/iptables ip 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter 与 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改与除去信息包过滤表中的规则变得容易。 在开始安装 iptables 用户空间工具之前,需要对系统做某些修改。首先,需要使用 make config 命令来配置内核的选项。在配置期间,必须通过将 config_netfilter 与 config_ip_nf_iptables 选项设置为 y 来打开它们,因为这是使 netfilter/iptables 工作所必需的。下面是
可能要打开的其它选项:
config_packet:如果要使应用程序与程序直接使用某些网络设备,那么这个选项是有用的。
config_ip_nf_match_state:如果要配置有状态的防火墙,那么这个选项非常重要而且很有用。这类防火墙会记得先前关于信息包过滤所做的决定,并根据它们做出新的决定。
config_ip_nf_filter:这个选项提供一个基本的信息包过滤框架。如果打开这个选项,则会将一个基本过滤表(带有内置的 input、forward与 output 链)添加到内核空间。
config_ip_nf_target_reject:这个选项允许指定:应该发送 icmp 错误消息来响应已被 drop 掉的入站信息包,而不是简单地杀死它们。ok,开始吧。首先从www.netfilter.org 下载iptables的压缩文件iptables-1.2.7a-2.tar.bz2,我把这个文件存放到/tmp/temp/fire/目录。
首先必须关闭与卸载以前系统上默认安装的iptables或者ipchains,然后继续: # cd /tmp/temp/fire # bzip2 -d iptables-1.2.7a-2.tar.bz2 # tar -xvf iptables-1.2.6a.tar # cd iptables-1.2.7a-2 # make # make install 先用iptables --list查看一下没有定义规则时iptables的样子: chain input (policy accept) target prot opt source destinationchain forward (policy accept)
target prot opt source destinationchain output (policy accept)
target prot opt source destination 好了,现在可以定义iptables规则了,首先进入/etc/rc.d目录,可以看到在这个目录下有rc.local与rc.sysinit文件,这两个文件都很重要,是机器每次启动时都会加载运行的脚本。首先新建一个脚本,命名为firewall,然后在这个脚本里按照自己的条件定义规则:
#缺省情况下,ip转发都处于不可用状态,将其设置为可用状态:
echo 1 > /proc/sys/net/ipv4/ip_forward #加载所需的内核 /sbin/modprobe ip_tables /sbin/modprobe iptable_filter /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp #定义规则 /sbin/iptables --flush input /sbin/iptables --flush forward /sbin/iptables --flush postrouting --table nat /sbin/iptables --policy forward drop /sbin/iptables --table nat --append postrouting --out-interface eth1 --source 192.168.0.0/24 --jump masquerade /sbin/iptables --append forward --in-interface eth1 --match state --state established,related --jump accept /sbin/iptables --append forward --source 192.168.0.0/24 --jump accept #限制一些流出的信息 ... 下一页