四 Linux简明系统维护手册( 四 )


3.3、现在设置ipchains:(ipchains软件适用2.2.X的内核,在2.4.X的内核中不适用 。2.4.X的内核推荐使用iptables,关于该软件的用法在下面介绍)
ipchains –A forward –s 192.168.1.0/24 –j MASQ黑体部分是内网地址 。这句话的意思是,把所有内网发送的包都伪装成外部网的地址(那个机器的外网地址),这样,外部其他机器回应的时候就会发送到这台机器,经过转发就回来内网了 。好了,一个简单的网关做好了 。如果你需要实现防火墙(包过滤功能),则需要配置更加复杂的过滤规则,这些规则应该同时作用于input/output/forward链 。
3.4、自动启动:设定了复杂的链,需要保存 。在/etc/rc.d中建立一个文件:rc.ipfwadm把你的链脚本加进去就可以了 。最后给这个文件 x属性(chmodx rc.ipfwadm) 。
4.在2.4.X内核中使用iptables建立Linux防火墙(网关) 。
4.1 说明和下载
前面已经提到过2.4 内核中要使用iptables来做类似于ipchains在2.2内核中实现的事情 。事实上,在2.4内核中的iptables包含了两个完全不同的部分:包过滤和地址转换 。这两个功能在逻辑上是分开的,考虑到操作习惯上的问题才集成在一个配置程序(iptables)上 。如果你安装了带有2.4内核的发行包,那么一般都带有iptables,并且在内核配置上也配置好了 。如果要编译新的内核或者原来的内核没有支持iptables,需要选上相关的选项 。使用make menuconfig 配置内核的时候操作:进入:Networking Options至少选择上:
[*] Network packet filtering (replaces ipchains)[*]Network packet filtering debugging (NEW)进入:IP: Netfilter Configuration--->[*] Connection tracking (required for masq/NAT) (NEW)FTP protocol support (NEW)IRC protocol support (NEW)等等……把下面的选项全部标记<*>逐级返回上面菜单后保存配置,然后按照编译内核的那一套程序进行即可(参见前面的内容) 。这里需要说明的是,内核支持了iptables功能,还需要有外部程序才行 。如果你是直接安装的带有2.4内核的发行包,应该已经带有iptables实用程序了 。但是如果你是从2.2核心的发行包直接升级到2.4内核,尽管按照上面的做法配置的核心,但是还不能使用iptables 。还必须下载和编译iptables外部程序才能使用iptables功能 。下载的地址是:http://www.netfilter.org,下载的文件是iptables-1.2.6a.tar.bz2或更新的版本 。
4.2 安装:
这个.bz2文件比较奇怪吧?把文件复制到/usr/local/src中,然后用下列命令释放编译和安装: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那个‘- ’别忘了)
你的系统可能没有bzip2工具,如果没有,你就去下一个:
进入新生成的目录 :cd iptables-1.2.6a 编译和安装:make ; make install
4.3 配置
如果你需要配置一个简单的网关,你仅仅需要配置一个转发加地址转换功能即可,我提供的参考脚本如下:
#beginecho 1 > /proc/sys/net/ipv4/ip_forwardmodprobe iptable_natmodprobe ip_conntrackmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpiptables -F INPUTiptables -F FORWARDiptables –F OUTPUTiptables -F POSTROUTING -t natiptables -t nat -Fiptables -P FORWARD DROPiptables -A FORWARD -s 192.168.1.0/24 -j ACCEPTiptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to 21.9.22.2#end其中3行modprobe是当你在内核中把iptables相关功能编译成模块(选成)的时候才用到的(也可能不止3行) 。其中插入模块(modprobe)的几行比较重要,有时候当你作完NAT后,发现FTP不好用了,就要手工插入ip_nat_ftp模块(语法是:modprobe ip_nat_ftp) 。黑体的地址部分可能是需要根据你网络的实际情况来决定的 。最后一句话的意思是把凡是源地址是192.168.1.x的包做地址转换,转换为网关外侧地址21.9.22.2 。好了,你已经建立起一个基本的网关了 。其实iptables的功能及其强大,配置也非常灵活 。其中的防火墙功能通过-t filter参数实现,地址转换功能通过-t nat实现(就像上面一样) 。防火墙功能(packet filter)主要是3个链:INPUT,FORWARD,OUTPUT,地址转换功(nat)主要是3个链:PREROUTING,POSTROUTING,OUTPUT 。观察当前的状态可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat 。

推荐阅读