一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则在两个接口之间转发数据包,或者拒绝、丢弃数据包。实际上,防火墙不单单是访问控制的功能,而且还充当了路由器的角色。当然,这并非有什么不妥当的地方,但是当你企图把你配置好的linux防火墙放入运行网络,来保护现有系统安全的时候,你不得不重新考虑和更改你的网络架构。另外一个可能的麻烦是,当防火墙发生意外时,如果没有防火墙的硬件备份的话,那么你将面临巨大的心理压力,因为防火墙的故障,整个网络瘫痪了。假如你把防火墙配置成透明模式(可称为伪网桥),就无需更改网络架构,即使是防火墙不能工作了,要做的仅仅是拔出网线,把网线直接插在路由器的内部接口就可以让网络正常工作,然后你就有时间慢慢恢复发生故障的防火墙。
好了,既然透明防火墙有那么多方便,我们赶快动手来配置吧!准备一台pc机,两块网卡(建议用3com网卡),网线若干,redhatlinux9安装盘一套。打开机箱,把两块网卡插入计算机的pci插槽,用网线把计算机分别与网关和交换机相连(如前页图“正常状态”那样);盖上计算机的盖子,插上电源,开机。在光驱里放上Linux9安装光盘,由光盘引导计算机,从而安装Linux系统。选择定制安装,不要保守,多花一点时间体验一下图形界面的安装乐趣,取消防火墙(nofirewall),在安装快结束时选择以文本方式登录系统,完成安装。
透明防火墙功能配置:
1、设置网络地址。修改文件/etc/sysconfig/network-scripts/ifcfg-eth0和/etc/sysconfig/network-scripts/ifcfg-eth1,使其具有相同的ip地址,相同的子网掩码。
用vi来编辑如下,保存文件,运行命令servicenetworkrestart使修改生效。
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.254
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=EthernetDEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.254
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
这里需要注意两个地方,第一个是要区分清楚那一个网卡是eth0,那一个是eth1.这个问题十分关键,如果搞混了就会导致防火墙不能连通网络。至于怎样区分eth0和eth1,我将在文章的末尾作简单的描述。在这里假定与路由器相连的网卡是eth0.
2、设置默认路由。在文件/etc/sysconfig/network-scripts/ifcfg-eth0中加入一行gateway=192.168.1.1保存后运行命令servicenetworkrestart,修改生效。找一个开放ICMP协议的公网IP,用命令ping202.108.36.196(http://www.163.com/的主机)检测跟外网的连通状况,如果正常,表明Linux防火墙主机跟外网配置正确。再用命令ping192.168.1.18检测防火墙主机与内网主机的连通状况,如果正常则进行下一步操作。
3、启用网络转发和proxy_arp。这是透明防火墙的核心部分,我把它们写进文件/etc/rc.d/rc.local。用vi/etc/rc.d/rc.local插入如下内容。
#Ipforward
/sbin/sysctl-wnet.ipv4.conf.all.forwarding=1
#Enableproxy-arp
/sbin/sysctl-wnet.ipv4.conf.eth0.proxy_arp=1
/sbin/sysctl-wnet.ipv4.conf.eth1.proxy_arp=1
在做这一步的时候,我曾经花费较多的时间,因为我做参考的那本书里的这一步没有参数“–w”,后来单独运行sysctlnet.ipv4.conf.eth0.proxy_arp=1才发现redhatLinux9没有参数“-w”不能运行。
4、指定路由。由于两块网卡(eth0,eth1)使用同样的ip,如果不专门指定转发路径,一定会导致路由混乱,从而使防火墙以内的计算机没法访问Internet。还是用命令vi修改文件/etc/rc.d/rc.local,插入如下几行。
#Defineroute
/sbin/iproutedel192.168.1.0/24deveth0
/sbin/iprouteadd192.168.1.1deveth0
/sbin/iprouteadd192.168.1.0/24deveth1
保存文件,重新启动计算机/Linux防火墙,如果不出意外,就可以从192.168.1.18这台主机访问Internet,当然内网的任何机器都是可以访问Internet的。在这里对定义的路由(Defineroute)作些说明:/sbin/iproutedel192.168.1.0/24deveth0表明所有到子网192.168.1.0/24的数据包都不从网卡eth0转发而从eth1转发,即命令/sbin/iprouteadd192.168.1.0/24deveth1;/sbin/iprouteadd192.168.1.1deveth0表明所有到192.168.1.1的数据包都由eth0转发,这其实可以理解为两个网卡数据转发的分工—到192.168.1.1的数据包由eth0负责,其余的由eth1负责。到这一步,恭喜你!已经成功了一大半,如果安装Linux的时候,选择的防火墙规则为中等级别,那么这个防火墙已经配置成功了。相信大家跟我一样,且肯就此罢休。