V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
piero66
V2EX  ›  问与答

centos iptable

  •  
  •   piero66 · 2015-09-17 23:12:08 +08:00 · 2083 次点击
    这是一个创建于 3351 天前的主题,其中的信息可能已经有所发展或是发生改变。

    centos iptable 有没有办法限制一个端口最多只能有 10 个 ip 访问,第 11 个 ip 会被直接 drop 。

    看到 iptable 有 connlimit 模块,但这个是限制连接数的,好像实现不了我上面的功能。因为我对每个 ip 的连接数没有要求。

    5 条回复    2015-09-20 02:42:31 +08:00
    ShadowStar
        1
    ShadowStar  
       2015-09-18 01:41:57 +08:00 via iPad
    好像没有现成的模块,你可以自己写一个,很简单的。
    adrianzhang
        2
    adrianzhang  
       2015-09-18 02:20:15 +08:00
    必须自己写。很久以前曾经写过一个小脚本,谁扫描我的 vps 的 ssh 端口就把谁的 ip 用 iptables 干掉。实现起来比较简单的。你这个需求,思路可以是:把前 10 个加入到允许,然后 deny all 就好了。
    piero66
        3
    piero66  
    OP
       2015-09-19 20:55:45 +08:00
    @ShadowStar 望提供思路。。。
    ShadowStar
        4
    ShadowStar  
       2015-09-20 02:39:01 +08:00
    @piero66 基本结构可以参照 recent 的模式,输入几个参数: src/dst , ttl , num 。
    然后对于进入此条规则的报文取 dst/src ,查找 IP 表,如果找到刷新 TTL ,否则添加并刷新 TTL ,返回 true ;如果添加失败(超过限定 num 值),返回 false 。
    TTL 到期删除对应表项。
    IP 表可以采用链表、 hash 表,甚至数组,取决于限定的 IP 数量大小。
    ShadowStar
        5
    ShadowStar  
       2015-09-20 02:42:31 +08:00
    @piero66 如果需要支持多 IP 的限定(例如在转发的时候),只需要把 IP 表改为二维的即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5452 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:52 · PVG 14:52 · LAX 22:52 · JFK 01:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.