按月归档:2012年四月


iptables 应用初探(nat+三层访问控制)

iptables是一个Linux下优秀的nat+防火墙工具,我使用该工具以较低配置的传统pc配置了一个灵活强劲的防火墙+nat系统,小有心得,看了网上也有很多这方面的文章,但是似乎要么说的比较少,要么就是比较偏,内容不全,容易误导,我研究了一段时间的iptables同时也用了很久,有点滴经验,写来供大家参考,同时也备日后自己翻阅。 首先要说明的是,iptables操作的是2.4以上内核的netfilter.所以需要linux的内核在2.4以上。其功能与安全性远远比其前辈 ipfwadm,ipchains强大,iptables大致是工作在OSI七层的二、三、四层,其前辈ipchains不能单独实现对tcp/udp port以及对mac地址的的定义与操作,所以我想ipchains应该是仅仅工作在三层上的。 我们先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者叫分组、packet,我个人习惯叫包)在到达linux的网络接口的时候(网卡)如何处理这个包,然后再介绍一下如何用iptables改变或者说控制对这个数据包进行操作。 netfilter内部分为三个表,分别是 filter,nat,mangle,每个表又有不同的操作链(Chains)。 filter表: 在filter(过滤)表中,也就是他的防火墙功能的这个表,定义了三个 Chain。分别是INPUT,FORWARD,OUTPUT。也就是对包的入、转发、出进行定义的三个过滤链。对于这个filter表的操作和控制也是我们实现防火墙功能的一个重要手段。 nat表: 在nat(Network Address Translation、网络地址翻译)表中,也就是我们用以实现地址转换和端口转发功能的这个表,定义了PREROUTING, POSTROUTING,OUTPUT三个链,下面我们会对这三个链作详细的说明。 mangle表: mangle表则是一个自定义表,里面包括上面的filter以及nat表中的各种chains,它可以让我们进行一些自定义的操作,同时这个mangle表中的chains在netfilter对包的处理流程中处在一个比较优先的位置,下面有一张图清晰的描绘了netfilter对包的处理流程,一般情况下,我们用不到这个mangle表,在这里我们就不做介绍了。

ROS 5.X PPPOE Server账号到期web提醒

实现目得:当用户到期后不自动停止用户上网帐号而是把用户跳转到一个指定的网页提醒用户续费。 实现原理:通过判断ROS中的 comment 备注把用户pppoe帐号的profiles指定到一个特定的地址池再通过NAT把特定地址池指向到一个IP地址上。 PPPOE用户comment 格式如下: 第一步:设置PPPOE的地址池 设置2个,一个是正常的,另外一个就是已经到期停止的 比如 正常的设置 10.1.11-10.1.1.254 名字叫做 pool 到期的地址池叫 pool1 地址为 172.19.1.10-172.19.1.250 加入针对以上172网段的一个NAT 强制跳转到 172.19.1.2 的80端口 /ip firewall nat add chain=dstnat src-address=172.19.1.0/24 src-address-list=!notify protocol=tcp action=dst-nat to-addresses=172.19.1.2 第二步:增加一个PPP Profiles