8.2. rc.firewall.txt

脚本rc.firewall.txt是核心,第七章防火墙配置实例 rc.firewall对他已做了很周详的解释,其他的脚本都是以他为基础得到的。这个脚本主要是针对具备两个连接的家庭网络而设计的,如一个局域网连接,一个Internet连接。我们假设的情况是您有一个静态IP地址,无需DHCP,PPP, SLIP或其他什么协议为您动态分配IP。假如您想要的恰恰是使用这些协议的脚本,就到rc.DHCP.firewall.txt看看吧。
脚本rc.firewall.txt要完全发挥作用,系统必需要有下面列出的功能,您能够把他们编译进内核,也能够编译成模块。假如您改变了脚本,就要加入相应的功能模块或把他们编进内核。
CONFIG_NETFILTER
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_MATCH_LIMIT
CONFIG_IP_NF_MATCH_STATE
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_NAT
CONFIG_IP_NF_TARGET_LOG
8.3. rc.DMZ.firewall.txt

脚本rc.DMZ.firewall.txt所针对的情况是这样的:有一个可信任的内网,一个DMZ,更有一个Internet连接。这里的DMZ是通过配置一对一的NAT 操作得到的,他需要IP别名(就是在一块网卡上配置多个IP地址)的支持。我们更有其他的方法来实现 DMZ:假如您有一个整个的网段,可划分子网,然后把某个子网分给DMZ,再为防火墙配置相应的内网和外网 IP地址(译者注:第一种方法是针对有多个网段的情况,即内网一个网段,DMZ一个网段,第二种方法是把一个网段划分成几个子网,这样就和第一种情况相同了)。注意,这种方法会多消耗两个IP,一个是网络地址,一个是广播地址(译者注:具体细节请上网搜索子网划分的相关信息,这个指南并不包含此类信息)。以上两种方法用哪一个就要您自己决定了。本指南会给您实现防火墙和NAT的手段或叫做技术,但具体如何去做,没有完全的说明,因为这已超出本文的范围了。
这个脚本需要以下模块,也可能他们已被编译进内核了。
CONFIG_NETFILTER
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_MATCH_LIMIT
CONFIG_IP_NF_MATCH_STATE
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_NAT
CONFIG_IP_NF_TARGET_LOG
从图中能够看出,此脚本假设您有两个内网,一个是可信任的内网,使用地址192.168.0.0/24,另一个是 DMZ(我们正是对他做一对一的NAT),使用地址192.168.1.0/24。假如有人从Internet向我们的DNS_IP发送一个包,我们就要对他使用DNAT,之后,此包的目的地址就指向DMZ 里的DNS服务器了,他也就能够到达真正的DNS服务器。否则,DNS服务器不会看到这个包,也就没有应答之说了。下面是实现上述DNAT功能的语句:
$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d
$DNS_IP --dport 53 -j DNAT --to-destination $DMZ_DNS_IP
我们能够看出,这个规则要放在nat表的PREROUTING链中,包要满足的条件是:使用 TCP协议且使用53号端口,从接口$INET_IFACE进入,而且要以$DNS_IP为目的。被匹配的包要交给DNAT target来处理,他会把包的目的地址改为由--to-destination指定的地址$DMZ_DNS_IP。这就是 DNAT的工作流程。当相应的应答包被发送到防火墙时,会自动地被un-DNAT。
现在,您应该完万能够读懂这个脚本了。假如有什么您不明白的东西在脚本的其他部分没有被用到,那可能就是我的错误了,要告诉我哦。
8.4. rc.DHCP.firewall.txt

脚本rc.DHCP.firewall.txt适用于那些使用DHCP、PPP或SLIP连接Internet的情况,他和原始的脚本rc.firewall.txt几乎相同,主要的区别在于这里不再使用变量STATIC_IP。原因很简单了,就是他不能和动态的IP一起使用。此脚本相对于原始脚本的改变是很少的,但还是有一些人发信问我做了什么改变。经过大家的考验,这个脚本应该是个很好的解决方案了。
他需要如下功能模块。
CONFIG_NETFILTER
CONFIG_IP_NF_CONNTRACK
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_MATCH_LIMIT
CONFIG_IP_NF_MATCH_STATE
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_NAT
CONFIG_IP_NF_TARGET_MASQUERADE
CONFIG_IP_NF_TARGET_LOG
我做的改变主要是删除了变量STATIC_IP连同和他相关的任何东西。以前,主要的过滤工作是基于变量STATIC_IP的,现在是INET_IFACE 了。也就是说,在这个脚本里,我们不再把-d $STATIC_IP作为过滤的条件,而是用 -i $INET_IFACE
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




