使用IPtables搭建防火墙的规则
2006-04-03 12:38:01 来源:WEB开发网就这点而言,有人会说:何必如此麻烦?的确,我们有更简单的创建防火墙的方法,也有很多不错的软件也可以帮助我们来构建自己的规则集,但是我们应该清楚,最简单的办法,往往不是最好的方法。既然我们有更好的方法,为什么不使用呢?
共享一个Internet连接
网络地址翻译和IP伪装都可以实现多台主机共享一个Internet连接,而这个局域网可以是Linux和Windows系统组成的多系统局域网。假设现在我们有一台机器有两个网卡,其中eth0为“公共”网卡,eth1为“私有”网卡。
换句话说,eth0被分配了一个静态的,可路由的IP地址,而eth1则被分配给了一个私有的、不能路由的IP,也就是说该IP是属于该局域网子网的。要实现上述功能,我们需要向nat和filter表中添加一些链:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t filter -A FORWARD -i eth0 -o eth1 -m state --state
RELATED,ESTABLISHED -j ACCEPT
# iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT
这显示了有状态的数据包检测的价值。请注意,我们这里是如何实现流入数据包只有在属于一个已经存在的连接时才被允许的,而所有来自局域网内流向外的数据包则都允许通过 (注意:这里的filter是缺省的表,但它并不是必须的)。第一条规则让所有流出的信息看起来都是来自防火墙机器的,而并不会显示出防火墙后面还有一个局域网。
下面的例子是为FORWARD和POSTROUTING链设置了缺省的策略,在使用伪装时,有一个缺省的POSTROUTING DROP策略是非常重要的,否则,就有可能有心怀恶意的用户突破网关后伪装它自己的身份。
# iptables -t filter -P FORWARD DROP
更多精彩
赞助商链接