LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3809|回复: 5

讨论--ipset实现动态更新iptables规则

[复制链接]
发表于 2007-3-29 11:26:20 | 显示全部楼层 |阅读模式
在google/baidu查找了很久,发现关于ipset的资料好少。希望:


使用过ipset的朋友能共享一下经验。

没有使用过ipset的朋友看下ipset的手册:

http://ipset.netfilter.org/ipset.man.html
发表于 2007-4-2 02:11:56 | 显示全部楼层
同态删除,是不是跟整个表都清除,再载入的方法一样啊?或是记录每一条规则的编号,然后删除指定的规则,再增加回去?究竟是哪一种啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-2 08:58:15 | 显示全部楼层
你说得是什么同态删除?iptables?
回复 支持 反对

使用道具 举报

发表于 2007-5-12 20:46:48 | 显示全部楼层
这个东东对使用iptables有什么帮忙呢?
回复 支持 反对

使用道具 举报

发表于 2007-6-7 07:50:50 | 显示全部楼层
似乎在防火墙ip地址列表很多时可以提高性能。这种情况下全部用iptables的话内核处理每个包都要走过所有的规则,而ipset通过在内核建立对应这些地址列表的高效数据结构,用一条或几条iptables规则即可完成同样的功能。

例子:

# ipmap set storing the IP addresses of two machines
# 建立一个名为servers的IP列表,包含两个地址
ipset -N servers ipmap --network 192.168.0.0/16
ipset -A servers 192.168.0.1
ipset -A servers 192.168.0.2
# portmap set storing the allowed ports for 192.168.0.2
# 建立一个名为ports的端口列表,包含3个端口
ipset -N ports portmap --from 1 --to 1024
ipset -A ports 21
ipset -A ports 22
ipset -A ports 25
# Binding, which attaches ports to 192.168.0.2
# 将servers集合的192.168.0.2和ports集合关联
ipset -B servers 192.168.0.2 -b ports

# iptables rule using the set match
...
# 只允许访问0.1(所有端口),只允许访问0.2的三个端口
iptables -A FORWARD -m set --set servers dst,dst -j ACCEPT
iptables -A FORWARD -j DROP

这个dst,dst比较难懂:似乎是可以有不同的src/dst组合,最多六级,然后根据所给集合的关联去搜索最多六层。不过一般也用不到这么复杂。

显然,当你内网有上百台机器,你需要逐一按ip/mac去控制哪些可以上网,哪些不行时,或者更加复杂的策略时,ipset就有用了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-25 13:49:35 | 显示全部楼层
真的太谢谢的讲解了,要好好研究一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表