免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 39489 | 回复: 10
打印 上一主题 下一主题

[网络管理] 什么是ipset,以及如何简单使用ipset, [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-22 20:22 |只看该作者 |倒序浏览
前一段时间一直在折磨着如何优化我写的防火墙,因为iptables的规则实在太多,无意中发现ipset,感觉像遇到了大救星,后来在网上google了两天发现这个方面的资料少的极其的可怜,我到现在都很想问一句,这到底是为什么,今天在这边贴点使用ipset的小结,希望能给大家提供点方便,同时也希望大家平时也发扬一点精神,好了,废话不多说了,呵呵!
1.ipset 介绍(本人英语不是很好,所以有可能翻译的不是很准确):
  在iptables中,如果我们去匹配多个IP地址的话就会写入多条iptables的规则(这些IP都是无规律性的),当如果需要匹配几百甚至上千个IP地址的话,那么性能就会受到严重的影响,ipset在这个方面做了很大的改善,其最主要是的在结构和规则的查找上面做了很大的改善,当出现上面的情况的时候,ipset对性能就始终稳定在一个相对值上。根据提供的测试结果表明,当规则在300-1500之间的时候其对性能的影响基本是水平线。所以当你的防火墙规则过多的时候不妨试试看。

2. 安装
这个就没什么可以说的了,到http://ipset.netfilter.org/上面把程序下载下来,里面还有一个用户手册可以看看,别的就什么都没有了。

3. 下面介绍如何使用:
  (1). 首先ipset里面好多的命令是和iptables一样的,比如-F ,-X, -A, -nL等等,这样大家直接就可以试一试了。
   (2). 用户如果什么都没有添加的话,这个时候ipset -nL 就会发现都是空的,什么都没有
   (3)  这个时候我们试着添加一条自定义链,注意ipset没有默认的链的,要使用的话就必须自己先创建一个自定义链,如:
       ipset -N test_policy ipmap --network 192.168.100.1/255.255.255.0
           test_policy代表的是自定义链;ipmap 代表的是自定义链的类型; --network 192.168.100.1/255.255.255.0代表的是option,代表一个网段,还有别的一些
       option,在这边就不一一介绍了,手册里面都有。自定义链的创建都必须要满足上面的格式。
  (4)  自定义链创建好了后就需要在上面添加一些IP了,如:
       ipset -A  test_policy  192.168.100.1
          ipset -A  test_policy  192.168.100.2
          ipset -A  test_policy  192.168.100.3
          ipset -A  test_policy  192.168.100.4

          这个时候你ipset -nL就会看到:
       localhost:/usr/bin# ipset -nL
          Name: servers_1
          Type: ipmap
          References: 1
          Default binding:
          Header: from: 192.168.100.0 to: 192.168.100.255
          Members:
          192.168.100.1
          192.168.100.2
         192.168.100.3          192.168.100.4         
          Bindings:

   (5) 好,到这个时候我们ipset的自定义链就搞好了,这个时候要把他加到我们的iptables链里面,比如说加到FORWARD链里面:
      iptables -A FORWARD -m set --set test_policy src -j DROP
         当然也可以象我这样做:
      iptabs -N NEW_POLLICY
      iptables -A FORWARD -m set --set test_policy src -j NEW_POLLICY
         这里面需要说明的是src,也就是只是匹配的源地址,如果你需要匹配目的地址的话那么就写成dst

   (6)我感觉到重点:
     1. 大家使用macipmap类型的时候,如果只需要匹配MAC的时候一定要使用参数:--matchunset ,如:
        ipset -N servers_mac_macipmap --network $LAN_IP/$LAN_NETMASK --matchunset
            其实就是这句:
        ipset -N servers_mac_macipmap --network ip/mask --matchunset
            我发现手册在这个方面写的不是很清楚,所以在这边特意的提醒一下。
        另外还有好多其他的settype我在这边就不一一的介绍了
     2.  在编译的时候注意大小字节序,我遇到这个问题的,呵呵,搞了半天,如果你设定的IP,看到的不是你想要的,估计就是这个问题了,嘿嘿!
        比如你ipset -A  test_policy  192.168.100.1, 当ipset -nL 去看设定结果的时候看到的却是:192.168.100.51。
        至于怎么改,目前我程序不在手边,有机会我补上。
     3. ipset功能在做ip/mac绑定功能和防ARP攻击,是一个好的选择,建议可以试一试的。
     
好象就这么多了

[ 本帖最后由 heizi_liu 于 2008-4-23 11:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-04-23 08:54 |只看该作者
感谢分享。。。但是有个地方没看明白

我感觉到重点:
     1. 大家使用macipmap类型的时候,如果只需要匹配MAC的时候一定要使用参数:--matchunset ,如:
        ipset -N servers_mac_macipmap --network $LAN_IP/$LAN_NETMASK --matchunset

这里说明的时候是匹配MAC,但是在例子里,似乎用的是 ip/掩码 这样的形式啊???

论坛徽章:
0
3 [报告]
发表于 2008-04-23 10:39 |只看该作者
2.  在编译的时候注意大小字节序,我遇到这个问题的,呵呵,搞了半天,如果你设定的IP,看到的不是你想要的,估计就是这个问题了,嘿嘿!


楼主能否把这个FAQ详细的贴出来一下!!  这个帖子应该要加精啊!!

论坛徽章:
0
4 [报告]
发表于 2008-04-23 10:49 |只看该作者
回答2楼的问题:
ipset -N servers_mac_macipmap --network $LAN_IP/$LAN_NETMASK --matchunset
这个是我程序里面这样写的,$LAN_IP/$LAN_NETMASK 代表的就是: ip/mask, 呵呵,所以你说的没有错,
另外3楼, 这边我就不讨论大小字节序的问题了,呵呵。

论坛徽章:
0
5 [报告]
发表于 2008-04-23 16:51 |只看该作者
顶一下,加油。........

论坛徽章:
0
6 [报告]
发表于 2008-04-23 17:28 |只看该作者
谢谢,大哥见到你很高兴

论坛徽章:
0
7 [报告]
发表于 2008-04-23 20:08 |只看该作者
原帖由 heizi_liu 于 2008-4-22 20:22 发表
前一段时间一直在折磨着如何优化我写的防火墙,因为iptables的规则实在太多,无意中发现ipset,感觉像遇到了大救星,后来在网上google了两天发现这个方面的资料少的极其的可怜,我到现在都很想问一句,这到底是 ...


支持,ipsec的资料很少,我起先也是为了解决这类问题,不得不自己写了一个IP池位图匹备模块……学习了

论坛徽章:
0
8 [报告]
发表于 2009-08-24 12:14 |只看该作者
正要找,就看见了,
好!

论坛徽章:
0
9 [报告]
发表于 2009-08-24 13:05 |只看该作者
我的iptables版本太低了,1.2的支持吗?

论坛徽章:
0
10 [报告]
发表于 2010-04-01 22:03 |只看该作者
我的需求是这样的:
现在有三条snat规则
iptables -t nat -A POSTROUTING -s 172.19.1.10 -j SANT --to 1.0.0.1
iptables -t nat -A POSTROUTING -s 172.19.1.10 -j SANT --to 21.19.23.11
iptables -t nat -A POSTROUTING -s 172.19.1.10 -j SANT --to 41.2.89.78
可不可以用ipset实现把1.0.0.1和21.19.23.11还有41.2.89.78合并到一个规则中.然后这三个ip轮询来做snat

ipset好像只有-m set --set tables src/dst这一种用法啊,
没办法用到--to中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP